Wie richte ich einen Hardware-Watchdog-Timer mit einem Arduino ein?
Wie richte ich einen Hardware-Watchdog-Timer mit einem Arduino ein?
Antworten:
Es gibt eine Reihe dedizierter Hardware-Watchdog-Chips, aber es ist einfach genug, einen normalen 555-Timer-IC und einige unterstützende Teile zu verwenden. Wenn der 555 im Astable-Modus mit einer sehr langen "HIGH" -Periode und einer relativ kurzen (möglicherweise 0,3 Sekunden) "LOW" -Periode konfiguriert ist, kann der Ausgang über eine Diode mit dem Reset-Pin des Arduino verbunden werden, um den Watchdog zu einem Open-Collector zu machen Gerät. Der Arduino kann dann den Watchdog unter Verwendung eines digitalen Ausgangs periodisch zurücksetzen, um einen Transistor einzuschalten, der den an den 555 angeschlossenen Zeitkondensator entlädt, wodurch verhindert wird, dass er jemals einen Triggerpunkt erreicht, der dazu führt, dass er den Arduino zurücksetzt.
Einige grundlegende Informationen zu einem Projekt hierfür finden Sie unter http://www.practicalarduino.com/news/id/471
In den Atmega-Chip ist bereits ein Watchdog-Timer eingebaut. Sie können es verwenden avr/wdt.h
, um es zu manipulieren.
Ein kurzes Beispiel:
#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
}
Ich habe von einigen Problemen gehört, die mit dem WDT und dem regulären Bootloader gemeldet wurden. Vielleicht möchten Sie einen anderen Bootloader damit ausprobieren, z. B. Adaboot.
Außerdem können Sie mit dem WDT neben einem Reset noch einiges mehr tun. Ich empfehle http://www.atmel.com/dyn/resources/prod_documents/doc2551.pdf