
Wenn man von zu Hause aus arbeitet, gibt es einige Vorteile des Jobs. Man kann seine eigenen Mahlzeiten zubereiten, über Mittag Wäsche waschen und so viel Tee trinken, wie man möchte. Ich benutze einen Herdkessel, um Wasser für meinen Tee zu kochen, also wenn ich in der Schreibzone bin, verlasse ich mich auf sein hohes Pfeifen, um mir zu sagen, wann es fertig ist.
Manchmal, wenn ich unvorsichtig bin, setze ich den Deckel nicht richtig auf. Infolgedessen bleibt der Kessel stumm, obwohl das flüssige Wasser in seinem Inneren schnell zu Gas wird. Mein unvorsichtiges Verhalten in diesem Szenario bedeutet nur, dass ich weniger Tee trinken werde, in eingebetteten Systemen sind die Konsequenzen viel höher, wenn man nicht weiß, wie man einen Watchdog-Timer (WDT) bedient. Wenn Ihr Timer nicht funktioniert, bleibt ein angehaltener Mikrocontroller angehalten und verursacht, dass Ihr eingebettetes System heruntergefahren bleibt. Lassen Sie uns anschauen, wie ein Watchdog-Timer funktioniert, wie man einen Watchdog-Timer-Schaltkreis implementiert und wie man sie beim ersten Versuch richtig zum Funktionieren bringt, damit Sie dieses Szenario vermeiden können.
Der Watchdog Timer ist eine einfache Fail-Safe-Funktion in der Elektronik, die dazu dient, einen Mikrocontroller im Falle eines Hardware- oder Software-Watchdog-Schaltkreisabsturzes neu zu starten. Die STM32 Watchdog Timer sind entweder als separater integrierter Schaltkreis (IC) verfügbar oder als integrierte Funktion im Mikrocontroller selbst eingebaut. Einen WDT in Embedded-System-Designs nicht zu verwenden, gilt oft als unverzeihlicher Fehler.
Die Funktionsweise von Watchdog Timern ist einfach. Er wird programmiert, um innerhalb eines festgelegten Watchdog-Timeout-Intervalls herunterzuzählen. Unter normalen Betriebsbedingungen aktualisiert der Mikrocontroller periodisch den Countdown-Timer des Timers, um zu verhindern, dass dieser abläuft. Reagiert der Mikrocontroller nicht, wird er den Watchdog Timer nicht aktualisieren. Folglich wird, wenn die Watchdog Timer ablaufen, ein Impuls oder Signal ausgelöst, um den Mikrocontroller über den Watchdog Timer zurückzusetzen. Diese einfache Funktion kompensiert Konstruktionsfehler oder Umweltfaktoren, die dazu führen können, dass ein Mikrocontroller abstürzt.
Wenn jedoch Ihr WDT ausfällt, ist es unwahrscheinlich, dass Ihr Embedded-System aus seinem fehlerhaften Zustand wiederhergestellt wird. Deshalb ist es wichtig, die Ursache zu ermitteln, warum ein Watchdog Timer möglicherweise den Mikrocontroller nicht zurücksetzt. Die offensichtlichste Antwort ist, dass die Watchdog Timer-Chips fehlerhaft sind. Wenn jedoch wiederholt Embedded-Systeme in mehreren Einheiten nicht wiederhergestellt werden können, könnte etwas mit Ihren Designs nicht stimmen.
Tatsächlich habe ich in meinen vielen Jahren des Entwerfens und Einsatzes von hunderten mikrocontrollerbasierten Geräten noch nie einen einzigen Fall eines ausgefallenen STM32 Watchdog Timers erlebt. Die Ursache liegt oft einfach im menschlichen Fehler.
Bei eingebetteten Systemen, die einen internen WDT verwenden, kann entlaufener Code den Watchdog Timer deaktivieren, wenn die Konfigurationsbits versehentlich überschrieben werden. Externe Watchdog Timer-Chips leiden unter völlig anderen Problemen. In diesem Fall ist es üblich, dass ein Jumper-Pin vorhanden ist, der das Reset-Signal vom externen Watchdog Timer trennen kann, wenn Firmware-Ingenieure ein Programm entwickeln und debuggen. Oft müssen diese Jumper-Pins manuell verbunden werden, bevor die Einheiten vor Ort eingesetzt werden. Wenn dies nicht geschieht, bleiben die WDT-Reset-Signale getrennt und versagen darin, den Mikrocontroller zurückzusetzen.
Ein häufigerer Grund, warum Watchdog-Timer nicht funktionieren, sind Programmierfehler. Wenn die Funktionen, die die WDT-Timer aktualisieren, im falschen Teil des Programms platziert sind, funktionieren sie nicht, wenn sie sollen. Firmware für Mikrocontroller wird kompliziert, wenn es mehrere Aufgaben mit unterschiedlichen Prioritäten in einem Echtzeitbetriebssystem (RTOS) gibt. Aufgaben des Watchdog-Schaltkreises mit höherer Priorität können weiterhin ausgeführt werden, auch wenn Aufgaben mit niedrigerer Priorität in einer abnormalen, unendlichen Schleife sind. Wenn das Aktualisieren des Watchdog-Timer-Schaltkreises die Aufgabe mit der höchsten Priorität ist, wird der Mikrocontroller nicht aktualisiert, wenn er nicht korrekt funktioniert.
Um sicherzustellen, dass der WDT seine Arbeit verrichtet, sind der Firmware-Entwickler, der Systeminstallateur und der Hardware-Watchdog-Designer gefragt. Firmware-Entwickler sollten die besten Praktiken in der Programmierung anwenden, um Code-Überläufe zu vermeiden, die den internen WDT ausschalten. Firmware-Entwickler müssen ein gutes Verständnis der Speicherarchitektur des Mikrocontrollers haben und wissen, wie man Speicherzeiger und -zuweisungen im Code korrekt verwendet.
Nebenbei sollte die Struktur des Programms so entworfen werden, dass die Watchdog Timer an geeigneten Stellen im Programm zurückgesetzt werden. Das bedeutet, dass das Programm einen Watchdog-Reset auslöst, wenn sich an irgendeinem Punkt im Programm eine Endlosschleife entwickelt. Sie können auch ein Test-Utility entwickeln, um die Funktionalität des WDT vor Ort zu überprüfen. Dies eliminiert auch das Risiko, dass eventuell getrennte Jumper-Pins zwischen einem externen Watchdog Timer und dem Mikrocontroller übersehen werden.
Wenn Sie ein einfach zu bedienendes PCB-Layout-Tool benötigen, das alles umfasst, was zum Bau von hochwertigen, fertigungsgerechten Leiterplatten benötigt wird, suchen Sie nicht weiter als CircuitMaker. Zusätzlich zur einfach zu bedienenden PCB-Design-Software haben alle CircuitMaker-Nutzer Zugang zu einem persönlichen Arbeitsbereich auf der Altium 365-Plattform. Sie können Ihre Design-Daten in der Cloud hochladen und speichern und Ihre Projekte sicher über Ihren Webbrowser auf einer sicheren Plattform einsehen.
Beginnen Sie heute mit der Nutzung von CircuitMaker und bleiben Sie gespannt auf das neue CircuitMaker Pro von Altium.