www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik wofür ist der Watchdog brauchbar?


Autor: Wolfram Quehl (quehl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wofür kann man den Watchdog timer gebrauchen?

Wenn ein Programm in einer Schleife läuft und nicht wieder rauskommt, 
dann schlägt der Watchdog zu und es gibt ein Reset. Danach läuft das 
Programm aber wieder wie vorher ab und landet in der selben Schleife. 
Dadurch vergrößert sich nur die Schleife über den Watchdog und ich kann 
den Sinn nicht erkennen.
Auch wenn sich die Eingänge dann ändern, so hat das nichts mit dem 
Watchdog zu tun. Auch Interrupts werden entweder abgearbeitet oder 
nicht. Bei einem Watchdog Reset tritt genau derselbe Fehler wieder auf.

mfg

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Wolfram Quehl (quehl)

>Programm aber wieder wie vorher ab und landet in der selben Schleife.

Nicht ganz. Normalerweise bleibt ein Programm ja nicht hängen. Real kann 
es aber schon mal passieren, dass durch einen Programmierfehler und 
ungünstige Daten (wenn z.B eine Funktionen einen 32 Bit Parameter 
verarbeitet, und nur bei einem ganz bestimmten, extrem selten 
auftretenden Wert hängen bleibt; passiert meist durch unzureichende 
Bereichsprüfung bzw. Abbruchbedingung von Schleifen) oder duch 
EMV-Einflüsse (Datenfehler auf exteren Bussen/Eingängen) eine ungewollte 
Endlosschleife entsteht. Aus solchen sehr selten auftretenden Fällen 
rettet dich ein Watchdog. Natürlich ist das nur sinnvoll, wenn dein 
Board im Testbetrieb für wenigstens 1....X Tage fehlerfrei läuft 
(abhängig von der Anwendung).

>nicht. Bei einem Watchdog Reset tritt genau derselbe Fehler wieder auf.

Nein. Siehe oben.

MFG
Falk

Autor: The Devil (devil_86)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Grunde läufts so:
Der µC muss den Watchdog immer wieder zurücksetzen, damit dieser keinen 
Reset auslöst. Hängt der µC in einer Schleife fest, hat er ergo keine 
Zeit mehr den Watchdog zurückzusetzen und er löst einen Reset aus.

Autor: déjà vu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
man kann auch einen normalen reset von einem watchdogreset unterscheiden 
und im fehlerfall das programm gar nicht erst starten.

Autor: Wolfram Quehl (quehl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ the Devil
das ist mir bekannt. Nur nach dem Reset läuft das gleiche Programm ab.

@ Falk

EMV wäre eine Möglichkeit, weil diese nur kurz ist und sich ändert.
Bei Programmfehlern kann ich das nicht sehen, weil der gleiche 
Programmfehler nach dem Reset wieder auftritt. Warum sollte er beim 1. 
Reset falsch laufen und beim 2. Reset richtig?
Ach jetzt verstehe ich, das ist abhängig von den Eingaben, wenn über die 
serielle Schnittstelle falsche Daten übertragen werden, dann geht es in 
die Schleife und nach dem Reset, könnten richtige Daten übertragen 
werden und dann läuft es richtig. Das wäre also dann von Eingabedaten 
abhängig, ob man den Watchdog braucht. Bei Ausgaben braucht man den dann 
wohl nicht.

mfg

Autor: Wolfram Quehl (quehl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Deja vu

nicht starten, ist wohl nicht so sinnvoll. Soweit ich weiß, startet der 
Mega immer, nur das man dann die Schleife vorverlegen kann, aber ob die 
Schleife früher oder später kommt, ist doch auch fast egal. Man könnte 
aber die Ausgänge auf definierte Zustände setzen, damit kein weiterer 
Schaden entsteht. Da darf dann aber kein Fehler mehr im Programm sein.

mfg

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Wolfram Quehl (quehl)

>Bei Programmfehlern kann ich das nicht sehen, weil der gleiche
>Programmfehler nach dem Reset wieder auftritt. Warum sollte er beim 1.

Jain. In komplexen Algorithmen kann es Stunden bis Jahre dauern, bis 
eine kritische Variablenkonstellation auftritt, die den Prozessor in ne 
Endlosschleife hängen lässt. Diese Fälle soll und kann der Watchdog 
entschärfen. Keine Programmierfehler, die nach kurzer Zeit immer wieder 
auftreten (auch wen das bisweilen in schlechten Desigens gemacht wird).

>Ach jetzt verstehe ich, das ist abhängig von den Eingaben, wenn über die
>serielle Schnittstelle falsche Daten übertragen werden, dann geht es in
>die Schleife und nach dem Reset, könnten richtige Daten übertragen
>werden und dann läuft es richtig. Das wäre also dann von Eingabedaten

Genau.

>abhängig, ob man den Watchdog braucht. Bei Ausgaben braucht man den dann
>wohl nicht.

Mehr oder weniger.

>nicht starten, ist wohl nicht so sinnvoll. Soweit ich weiß, startet der

Kommt drauf an. Zu Debugzwecken kann man die erneute Ausführung stoppen 
und z.B. eine LED anschalten - ERROR!
In autonomen Systemen, die immer laufen müssen (Z.B. Telekommunikation 
in der Pampa) und sich wieder fangen müssen wird man den Watchdog Reset 
protokollieren und ggf. ne Warmeldung generieren und dann neu starten. 
Niemand will einen Techniker rauschicken um auf den Reset zu drücken.

>aber die Ausgänge auf definierte Zustände setzen, damit kein weiterer
>Schaden entsteht.

Kann man machen.

>Da darf dann aber kein Fehler mehr im Programm sein.

An der Stelle wird kaum einer drin sein. Es geht hier um sehr seltene 
Fehler in komplexen Algorithmen, die man auch durch intensive Test im 
Labor kaum findet. Es geht hier nicht um offensichtliche, "normale" 
Programmierfehler.

MfG
Falk

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wolfram Quehl wrote:

> Wenn ein Programm in einer Schleife läuft und nicht wieder rauskommt,
> dann schlägt der Watchdog zu und es gibt ein Reset.


Der Watchdog kann nicht Deine Programmierfehler beheben.

Wenn das Programm nicht regulär die Schleife verlassen kann, dann mußt 
Du das ändern.

Wenn das aber die Hauptschleife ist (darf nie verlassen werden), dann 
mußt Du darin den Watchdog an geeigneter Stelle triggern oder ihn 
abgeschaltet lassen.


Peter

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Jain. In komplexen Algorithmen kann es Stunden bis Jahre dauern, bis
> eine kritische Variablenkonstellation auftritt, die den Prozessor in ne
> Endlosschleife hängen lässt.

Generell ist das zwar richtig, aber wenn man erprobte Algorithmen mit 
einem vorhersagbaren Verhalten nimmt ist das Risiko minimal, da man hier 
auch das Zeitverhalten kennt. Das liegt dann schon weniger am 
Algorithmus als an einem konkreten Programmierfehler oder einen 
hardwarebedingten Fehler, etwa dass man einen Sonderfall nicht richtig 
behandelt oder die Parameter nicht hinreichend prueft.

Michael

Autor: GSM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann gibt es noch den Fall, dass die Elektronik etwas zuwenig gegen EMI 
macht/hat, und daher schnell mal bei einem Spike oder Burst aus dem 
Tritt kommt. Der Watchdog biegt das wieder hin. Mir sind jedenfalls 
Trivialo Anwendungen bekannt, die das so machen. Aeh, ja. Wenn man dann 
das Mobiltelephon auf das Geraet legt, macht es dauernd einen Reset. 
Pech.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.