mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT90S2313 Watchdog/Assembler


Autor: Hugo Portisch (portisch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich weiß, es gibt schon viele Themen zu den Watchdogs, aber da ich es ja 
nicht mit dem AVR-Studio simulieren kann möchte ich nachfragen ob diese 
Lösung so geht:
;------------------------------------------------------------------------------------------
;********************************************************************
;* Main program
;********************************************************************
  cli 
  ldi  temp0, 0x18
  out  WDTCR,temp0
  ldi  temp0, 0xE
  out  WDTCR,temp0
  sei
Main:
  wdr
//do some stuff (~10ms Loop-Time)
  rjmp Main

hiermit sollte der Watchdog eingeschaltet werden. Zeit ~1 Sekunde.

Wenn es einmal eine Sekunde steht ist es nicht dragisch.
Wo springt der Watchdog hin wenn er auslößt, wird er überhaupt auslößen?
Zu: ?
.org 0
rjmp reset

Laut Simulator braucht der AVR ~30µs bis zum "cli". (Auf jeden Fall viel 
weniger als 1 Sekunde) Da der Timeout auf 1s steht brauche ich ihn ja 
nicht deaktivieren, oder? Das "wdr" in der Main setzt ihn dann ja 
sowieso wieder zurück.

Danke für Hilfe!

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ob der Watchdog wirklich auf eine Sekunde eingestellt ist, koennen wir 
anhand Deiner Angaben schonmal nicht ueberpruefen... Aber das Prinzip 
ist korrekt.

Der Watchdog inkrementiert einen Counter; laeuft dieser ueber, wird ein 
Reset ausgeloest. Setzt Du den Counter zurueck, faengt er natuerlich 
wieder bei 0 an zu zaehlen.

Der Watchdog "springt" bei ueberlauf nirgendwo hin, er loest einen 
"echten" Reset aus (mit Loeschen der Register-Inhalte und allem was dazu 
gehoert). Der einzige Unterschied zu einem "Pin-Reset" ist, dass noch 
ein Statusbit gesetzt wird, an dem man spaeter erkennen kann, dass der 
Watchdog den letzten Reset ausgeloest hat.

Nach dem Reset laeuft der Watchdog sofort wieder an, Du musst also 
darauf achten, dass Du ihn rechtzeitig wieder zuruecksetzt oder 
deaktivierst.


Volker

Autor: Hugo Portisch (portisch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Info!

0x18 ist b11000 (WDCE & WDE)

0xE ist b1110

Somit WDE, und die Zeitbits WDP2-0 1 1 0 (Laut Datenblatt bei 5V 1s)

die Frage war halt, weil ich pro Tag nur einen Versuch/Programmieren 
habe... (Hab keinen eigenen Programmer)

Da ich es nicht simulieren konnte wollte ich halt sicher gehen!

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.