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

 
 
> Реализация 1-Wire на ассемблере
zelvans
сообщение Apr 30 2010, 03:19
Сообщение #1





Группа: Участник
Сообщений: 7
Регистрация: 29-04-10
Пользователь №: 56 980



Предлагаю свой вариант реализации опроса DS18s20 с помощью Atmega8.
Сделано на ассемблере в AVR Studio. Кварц 14.745 . Для синхронизации
1-Wire использую Timer2, если использовать другой кварц используемые
значения надо пересчитывать. задействованы две ножки PIND,3 (кнопка)
и PINC,4(шина 1-Wire). PINC,4 подтянута к питанию резистором 5к1 и
подключена к DS18s20. Если PIND,3 занулить и подать питание на схему,
то в EEPROM начиная с адрес 0x0000 можно увидеть адрес DS18s20
(7 байтов) плюс байт CRC. Записав эти 8 байтов в адрес 0x0010,
подав логическую 1 на PIND,3, после в EEPROM начиная с адреса
0x0070 можно увидеть содержимое Scratchpad-а (8 байтов+1 байт CRC
и ASCII десятки и единицы температуры)
Есть некоторая диагностика: в ячейке памяти ONE_WIRE_STAT
код завершения операции на шине 1Wire успешно 0xf0
0xe1 - превышено время ожидания импульса присутствия
0xe2 - импульс присутствия пришел слишком рано
0xe3 - импульс присутствия длиннее требуемого
0xe4 - импульс присутствия короче требуемого
0xe5 - при чтении нуля слишком долго удерживалась в нуле шина
0xe6 - не совпала CRC
На столе работают 4 датчика их адреса в EEPROM
0x0010, 0x0020, 0x0030, 0x0040 ,буду измерять температуру в 4
точках помещения. Знак температуры не анализирую. Есть косяк,
при включении выдается 85, так как у меня такого быть не может,
то значение 85(десятичное) игнорируется.

Прикрепленный файл  JQ015_1wire_Termometr.rar ( 25.72 килобайт ) Кол-во скачиваний: 229
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 15th June 2025 - 23:07
Рейтинг@Mail.ru


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