|
Atmega328P и DS18B20 в фоновом режиме |
|
|
|
Nov 28 2011, 03:53
|
вопрошающий
    
Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436

|
Всем привет,
имеется атмега328п, хочется к ней прикрутить несколько, от одного до четырех, датчиков температуры DS18B20 по 1-wire. Незадачка в том, что эта атмега должна в реальном времени выполнять кучу другой работы, которую нельзя прерывать 100мкс-750мс ожиданиями протокола 1-wire.
В то же время, как я понимаю из прочтения исходников протокола общения с этими датчиками, большую часть времени микроконтроллер должен ждать.
Возникает идея, что этот протокол может быть реализован на прерываниях таймера и int0 (я могу повесить 1-wire на эту ножку) и практически не занимать время процессора, но программировать это может быть довольно не тривиально.
Скажите, пожалуйста, может кто-то уже такое запрограммировал, и такие исходники существуют в сети? Если да, тыкните, пожалуйста, пальцем где скачать. Если нет, может я в чем-то ошибаюсь и это не так просто, как мне кажется?
Знаю, что есть еще решение - поставить на плату тиньку или еще одну ардуину, которая будет 100% занята опросами этой температуры, но очень не хотелось бы это делать.
Спасибо
ИИВ
|
|
|
|
|
 |
Ответов
|
Dec 13 2011, 17:36
|

Местный
  
Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716

|
Так будет понятнее CODE 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 //
|
|
|
|
Сообщений в этой теме
iiv Atmega328P и DS18B20 в фоновом режиме Nov 28 2011, 03:53 birden Вариантов реализации 1-Wire довольно много - выбир... Nov 28 2011, 04:18 ARV 100 мкс - 750 мкс ждать никогда не нужно с запреще... Nov 28 2011, 04:19 iiv Цитата(ARV @ Nov 28 2011, 09:19) 100 мкс ... Nov 28 2011, 04:36  Леонид Иванович Цитата(iiv @ Nov 28 2011, 07:36) или все-... Nov 28 2011, 07:48   iiv Цитата(Леонид Иванович @ Nov 28 2011, 13... Nov 28 2011, 10:21  e-serg Цитата(iiv @ Nov 28 2011, 13:36) на сколь... Nov 28 2011, 08:01 Палыч Цитата(iiv @ Nov 28 2011, 07:53) Возникае... Nov 28 2011, 04:25 ILYAUL Цитата(Палыч @ Nov 28 2011, 08:25) Надавн... Nov 28 2011, 04:37  Палыч Цитата(ILYAUL @ Nov 28 2011, 08:37) Изуми... Nov 28 2011, 12:13   ILYAUL Цитата(Палыч @ Nov 28 2011, 16:13) Для пр... Nov 28 2011, 16:37 Павлик По одному проводу 4 датчика часто читать нельзя, п... Nov 29 2011, 18:18 ARV Цитата(Павлик @ Nov 29 2011, 22:18) По од... Nov 29 2011, 19:03  iiv Цитата(ARV @ Nov 30 2011, 01:03) не на ка... Nov 29 2011, 22:25   ILYAUL Цитата(iiv @ Nov 30 2011, 02:25) ага, я у... Nov 30 2011, 05:56    ARV Цитата(ILYAUL @ Nov 30 2011, 09:56) Почем... Nov 30 2011, 08:57 Павлик На 8 портов и еще с питанием на датчик все будет б... Nov 30 2011, 18:26 Shaeto 1-wire вообще интересные устройства у них, особенн... Dec 1 2011, 20:30 xemul Цитата(Павлик @ Nov 30 2011, 22:26) а при... Dec 1 2011, 21:24 Br.Misha http://kibermaster.net/rabota-s-shinoy-1-w...-ds18... Dec 4 2011, 01:01 usav А у кого опыт паразитного питания? Какие основные ... Dec 8 2011, 19:46 Павлик Нормально все работает на паразитном питании -50 .... Dec 12 2011, 06:10 usav "Время заряда давать не менее 800-900мс... Dec 13 2011, 17:06 usav Понятно, спасибо, Павлик! Dec 13 2011, 22:52
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|