AVR-USB-MEGA16: hardctrl - управляемый сторожевой таймер (watchdog) для компьютера Печать
Добавил(а) microsin   

Устройство hardctrl представляет из-себя USB HID device (либо USB CDC device, формирующее на компьютере виртуальный COM-порт), предназначенное для автоматической перезагрузки компьютера и/или сетевого оборудования при подаче питания или в случае зависания компьютера.

Управляющие сигналы формируются на двух выходах - OUT1 (индицирует зеленый светодиод, порт P9 макетной платы AVR-USB-MEGA16, подключенный к PB1 ATmega16, ножка 41 корпуса TQFP44) и OUT2 (индицирует желтый светодиод, порт P10 макетной платы AVR-USB-MEGA16, подключенный к PB2 ATmega16, ножка 42 корпуса TQFP44). Выходы управляют контактами реле, которые подключаются к необходимым цепям сброса или управления питанием оборудования.

Необходимость подачи специального сброса возникает в случае неожиданного восстановления питающего напряжения - чтобы сформировать сброс или перезагрузку сетевого оборудования (например, маршрутизатор или модем) или компьютера. Вторая необходимость выдачи устройством hardctrl сигналов OUT1 и OUT2 - зависание компьютера, в котором подсоединен hardctrl. В этом случае компьютер можно сбросить, либо выключить и включить у него питание - управляющие сигналы для этой цели автоматически по заданной программе вырабатываются на OUT1 и OUT2.

Факт зависания компьютера и необходимость его перезагрузки определяется по срабатыванию сторожевого таймера (далее Watchdog, или WDT). Если на hardctrl запущен WDT (это делается специальной командой), то компьютер должен его периодически сбрасывать, подтверждая тем самым свою работоспособность. Если компьютер завис, то WDT уже никто не сбросит, и устройство hardctrl сигналами OUT1 и OUT2 отправит компьютер на перезагруз или выключит/включит у него питание.

Устройство hardctrl управляется через канал связи с компьютером USB HID (для чего имеется специальная консольная программа), либо через виртуальный COM-порт, образующийся через класс USB CDC (в этом случае специальная программа не нужна, можно использовать любую программу терминала - hyperterminal, terraterm, putty, SecureCRT и др.). Через канал связи с hardctrl можно запустить, сбросить, остановить WDT, настроить время WDT, настроить временнЫе интервалы T1, T2, T3 и T4 для каналов OUT1 и OUT2 (для каждого канала свои), и получить информацию по текущему состоянию hardctrl (какие значения интервалов времени T1, T2, T3, T4 и WDT настроены, какое текущее состояние WDT и выходов OUT1 и OUT2). Настроечные параметры (значения интервалов времени T1, T2, T3, T4 и WDT) сохраняются в EEPROM микроконтроллера устройства hardctrl (ATmega16), и не сбрасываются при выключении питания.

На диаграмме показаны состояния выходов OUT1 и OUT2 в настроенные интервалы времени. На первой диаграмме показано формирование сигналов при срабатывании таймера WDT:

hardctrl-OUTx-diagram-wdt.png

На второй диаграмме показано формирование состояния выходов OUT1 и OUT2 при подаче питания:

hardctrl-OUTx-diagram-power-on.png

Firmware использует бесплатную библиотеку V-USB. Скомпилировать прошивку можно под Windows с использованием AVR Studio [5] и WinAVR [3] а под Линукс можно использовать avr-libc [6].

Управляющее программное обеспечение для USB HID (ПО хоста) можно скомпилировать как для Windows, так и для *nix, поскольку программа использует кроссплатформенную библиотеку libusb. Под Windows используется компилятор из пакета MinGW и утилита make, под Линукс используются стандартные утилиты операционной системы.

Для управления внешними цепями от выходов OUT1 и OU2 удобно использовать полупроводниковые оптронные реле KAQY210S site:cosmo-ic.com, PRAB37S, PRAC37S site:proton-orel.ru. В этом случае не нужны даже транзисторные ключи - эти реле можно подключить напрямую к ножкам микроконтроллера ATmega16 (через токоограничительные резисторы, конечно).

Байты перемычек (fuse bits) ATmega16 должны быть 0xFF (low) и 0x09 (high).

hardctrl-100609watch_dog_sch.png hardctrl-100609watch_dog.jpg

Схема и фотография любезно предоставлены директором компании Lynks Ltd.

[Ссылки]

1. 100123hardctrl-CDC-public.zip - firmware (исходный код и прошивка) для hardctrl, управляемый через виртуальный COM-порт (USB CDC device).
2. 131127hardctrl-hid-public.zip - firmware (исходный код и прошивка) для hardctrl, управляемый через USB HID и ПО хоста для него.
3. Как начать работать с библиотеками V-USB и libusb.
4. Сторожевой таймер для платежного терминала LDog.
5. AVR Studio 4.13, 4.14, 4.19, 5.0 и не только.
6. Building and Installing the GNU Tool Chain avr-libc site:nongnu.org.