Hallo zusammen,
habe heute probiert den Wachhund zum Laufen zu bewegen.
Folgendes habe ich bei der Initialisierung:
ldi temp, (1<<WDCE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0)
out WDTCR, temp
Debugge ich mit dem JTAG werden die WDP Bits jedoch nicht gesetzt.
Im "echten" Programm ist es auch so dass der Watchdog scheinbar sehr
schnell abläuft, sodass andauernd ein Reset ausgeführt wird. Zum Testen
leuchtet beim Reset bei mir eine LED auf, die nach 600ms per Timer
abgeschaltet wird. Das funktioniert soweit auch. Aktiviere ich den
Watchdog leuchtet die LED aber immer, zumindest fürs Auge! Da ich den
Watchdog auf Teiler 2058 gestellt habe müsste er aber erst nach ca. 2s
abgelaufen sein.
Also steht der Watchdog wahrscheinlich auf Teiler16 = 15ms.
Kennt jemand dieses Problem oder hat einen Tipp wie ich an das Problem
rangehen kann.
Hier ist der vollständige Code:
Bei Initialisierung soll LED aufleuchten und durch Ablauf des Timers
nach 0,6s erlischen. Dann soll nach 2s der Watchdog den reset auslösen.
Programm ist nur als Test des WDR gedacht:
1
init: //-->STACK
2
ldi temp, LOW(RAMEND)
3
out SPL, temp
4
ldi temp, HIGH(RAMEND)
5
out SPH, temp
6
7
ldi temp, 0x00
8
sts TCNT1H, temp
9
ldi temp, 0x00
10
sts TCNT1L, temp
11
12
;Berechnung-->7,37Mhz/65536/64 = 1,757 --> ca. 0,6s
Da Du den AVR-Typ nicht nennst, kann man nur raten: Üblicherweise
kannst Du den Watchdog nicht einfach in einem Befehl verändern, sondern
musst eine Sequenz einhalten, z.B. WDCE und WDE setzen und danach
innerhalb von vier Zyklen den gewünschten Wert schreiben.
Näheres verrät Dir das freundliche Datenblatt.
Hallo,
> Da Du den AVR-Typ nicht nennst, kann man nur raten:
Sorry, es handelt sich um einen AtMEga162.
>sts TCNT1L, temp
Hier sollte der Befehl "out" sein, habe beim reinkopieren Mist gebaut.
>Üblicherweise>kannst Du den Watchdog nicht einfach in einem Befehl verändern, sondern>musst eine Sequenz einhalten, z.B. WDCE und WDE setzen und danach>innerhalb von vier Zyklen den gewünschten Wert schreiben.
Das war der Fehler. Vielen, vielen Dank!
Gruß,
guitero