Персональные страницы Доп. раздел |
Коновалов Дмитрий АлександровичUSB-HID термометрСпецификация HID позволяет обойтись без написания драйвера для любой версии Windows. Появление AVR309 показало, что во многих случаях для периферийных USB-устройств необязательно использовать специализированные чипы - микроконтроллер семейства AVR способен программно выполнять обмен данными по интерфейсу USB. Главная проблема, с которой сталкивается разработчик - необходимость создания драйвера устройства для операционной системы Windows. В комплекте AVR309 есть драйвер. Но он работоспособен только на версиях Windows не выше Windows XP. Однако, среди устройств USB есть класс устройств, использующих стандартные драйверы. Это устройства, работающие по спецификации HID (Human Interface Device). К ним относятся клавиатуры, мышки и джойстики. Первой разработкой, использующей спецификацию HID на базе AVR309 был джойстик MJoy. Радиолюбитель Денис Нечитайлов (UU9JDR) на основе MJoy разработал Компьютерный USB-термометр для цифровых видов связи, APRS и EchoLink. Этот проект был портирован в среду Algorithm Builder (АВ). При портировании были внесены некоторые изменения:
Рис. 1 Принципиальная схема USB-HID термометра с LCD.
Рис. 2 USB-HID термометр с LCD в работе.
При подключении конструкции к порту USB, операционная система обнаруживает новое устройство и устанавливает стандартный драйвер "USB устройство ввода". После этого от USB термометра можно получать данные с помощью HID-библиотек Windows DDK. Денис Нечитайлов выложил исходные тексты и откомпилированную версию такой программы.
Рис. 3 Окно программы usbtherm.exe в Windows7.
Приложение: USB-Therm-LCD-AB.zip
Содержимое архива:
Примечание к прошивке: Опрос датчика температуры происходит в процедуре "ProcDS18b20Request", вызов которой происходит по инициативе компьютера каждые 25 мс. Период опроса определяется спецификацией USB-HID и увеличен быть не может. Для уменьшения скорости опроса датчика в прошивке организован счётчик вызова процедуры "ProcDS18b20Request". Константа DS18b20Skip определяет количество вызовов процедуры "ProcDS18b20Request", после которого происходит реальный опрос датчика. Значение по-умолчанию константы DS18b20Skip = 100, что соответсвует периоду опроса ~ 3 сек. | ||||||||