Welcher dieser Ansätze für einen Watchdog-Timer?

8

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:

  1. Verbinden Sie meinen Mikrocontroller mit einem externen dedizierten Watchdog-Timer-spezifischen IC .
  2. 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.
  3. Legen Sie meine eigene 555-Timer-basierte Watchdog-Schaltung an und schließen Sie sie an meinen Mikrocontroller an.
  4. 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.

Brettbiss
quelle
1
4) ist billig und einfach. Ist Ihr Einwand nur, dass Sie ihn nicht auf 6 Sekunden einstellen können? Das ist für Mikrocontroller-
Verhältnisse
1
@ pjc50: Es ist definitiv billig :) Und sogar das 6-Sekunden-Timing ist möglich, glaube ich. Artikel wie dieser deuten jedoch darauf hin, dass der interne Watchdog möglicherweise nicht so robust ist wie ein dedizierter externer. Der Grund für das 6-Sekunden-Mal ist, dass ich auf meinem Mikrocontroller einen Arduino-Bootloader habe, der beim ersten Start eine Wartezeit von 4 Sekunden enthält. (Ich könnte lernen, dies neu zu programmieren, aber das ist noch in meiner Lernkurve)
Boardbite
1
Sie sollten den Bootloader auf jeden Fall reparieren. Die 4 Sekunden Wartezeit sind 4 zusätzliche Sekunden Batterieverbrauch, die Sie loswerden können. Anstatt zu warten, lassen Sie es z. B. einen dedizierten Stift abtasten, der während der Bereitstellung heruntergezogen wird.
Igor Skochinsky

Antworten:

14
  1. Teurer, wie Sie bereits herausgefunden haben. Aber es sollte Ihnen ein Höchstmaß an Zuverlässigkeit bieten: Da der Watchdog völlig unabhängig vom Mikrocontroller ist, läuft er weiter und setzt den Mikrocontroller zurück, wenn dieser sozusagen in Flammen steht. Siehe 4)
  2. Brian ist dagegen, aber es gibt billige Mikrocontroller in einem kleinen Paket, wie den PIC10F200 in SOT-23, den Sie als retriggerbaren MMV (monostabiler Multivibrator) verwenden können, der der Watchdog tatsächlich ist. Wenn Sie einen 555 in Betracht ziehen, ist ein 10F200 besser: keine externen Teile und genaueres Timing (1% Genauigkeit).
  3. ein 555? Ernsthaft?
  4. Der interne Watchdog reicht aus, wenn der dedizierte IC zu teuer ist. Wenn Sie wirklich paranoid sind, können Sie sich ein Szenario vorstellen, in dem ein Hardwarefehler den Mikrocontroller und den Watchdog damit blockiert. Ich habe nie gewusst, dass dies passiert, aber ich weiß nicht, wie gut du schläfst.

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.

stevenvh
quelle
2
@ Nick - Schön , dass Sie es mögen, aber eigentlich ich habe mehr Zeit damit verbringen , den Rest der Antwort schreiben :-).
Stevenvh
1
Was ist los mit 555 Timern? :)
Justin 12
3
@Justin - Es gibt Leute, für die ein 555 Religion ist: Sie können alle Probleme der Welt lösen und einige mit einem 555. Nun, ein 555 ist sehr vielseitig, typische Anwendungen sind monostabile und astabile Multivibratoren, PWM, aber es ist nicht das Beste für alles. In dieser Frage / Antwort verbringt OP einige Wochen damit, eine 555-Schaltung für eine Aufgabe zu entwerfen, für die sie nicht geeignet ist. Der gleiche Job könnte in einer Stunde in einen Mikrocontroller programmiert werden. Ich bin nicht in Frage OP Fähigkeiten hier noch seinen Ansatz, wie ich es verstehe er hatte einen 555 zu verwenden ...
stevenvh
2
Jedes Mal, wenn jemand Wörter wie "absolut" verwendet, fühle ich mich gezwungen, ein Gegenbeispiel zu finden. In diesem Fall: Ein Mikrocontroller ist empfindlicher gegenüber kosmischer Strahlung und Strahlung als ein 555, daher wäre IMO in einigen Anwendungen hinsichtlich der Zuverlässigkeit vorzuziehen.
Apalopohapa
2
@apalopohapa - Ich stehe korrigiert. In Raumfahrzeugen sind 555 möglicherweise die bessere Wahl als Mikrocontroller. Natürlich sind Computer aus 555 (schätzungsweise) 15 Größenordnungen weniger genau , größer, leistungshungriger und nicht so einfach in C ++ oder Ada zu programmieren ... :-)
stevenvh
5
  1. Watchdog Timer ist einfach, funktioniert, billig. Ovbious Wahl.
  2. Ein zusätzlicher Mikrocontroller ist Overkill. Es ist nicht hilfreich, da Sie es programmieren müssen, es ist teurer, mehr Fläche.
  3. Das macht Sinn. Aber ich würde stattdessen 1 machen. Mehr modern.
  4. Ich würde dies verwenden, wenn es funktioniert. Die einzige Frage ist, ob es auf 6 Sekunden eingestellt werden kann.
Brian Carlton
quelle
Danke für den Vergleich. Das einzige ist jedoch, dass # 1 nicht billig zu sein scheint! Ich habe keinen Watchdog-Timer-fähigen IC mit Mengenpreisen von weniger als einem Dollar gefunden, während es, wie Sie wahrscheinlich wissen, viele Mikrocontroller (für Option 2) gibt, die weniger als 0,50 USD kosten.
Boardbite
2

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.

Igor Skochinsky
quelle