interner oder externer Watchdog
Vor- und Nachteile und was man beachten sollte

Watchdog

Wenn man seinen Sketch (Programm) auf dem Arduino zum Laufen gebracht hat, soll es natürlich auch stabil sein. Nun ist natürlich die beste Möglichkeit ein Programm stabil zu machen, die Vermeidung von Fehlern und die weiteren bekannten Methoden aus der Softwareentwicklung. Da aber nicht wirklich 100% aller auftretenden Fälle beachtet werden können (Speicherleck, externe Einflüsse, Spannungsspitzen/Spannungsausfall), macht es durchaus Sinn einen Überwachungsmechanismus zu implementieren. Dieser wird allgemein Watchdog genannt. Der Sinn eines Watchdos ist die Programmausführung zu kontrollieren und bei Fehlfunktion (Programm kommt X ms nicht an einer bestimmten Programmstelle vorbei) einen RESET auszulösen.
Vor allem bei Geräten welche [sehr] lange autonom funktionieren sollen/müssen oder wo es auf hohe Verfügbarkeit ankommt, ist dieser Mechanismus zwingend.
interner Watchdog externet Watchdog
kein zusätzlicher Hardwareaufwand
sehr einfache Programmierung
es wird nur ein interner Reset ausgelöst
begrenzte Zeit < 8 Sekunden möglich
zusätzlicher Hardwareaufwand
einfache Programmierung
Hardwarereset wird ausgelöst
unbegrenzte TimeOutzeit möglich


Speziell das Thema Hardwarereset sollte nicht unterschätzt werden. Wenn beim Arduino Shields oder andere externe Komponenten benutzt  werden, so kann nur mit einem Hardwarereset sichergestellt werden, das wirklich alles auf Grundzustand zurückgesetzt wird.
Es sei hier stellvertretend das GSM Shield oder auch die Ethernetshiels genannt.

Programmstruktur für [internen] Watchdog

#include

void setup ()
{
    // ...
  wdt_enable (WDTO_8S);  //Watchdog aktivieren nach 8 Sekunden Reset
 }  

void loop ()
{
  wdt_reset ();         //8sekundenintervall neu starten
  ...
}   

 

Schaltungsvorschlag für externer Watchdog

Watchdog Timer der ein echtes RESET erzeugt, und somit angeschlossene Shields ebenfalls rücksetzt.

 

   
© ALLROUNDER