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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren