Forum: Mikrocontroller und Digitale Elektronik Einrichtung und Beispiel zum Watchdog


von Peter (Gast)


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

von Thomas F. (igel)


Lesenswert?

Peter schrieb:
> Arbeite mit C auf dem Atm328. Ist den asm dazu nötig oder geht es auch
> einfacher?

Datenblatt "Atmel8271 Atmega48 - 328" Kapitel 11.8: Dort steht der 
C-Code.

von Peter (Gast)


Lesenswert?

Das DB kenne ich auch diese Seite.
Wozu brauche ich "asm"?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Peter schrieb:
> Ist den asm dazu nötig oder geht es auch einfacher?
Ich würde einfach mal ganz unbeschwert weiterlesen, wenn da steht:
> wir werden bald sehen, wie man eine weniger kryptische Funktion einsetzen
> kann.

von Thomas F. (igel)


Lesenswert?

Es geht umständlicher:

Beitrag "Re: Watchdog reset"

von Peter (Gast)


Lesenswert?

Bleibt nur noch die Frage nach einem Beispiel, wo sich der Prozessor 
aufhängen kann.
Das andere werde ich weiter lesen. Dachte es geht auch einfacher ohne 
komplizierte Erklärung

von Cyblord -. (cyblord)


Lesenswert?

Peter schrieb:
> Bleibt nur noch die Frage nach einem Beispiel, wo sich der Prozessor
> aufhängen kann.

Einfach.

while(1);

von Peter D. (peda)


Lesenswert?

Peter schrieb:
> Hallo Hab das folgende Beispiel auf Mikrokontroller gefunden:

Codeschnipsel reißt man nicht einfach aus dem Kontext heraus, sondern 
verlinkt auch auf das Original. Und besonders bei Fragen dazu.

: Bearbeitet durch User
von Peter (Gast)


Lesenswert?

Habe den Codeschnipsel nicht Kontext herausgerissen. Es stammt aus dem 
Bereich Tutorial und ist nicht länger

von Heinz (Gast)


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.

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
Noch kein Account? Hier anmelden.