Inhaltsverzeichnis:

Der Arduino Hang Guardian - Arduino Watchdog Timer Tutorial - Gunook
Der Arduino Hang Guardian - Arduino Watchdog Timer Tutorial - Gunook

Video: Der Arduino Hang Guardian - Arduino Watchdog Timer Tutorial - Gunook

Video: Der Arduino Hang Guardian - Arduino Watchdog Timer Tutorial - Gunook
Video: The Arduino hang guardian - Arduino watchdog timer tutorial 2024, Juli
Anonim
Image
Image

Hallo allerseits, Es passiert uns allen. Sie bauen ein Projekt, schließen begeistert alle Sensoren an, und plötzlich hängt das Arduino und es werden keine Eingaben verarbeitet.

„Was ist los?“, werden Sie fragen und anfangen, Ihren Code durchzuwühlen, nur um festzustellen, dass Sie in einer Endlosschleife stecken geblieben sind. Gott sei Dank war das Arduino auf Ihrer Bank und nicht an einem abgelegenen Ort.

Heute schauen wir uns an, wie wir den Watchdog-Timer auf dem Arduino verwenden können, um dies zu verhindern.

Schritt 1: Was ist dieser Watchdog-Timer?

Wie aktiviere ich den Watchdog-Timer?
Wie aktiviere ich den Watchdog-Timer?

Der Arduino Watchdog-Timer ist, wie der Name schon sagt, ein Timer, der getrennt von der Haupt-CPU auf der Platine läuft. Dieser Timer kann verwendet werden, um den Zustand des Boards regelmäßig zu überprüfen, und in Situationen, in denen das Board in einer Softwareschleife stecken geblieben ist oder aufgrund eines Hardwarefehlers stecken geblieben ist, kann der Watchdog-Timer das Arduino zurücksetzen und von vorne beginnen lassen.

Standardmäßig ist dieser Timer bei Nichtgebrauch in allen Projekten deaktiviert und nur wenn wir ihn aktivieren, müssen wir ihn regelmäßig anweisen, unser Board nicht zurückzusetzen, wenn es noch wie erwartet funktioniert.

Um den Watchdog-Timer verwenden zu können, müssen wir zunächst die Datei avr/wdt.h in unsere Arduino-Skizze einbinden. Dies ist die Standardbibliothek, die die Watchdog-Aktionen enthält.

Schritt 2: Wie aktiviere ich den Watchdog-Timer?

Wie aktiviere ich den Watchdog-Timer?
Wie aktiviere ich den Watchdog-Timer?
Wie aktiviere ich den Watchdog-Timer?
Wie aktiviere ich den Watchdog-Timer?

Um den Timer zu aktivieren, verwenden wir die Funktion „wdt_enable“, bei der wir das Schwellenintervall eingeben müssen, bei dem das Board zurückgesetzt wird. Je nach Anwendungsfall kann dies in vordefinierten Einstellungen, die in der Watchdog-Bibliothek enthalten sind, zwischen 15 Millisekunden und bis zu 8 Sekunden liegen.

SCHWELLENWERT - KONSTANTER NAME

15 ms WDTO_15MS 30 ms WDTO_30MS 60 ms WDTO_60MS 120 ms WDTO_120MS 250 ms WDTO_250MS 500 ms WDTO_500MS 1s WDTO_1S 2s WDTO_2S 4s WDTO_4S 8s WDTO_8S

Schritt 3: Halten Sie Ihr Programm am Laufen

Halten Sie Ihr Programm am Laufen
Halten Sie Ihr Programm am Laufen

Jetzt, da der Timer aktiviert ist, müssen wir regelmäßig die Funktion "wdt_reset" aufrufen, um den Watchdog-Timer vor Ablauf des Schwellenwertintervalls zurückzusetzen, um zu verhindern, dass unser Arduino zurückgesetzt wird.

Bei der Auswahl eines Reset-Intervalls ist es entscheidend, dass wir alle langwierigen Vorgänge wie das Lesen oder Senden von Daten oder das Anschließen externer Sensoren berücksichtigen. Der Rücksetzschwellenwert sollte mindestens eineinhalb Mal größer als diese Zeiten sein, um ein versehentliches Rücksetzen zu verhindern.

Schritt 4: Beispielanwendung

Anwendungsbeispiel
Anwendungsbeispiel
Anwendungsbeispiel
Anwendungsbeispiel
Anwendungsbeispiel
Anwendungsbeispiel

In dem Beispielprogramm, das Sie hier herunterladen können, richten wir zunächst den Watchdog-Timer mit einem Reset-Intervall von 4 Sekunden ein. Um dann zu wissen, dass wir uns in der Setup-Funktion befinden, blinken wir dreimal schnell eine LED auf und setzen dann in der Hauptschleife zuerst den Timer zurück, leuchten eine LED mit zunehmend längeren Intervallen auf und schalten sie dann aus. Die nächste Schleife setzt den Timer wieder zurück, bis die Leuchtzeit länger als 4 Sekunden ist.

In diesem Fall setzt der Watchdog-Timer das Board zurück und das Setup wird erneut ausgeführt.

Schritt 5: Watchdog-Timer-Probleme

Ein mögliches Problem mit dem Watchdog-Timer, abhängig vom Bootloader Ihres Arduino, ist, dass Sie Ihr Arduino-Board beschädigen können, wenn der Watchdog-Timer-Wert zu niedrig ist und der Bootloader den Timer beim Hochladen von neuem Code nicht zurücksetzt es wird immer in der Bootphase stecken bleiben. Der Bootloader wird versuchen zu starten, aber der Timer setzt das Board immer wieder zurück und lässt es nie richtig starten. Um solche Probleme zu vermeiden, stellen Sie sicher, dass Sie immer Schwellenwertintervalle von 2 Sekunden oder mehr verwenden.

Schritt 6: Genießen Sie

Genießen
Genießen

Wenn Sie ein Beispiel dafür haben, wo Sie den Watchdog-Timer in einem echten Projekt verwendet haben, lassen Sie es mich in den Kommentaren wissen, stellen Sie sicher, dass das Video gefällt und vergessen Sie nicht, es zu abonnieren.

Liebe Grüße und danke fürs Lesen/Anschauen!

Empfohlen: