Обсуждаем контроллеры компании Atmel.
Ответить

Re: Написал свою Onewire для Codevision

Пн окт 30, 2023 14:54:39

Проект без исходников это шляпа.

Re: Написал свою Onewire для Codevision

Пн окт 30, 2023 14:58:51

только очень много людей предпочли сделать мою шляпу.
а смысл тебе показывать -ты все равно там в тексте на ассемблере ничего не поймешь.

Re: Написал свою Onewire для Codevision

Пн окт 30, 2023 17:29:56

Проект без исходников это шляпа.

Проект без исходников -это проект!
Дана схема, прошивка. Бери, делай.
Не понимаю, зачем исходник?
Хочешь по другому сделать? Пиши исходник, в чём проблема? Что за маниакальное желание получить чужой текст.
Микроволновку тоже не покупаешь, если исходник производитель не вложил в коробку?

Re: Написал свою Onewire для Codevision

Пн окт 30, 2023 17:56:26

ну, иногда, если сам не соображаешь, чужой текст может помочь понять, как нужно делать.
но не всегда и не всем ...

Re: Написал свою Onewire для Codevision

Пн окт 30, 2023 19:17:38

а смысл тебе показывать -ты все равно там в тексте на ассемблере ничего не поймешь.

Ну воображаемый ассемблер твой точно не пойму. Ибо его нет. Я с универа подзабыл конечно асм. Но что может быть сложного в AVR асме?
Я смотрю импотенция у тебя видимо пришла, но мудрость нет.

Re: Написал свою Onewire для Codevision

Пн окт 30, 2023 20:15:22

тебе с твоим хамством приход мудрости не грозит вообще.

Re: Написал свою Onewire для Codevision

Пн окт 30, 2023 21:23:52

Так ты первый начал.
Я выложил проект. Ты начал его критиковать даже не посмотрев. Обвинил меня в высокомерии. Усомнится в моих умственных способностях. Я грешным делом подумал, что ты и правда велик. А потом посмотрел что ты там наваял ))))) На воображаемом ассемблере. Считая такты в прерывании ))))))

Re: Написал свою Onewire для Codevision

Пн окт 30, 2023 21:46:42

Зато я посмотрел. Зачем для этого говна требовалось идти в вуз, непонятно. Выкладывать такой "проект" на обозрение всем подобно худшему варианту эксгибиционизма. Любая твоя "критика" не имеет значения, ибо ты не программист.

Re: Написал свою Onewire для Codevision

Пн окт 30, 2023 23:51:16

Я то не программист базара нет. Как и ты очевидно.
Приведи пример хорошей библиотеки по твоему, я чот не нашел. Именно под AVR

Re: Написал свою Onewire для Codevision

Вс дек 17, 2023 04:07:14

Подправил немного тайминги (не работало с китайскими клонами), исправил пару косяков, вынес весь код в отдельный файл. Несколько тысяч измерений - ни одного сбоя. Работает корректно. Проверил, без проблем работает на 1МГц тактовой, родная библиотека начинал глючить на 4МГц
Вложения
DS18B20.rar
(53.07 KiB) Скачиваний: 22

Re: Написал свою Onewire для Codevision

Вс дек 17, 2023 13:47:27

Код:
unsigned int read_adc(unsigned char adc_input)
{
  ADMUX=adc_input | ADC_VREF_TYPE;
  delay_us(10);
  ADCSRA|=(1<<ADSC);
  while ((ADCSRA & (1<<ADIF))==0);
  ADCSRA|=(1<<ADIF);
  return ADCW;
}


где:

//ADMUX
//1... .... REFS1 - опорное напряжение - 0
//.1.. .... REFS0 - опорное напряжение - 1 - AVCC
//..1. .... ADLAR - Выравнивание результата
//...1 .... -
//.... 1... MUX3 - номер канала
//.... .1.. MUX2 - номер канала
//.... ..1. MUX1 - номер канала
//.... ...1 MUX0 - номер канала - ADC0...ADC7 (0000=ADC0)
//REFS1=0 REFS0=0 - ИОН=AREF
//REFS1=0 REFS0=1 - ИОН=AVCC
//REFS1=1 REFS0=0 - не используется (зарезервировано)
//REFS1=1 REFS0=1 - ИОН=2.56V (встроенный ИОН 2.56V)


//ADCSRA
//1... .... ADEN - 1- вкл ADC. (0-ADC не потребляет мощности)
//.1.. .... ADSC - 1- Старт. При завершении преобразования сбрасывается аппаратно.
//..1. .... ADFR - 1- режим Непрерывного Преобразования.
//...1 .... ADIF - 1- флаг завершения преобразования
// -сброс программно.
// -для прерывания очищается аппаратно.
//.... 1... ADIE - 1- Разрешение прерывания
//.... .1.. ADPS2 - предделитель
//.... ..1. ADPS1 - предделитель
//.... ...1 ADPS0 - предделитель

и т.д.
:roll:

из описания регистров видно, что флаг ADIF (флаг завершения преобразования) опрашивать не обязательно...
вместо этого можно опрашивать ADSC (Старт бит). При завершении преобразования он сбрасывается аппаратно.

и возвращать значение ADCW (return ADCW) в программе тоже не обязательно...

значит, можно уменьшить код на пару строчек... ))

Код:
////////////////////////////////// АЦП: -0,000.070c
void adc(unsigned char adc_input) 
{
ADMUX = 0b01000000 | adc_input;  // опорное AVCC // канал ADC0...ADC7 
delay_us(10);                     
ADCSRA|=0b01000000;               
while (ADCSRA & 0b01000000);     
}


вот так уже лучше))
:tea:

Re: Написал свою Onewire для Codevision

Вс дек 17, 2023 16:28:07

а какое отношение имеет ADC к теме про 1-wire?

Re: Написал свою Onewire для Codevision

Вс дек 17, 2023 16:41:36

х.з. ))
в исходниках ТС есть ADC.
видимо ТС с помощью ADC измеряет сигнал 1-wire...
я до конца не разобрался... там много букав))
:))

Re: Написал свою Onewire для Codevision

Вс дек 17, 2023 22:27:26

Все одноваре вынесено в отдельный файл. Там пример готового проекта термометра двухканального. Там подключена клавиатура резистивная, она опрашивается через АЦП. Функция опроса АЦП писана не мной, она идет из генератора кода CV. Мое там только вычисления скользящего среднего по 4м отсчетам.

Re: Написал свою Onewire для Codevision

Пн дек 18, 2023 04:37:51

Код:
void adc(unsigned char adc_input) 
{
ADMUX = 0b01000000 | adc_input;  // опорное AVCC // канал ADC0...ADC7 
delay_us(10);                     
ADCSRA|=0b01000000;               
while (ADCSRA & 0b01000000);     
}


вот так уже лучше))
:tea:

Да просто шикарно. busy waiting - наше всё :facepalm:
Ответить