Einrichtung und Beispiel zum Watchdog

Gast #6978162
Lesenswert?
• ▲
▼
Hallo Hab das folgende Beispiel auf Mikrokontroller gefunden:
1
uint8_t x;
2
    x = 10;
3
    while (x >= 0)
4
    {
5
      // tu was
6
      x--;
7
    }
"Wenn wir die Schleife mal genau anschauen sollte uns auffallen, dass 
dieselbe niemals beendet wird. Warum nicht? Ganz einfach, weil eine als 
unsigned deklarierte Variable niemals kleiner als Null werden kann (der 
Compiler sollte jedoch eine ensprechende Warnung ausgeben). Das Programm 
wird also ewig diese Schleife durchlaufen. Und hier genau kommt der 
Watchdog zum Zug."
Wenn ich das richtig verstanden habe kann uint8 nicht kleiner als 0 
werden kann, im Gegensatz zu int8, was von - bis 1+ geht. Soweit klar.
Kennt jemand noch ein anderes Beispiel dazu?

Dann habe ich das gefunden, da steht "asm". Sorry das versteh ich nicht

Die Einrichtung des Watchdog Timers läuft nach dem folgenden Schema:
•  cli() schaltet alle Interrupts ab. Das ist notwendig, da die 
Einrichtung des Watchdog Timers gestört werden könnte
•  asm("WDR"); ist eine Assembler Anweisung für den Watchdog Reset; wir 
werden bald sehen, wie man eine weniger kryptische Funktion einsetzen 
kann.
•  WDTCSR |= (1<<WDCE) | (1<<WDE); leitet die Änderung der Watchdog 
Parameter ein. Es ist wichtig, dass „|=“ und nicht „=“ verwendet wird. 
Nach dieser Initialisierung muss die eigentliche Änderung innerhalb der 
nächsten 4 Taktzyklen erfolgen.
•  WDTCSR = (1<<WDE) | (1<<WDP3); bedeutet: Reset ist aktiviert und der 
Watchdog Timer ist auf vier Sekunden eingestellt (siehe 
Einstellungstabelle).
•  sei(); lässt Interrupts wieder zu.

Arbeite mit C auf dem Atm328. Ist den asm dazu nötig oder geht es auch 
einfacher?
LG Peter
Gast #6978387
Lesenswert?
• ▲
▼
Peter schrieb:
> Und hier genau kommt der
> Watchdog zum Zug.

Watchdogs sind imho nicht dazu da, um Verklemmungen aufgrund von 
Programmierfehlern zu beheben. Das sollen Codereviews und Tests machen.

Watchdogs sollen die Hardware bei unvorhergesehenen äußeren Ereignissen 
in einen sicheren Zustand bringen - zumind. mein Verständnis.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 4 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.