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
@ 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
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.
man kann auch einen normalen reset von einem watchdogreset unterscheiden und im fehlerfall das programm gar nicht erst starten.
@ 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
@ 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
@ 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
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
> 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
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.