Ich habe kürzlich etwas über Watchdog-Timer gelernt und versuche, einen für meine Schaltung zu implementieren, um meinen (AVR-) Mikrocontroller zurückzusetzen, wenn er hängt (dh nicht auf den Watchdog reagiert).
Aufgrund einiger Untersuchungen scheint es mir vier Möglichkeiten zu geben:
- Verbinden Sie meinen Mikrocontroller mit einem externen dedizierten Watchdog-Timer-spezifischen IC .
- Verbinden Sie meinen Mikrocontroller mit einem zusätzlichen Mikrocontroller (einige sehr einfache, kostengünstige), der für den alleinigen Zweck des Watchdog-Timings codiert ist.
- Legen Sie meine eigene 555-Timer-basierte Watchdog-Schaltung an und schließen Sie sie an meinen Mikrocontroller an.
- Verwenden Sie die interne Watchdog-Timer-Funktion meines Mikrocontrollers.
.
Welchen der oben genannten Ansätze würden Sie höher einstufen und warum?
Ich möchte eine Watchdog-Zeit von ungefähr 6 Sekunden festlegen, basierend auf bestimmten Kriterien für die Art und Weise, wie ich den Rest meines Designs und Codes mache (das Gerät wird ein batteriebetriebener, periodischer Temperaturlogger sein).
Ein kleiner Hinweis : Meine Präferenz wäre Option 1, der Einfachheit halber scheinen diese Teile jedoch aufgrund des Paares, das ich gefunden habe, entweder teuer zu sein (ich möchte eine Lösung unter höchstens 1,25 USD) oder nur weniger zuzulassen als 2 Sekunden für die Watchdog-Zeitspanne.
quelle
Antworten:
Wie pjc50sagt, 6 Sekunden sind eine lange Zeit. Ein typischer Mikrocontroller führt in dieser Zeit zig Millionen Anweisungen aus, und dann kann viel schief gehen. Angenommen, Sie steuern eine Last mit PWM und ein niedriger Arbeitszyklus von 10% hält die Verlustleistung niedrig. Der Mikrocontroller verwendet Bananen und der Ausgang bleibt bei einem hohen Tastverhältnis von 100% hängen. Die Ladung mag es nicht und stirbt. Sie möchten nicht 6 Sekunden warten, bis dies geschieht. Es sollte einen Teil Ihres Codes geben, in dem Sie viel mehr Frequenzen übergeben. Eine Hauptschleife kann nur 10 ms lang sein, dann können Sie das Timeout des Watchdogs beispielsweise auf 100 ms einstellen. Wenn Sie den Hund alle 10 ms einmal treten, bedeutet eine Zeitüberschreitung, dass Sie ihn 10 Mal verpasst haben! Einmal, OK, aber zehnmal ist eine Katastrophe, und Sie müssen Maßnahmen ergreifen. Die Last wird nach 100 ms statt nach 6 Sekunden abgeschaltet.
quelle
quelle
Wenn Ihre Schaltung / Ihr Gerät keine lebenswichtige Hardware steuert, können Sie wahrscheinlich den internen Watchdog verwenden. Ansonsten (oder auf jeden Fall) lesen Sie diese beiden großartigen Artikel von Jack Ganssle:
http://www.ganssle.com/watchdogs.htm
http://www.ganssle.com/articles/watchdogsredux.htm
Übrigens, wenn Sie den Watchdog nicht auf ein langes Intervall einstellen können, können Sie versuchen, oft genug aufzuwachen, um den Watchdog zu treten, aber nur ab und zu die vollständige Messung durchführen / Protokolle schreiben.
quelle