Перейти к содержанию
    

Atmega328P и DS18B20 в фоновом режиме

Почему параллель? До начала чтения данных с датчиков , Вы работаете со всеми сразу игнорируя ID микросхем, а вот чтение для каждого своё.
я делал небольшую модификацию библиотеки 1-wire и получил возможность работать на самом деле в параллель с 8-ю датчиками (а при высокой тактовой частоте и с бОльшим количеством), подключеным к 8 линиям одного порта AVR. при известном желании можно на самом деле одновременно получить результаты с 8 штук :) правда зачем - не понятно :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На 8 портов и еще с питанием на датчик все будет быстро, а при паразитном питании не уложитесь в одну секунду на 2 датчика ну никак.

Ресет, ответ, проверка, посылка серийника критичны ко времени, что-то обрЭзать там не получится ...

Изменено пользователем Павлик

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1-wire вообще интересные устройства у них, особенно dac/adc, ключи и прочее. я предпочел к атмеге через I2C подключить драйвер DS2482-800 (или -100), недорого и удобно ну и данные по прерыванию валятся.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а при паразитном питании не уложитесь в одну секунду на 2 датчика ну никак.

При девяти битах на выходе - в секунду 4 паразита с запасом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А у кого опыт паразитного питания? Какие основные моменты?

Вот, думаю, что лучше уменьшить разрядность? Или при единственном

датчике на линии это не имеет значения?

Кто-то утверждал, что на паразитном питании получает лучшие результаты

по длине кабеля, чем при постоянном питании. Как это может быть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нормально все работает на паразитном питании -50 ... + 127. Время заряда давать не менее 800-900мс, если длинна провода большая, подтяжку уменьшить нужно.

После чтения дать 0, чтоб не было разогрева датчика.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Время заряда давать не менее 800-900мс"

----------------------------------------------------

Вы имеете в виду выдержку в "1 = +5В" после команды СТАРТ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так будет понятнее

 

ds_start:            //  
andi    flags,0xFC   // чистим флаги
rcall   ds_reset     //  сброс 
cli                  //  выключаем прерывания
ldi 	tmp, 0x55    // соответствие ROM 
rcall 	ds_write     //
push    zl           // сохраняем адрес серийника
push    zh           // 
rcall   send_serial  //  посылаем 8 байт 1 код устройства 6 серийный номер 1 црц
pop     zh           //  восстанавливаем адрес серийника
pop     zl           //  
ldi 	tmp, 0x44 	 // Посылаем команду конвертировать температуру  
rcall 	ds_write     // 
sbi     dal_port,ds_p
sbi     dal_ddr,ds_p
sei                  //  
cbi     portb,load   // Load -> 0
rcall   wait_075s    //  даем еденицу для конвертирования температуры минимум 800-900 мс ( о чем я говорил )
rcall   ds_reset     // 
cli                  // 
ldi 	tmp, 0x55    // соответствие ROM 
rcall 	ds_write     //
rcall   send_serial  //  
ldi 	tmp, 0xBE 	 // Посылаем команду что сейчас будем читать датчик  
rcall 	ds_write     // 
sei
ldi     xl,65        // Ждем 50 мкс
rcall   wait         //     
cli
rcall 	ds_read		 //  читаем 12 бит
cbi     dal_port,ds_p
sbi     dal_ddr,ds_p // RESET Dallas   ставим 0 чтоб избежать саморазогрев датчика
rcall   ds_bcd       //  
ds_ok:               //  
sei                  //    		
ret                  // Выход из подпрограммы

send_serial:         // Посылаем 8 байт серийного номера в датчик DS18B20 
                    // Адрес строки предварительно загружаем в Z
ldi    loop2,8       // 
send_c:              // 
lpm    tmp,Z+        // 
rcall  ds_write      // 
dec    loop2         //
brne   send_c        // 
ret                  // 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Понятно, спасибо, Павлик!

Изменено пользователем usav

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...