Forum: Mikrocontroller und Digitale Elektronik AT90S2313 Watchdog/Assembler


von Hugo P. (portisch)


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!

von Volker S. (volkerschulz)


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

von Hugo P. (portisch)


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!

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.