AT90S2313 Watchdog/Assembler

OP #1598302
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:
1
;------------------------------------------------------------------------------------------
2
;********************************************************************
3
;* Main program
4
;********************************************************************
5
  cli 
6
  ldi  temp0, 0x18
7
  out  WDTCR,temp0
8
  ldi  temp0, 0xE
9
  out  WDTCR,temp0
10
  sei
11
Main:
12
  wdr
13
//do some stuff (~10ms Loop-Time)
14
  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: ?
1
.org 0
2
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!
#1598400
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
OP #1598576
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

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.

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.