Как настроить аппаратный сторожевой таймер с Arduino?
Как настроить аппаратный сторожевой таймер с Arduino?
Ответы:
Доступно несколько специализированных аппаратных сторожевых микросхем, но это достаточно просто сделать, используя обычную 555 таймерную ИС и пару вспомогательных частей. С 555, сконфигурированным в нестабильном режиме с очень длинным периодом «ВЫСОКИЙ» и относительно коротким (возможно, 0,3 секунды) периодом «НИЗКИЙ», выход можно подключить к выводу сброса Arduino через диод, чтобы сделать сторожевой таймер открытым коллектором. устройство. Затем Arduino может периодически сбрасывать сторожевой таймер, используя цифровой выход, чтобы включить транзистор, который разряжает синхронизирующий конденсатор, подключенный к 555, предотвращая его когда-либо достижение точки запуска, которая заставит его сбросить Arduino.
Некоторая основная информация о проекте для этого доступна по адресу http://www.practicalarduino.com/news/id/471.
Уже есть сторожевой таймер, встроенный в чип atmega; Вы можете использовать, avr/wdt.h
чтобы манипулировать им.
Быстрый пример:
#include <avr/wdt.h>
void setup() {
wdt_enable(WDTO_500MS); // have the wdt reset the chip
// if 500ms passes without a reset
}
void loop() {
wdt_reset(); // reset the wdt
}
Я слышал о некоторых проблемах с WDT и обычным загрузчиком, поэтому вы можете попробовать использовать другой загрузчик, например, Adaboot.
Кроме того, с помощью WDT вы можете сделать еще кое-что, кроме простого сброса. Я рекомендую http://www.atmel.com/dyn/resources/prod_documents/doc2551.pdf