zurück

Arduino-Watchdog

21.12.2017
Watchdog

Es kann immer mal passieren, dass es z.B. durch Programmierfehler oder auch externe Einflüsse zu Fehlfunktionen oder Verzögerungen im Programmablauf kommt. Damit das Programm dann nicht in einer Ednlosschleife o.ä. hängen bleibt, kann der sog. Watch-dog-timer aushelfen.
Für den Sketch wird nur ein Arduino UNO (oder kompatible) benötigt und eine serielle Konsole.

Sketch

#include <avr/wdt.h>

unsigned int countDown = 10;

void setup()
{
    Serial.begin(9600);
    Serial.println("Begin/reset program");

    // set the watch-dog timer to 2 seconds
    wdt_enable(WDTO_2S);
}

void loop()
{
    Serial.println("Begin of loop");
    wdt_reset();

    /*
     * this loop can never be finished because "coundDown" will never be negative,
     * so the watch-dog will reset the Arduino after the set 2 seconds,
     * because wdt_reset() was never called twice.
     */
    while (countDown >= 0) {
        Serial.println(countDown);
        countDown--;
        delay(500);
    }

    Serial.println("End of loop");
}