Программирование AVR: работа с USB AVR-USB-MEGA16: hardctrl - управляемый сторожевой таймер (watchdog) для компьютера Thu, March 28 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

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.

 

Комментарии  

 
0 #1 ur5iic 02.02.2010 16:38
Подскажите, если можно, как скомпилировать ваши примеры использования библиотеки V-USB c помощью мэйк-файла, сгенерированног о встроенным в winavr Mfile. Не имею богатого опыта на этом поприще. Make hex - все нормально, сo сгенерированным - ошибки.

microsin: Чтобы исправить ошибки сгенерированног о Makefile, нужно смотреть сообщения об ошибках, которые выводит make или запускаемые им утилиты, и вручную эти ошибки выправлять. А вообще я не пользуюсь Makefile сгенерированным , предпочитаю брать готовый рабочий и модифицировать его вручную, текстовым редактором. Так намного проще, понятнее и быстрее. Примеры Makefile есть в каждом проекте, основанном на V-USB. См. также статью "Как устроен Makefile и что это такое?" http://microsin.ru/content/view/597/44/.
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page