www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR viele Stunden in while Schleife, Problem? WatchDog?


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe einen AVR der im Polling Betrieb den UART abfragt. Klappt auch 
ganz gut. Jetzt Frage ich mich wie lange der AVR wartet das ein Zeichen 
ankommt ohne das es Probleme gibt? Also würde der Controller auch artig 
eine Woche warten ohne das das Programm abstürzt? Greift dann irgendwann 
der Watchdog ein? Oder sollte man den Watchdog aktivieren falls das 
Programm doch mal abstürzt?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Watchdog greift logischerweise nur dann ein, wenn er aktiviert ist.

Wenn der µC ordentlich programmiert ist und eine stabile 
Spannungsversorgung sichergestellt ist, gibt es eigentlich keinen Grund, 
warum er nicht ein paar Jahre in einer Endlosschleife sinnlos Strom 
verheizen kann...

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jeder Prozessor wartet brav in der Schleife, ob tage-, wochen- oder 
jahrelang.
Die Abnützungserscheinungen der Schleife sind minimal.

(Ist nur ein Scherz, dem Prozessor ist es egal welchen Programmteil er 
ausführt).

Den Watchdog brauchst Du nur, wenn es ganz,ganz wichtig ist, dass dein 
Prozessor wieder von selbst auf die Füße kommt und schützt eher vor 
Softwarefehlern.
Im "Normalfall" (der eigentlich nicht vorkommen sollte), genügt es wenn 
der Benutzer merkt, dass der Prozessor nicht mehr reagiert und das Gerät 
aus- und einschaltet (MS Windows-Prinzip).

Klaus

Autor: Markus Burrer (Firma: Embedit Mikrocontrollertechnik) (_mb_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warten tut der Controller so lange er Strom hat und nicht kaputt geht. 
So lange der Watchdog ausgeschaltet ist unternimmt der auch nichts.

Wenn du den Watchdog aktivierst resettet er den Controller alle paar ms 
oder maximal ein paar Sekunden und dein Programm muss ihn immer 
rechtzeitig daran hindern indem es einen speziellen Befehl ausführt.

Der Watchdog erkennt nicht von alleine wen dein Programm hängt

Autor: Jankey (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn der Controller nicht den WD aktiviert hat kann garnix sein, der 
Microcontroller in meinem Auto der die Zentralverriegelung alla Peugot 
206 blinken lässt ist seit 2004 in einer while schleife ... und erfreut 
mich jeden morgen mit einem Blinklichtgewitter ... :)

Autor: StinkyWinky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Autor:  Klaus Falser (kfalser) schrieb:
>
> Den Watchdog brauchst Du nur, wenn es ganz,ganz wichtig ist, dass dein
> Prozessor wieder von selbst auf die Füße kommt und schützt eher vor
> Softwarefehlern.

Meiner Meinung nach verschleiert ein WD die SW-Fehler, er schützt nicht 
davor!
Allerdings kann es durchaus sein, dass der Kunde zufrieden ist, weil er 
nichts vom SW-Fehler merkt.

Autor: 6637 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sinnvollerweise macht man fuer eine Meldung ein timeout. Dh nach dem 
letzten empfangenen Zeichen kommt nach zB 1s ein timeout, der den 
Zustand auf nicht mehr wartend aendert. Gehoert sich fuer ein 
ordentliches Design. Ein Watchdog ist hier fehl am Platz.

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Also würde der Controller auch artig
> eine Woche warten ohne das das Programm abstürzt?

Nein, natürlich nicht.

So ein Controller hat auch Anspruch auf eine geregelte Arbeitszeit, 
Wochenende und Urlaubstage.

Die genauen Modalitäten sind von Controller zu Controller verschieden, 
jenachdem in welchen Gewerkschaften die Controller organisiert sind.

Die PIC-Prozessoren arbeiten z.B. immer noch nur 35 Stunden die Woche, 
während die AVRs schon 40 Stunden arbeiten (müssen).

Allerdings wollen die AVRs bald streiken da sie gar nicht mehr arbeiten 
wollen.

Ausserdem gibt es noch das Controller-Schutz-Gesetz.

Das legt fest, dass Controller keine eintönige und langweile Arbeiten 
durchführen dürfen, regelmäßig fortgebildet werden müssen und dass sie 
keinen hohen Umweltbelastungen ausgesetzt werden dürfen.

Autor: Anonymous (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OP will nur arme kleine Tron-Männchen quälen :->

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Unbekannter
Bei Dir toggelt wohl ein Portpin? ;-) Warte nur, gleich löst einer der 
Moderatoren einen Interrupt aus. (Die Interrupts der Moderatoren sind 
immer maskiert, nie weiß man, wer es gerade war)

MfG Paul

Autor: Gast der das Posting eröffnet hat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie realisiert man denn ein Timeout?

Also eine Funktion wie: Wenn nach 10s kein Zeichen über den UART 
gekommen ist höre auf zu warten und gehe zu dem Programmteil "soundso"?

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn nach 10s kein Zeichen über den UART
>gekommen ist höre auf zu warten und gehe zu dem Programmteil "soundso"?

Bei jedem empfangenen Zeichen einen Timer (kann auch ein entsprechend 
erweiterter sein) zurücksetzen.
Irgendwo (ISR oder main) die "Uhrzeit" abfragen und entsprechend 
reagieren.
Aus der Main heraus stellt es das kleiner Problem dar...

Autor: 6637 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab jeweils einen Tick Interrupt, der am Timer0 laueft, in der Regel 
10ms. Dort decrementiere ich die Timeoutvariable, softern ungleich Null. 
Bei jedem empfamgenen Zeichen wird diese Timeout variable neu auf 100 
gesetzt. Umd im Main wird die Timeoutvariable geprueft. Wenn Null war's 
ein Timeout, macht dann den Zustand auf Null oder so.

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.