Эмулятор термометра может быть полезен при проектировании и наладке устройств, использующих в качестве датчика температуры - DS18B20, например контроллеров котла центрального отопления, стиральной машины, кондиционера или холодильника. Устройство также является отличным эталонным прибором, если мы планируем создать датчик с интерфейсом 1-Wire. Однако помните, что коммерческое использование устройства может повлечь за собой нарушение патентных прав Maxim-Dallas.
Рисунок 1.
Принципиальная схема эмулятора представлена на рисунке 1. Как видно на первый взгляд, это одно из тех устройств, «сила» которых заключается в программном обеспечении. Создать эмулятор устройства, подключенного по 1-Wire, непросто. Временные критерии протокола связи весьма ограничены. Во время анализа сигнала сброса и формирования сигнала присутствия обработка прерываний практически не приостанавливается (рис. 2). Прерывание выполнения основной программы во время ожидания сброса вызывается ожиданием заднего фронта импульса сброса. Процедуру можно улучшить и после обнаружения низкого уровня длительностью более 460 мс можно включить прерывание по нарастающему фронту на входе INT. В этой версии программы я решил этого не делать, потому что основная программа и так почти ничего не делает. При генерации «нуля» прерывания также не приостанавливаются (рисунок 3).
Рисунок 2.
Рисунок 3.
Схема сборки эмулятора представлена на рисунке 4. Эмулятор не требует настройки. При загрузке программы в микроконтроллер биты конфигурации должны быть установлены соответствующим образом - рисунок 5. Если вы хотите подключить несколько эмуляторов к одной шине, не забудьте скомпилировать код с разным идентификационным номером для каждого из них. Поставив перемычку на контакты 4-6 разъема J2, эмулируется паразитное питание термометра. Во время чтения бита IRQ линия подвешивается примерно на 6 мс и с учетом того, что вход и выход на прерывание service составляет около 5 мс, замена _delay_us(15-DELAYDAMPLEBIT), где DELAYDAMPLEBIT=8 (это время от входа в IRQ до перехода к функции чтения бита), излишне усложняет код и не дает никакого измеримого выигрыша во времени.
Рисунок 4.
Рисунок 5.
Файлы к статье "Эмулятор датчика DS18B20" | |
Описание:
Проект AVRStudio4 |
|
Размер файла: 46.56 KB Количество загрузок: 106 | Скачать |