реклама на сайте
подробности

 
 
> Atmega328P и DS18B20 в фоновом режиме
iiv
сообщение Nov 28 2011, 03:53
Сообщение #1


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Всем привет,

имеется атмега328п, хочется к ней прикрутить несколько, от одного до четырех, датчиков температуры DS18B20 по 1-wire. Незадачка в том, что эта атмега должна в реальном времени выполнять кучу другой работы, которую нельзя прерывать 100мкс-750мс ожиданиями протокола 1-wire.

В то же время, как я понимаю из прочтения исходников протокола общения с этими датчиками, большую часть времени микроконтроллер должен ждать.

Возникает идея, что этот протокол может быть реализован на прерываниях таймера и int0 (я могу повесить 1-wire на эту ножку) и практически не занимать время процессора, но программировать это может быть довольно не тривиально.

Скажите, пожалуйста, может кто-то уже такое запрограммировал, и такие исходники существуют в сети? Если да, тыкните, пожалуйста, пальцем где скачать. Если нет, может я в чем-то ошибаюсь и это не так просто, как мне кажется?

Знаю, что есть еще решение - поставить на плату тиньку или еще одну ардуину, которая будет 100% занята опросами этой температуры, но очень не хотелось бы это делать.

Спасибо

ИИВ
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
pavel-pervomaysk
сообщение Dec 13 2011, 17:36
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 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 //

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 18:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016