Hallo Forum,
nachdem ich mit dem Watchdog beim ATmega16 fast am verzweifeln bin, hier
mal die Frage an euch Experten. Ich habe folgende Testroutine jeweils
mit IAR und GCC übersetzt. Das Ergebnis scheint meines Erachtens auch
okay. Die _WDR(); Instruction wird zyklisch bedient, trotzdem lande ich
regelmässig auf dem Reset-Vector. Egal welche Toolchain und ob Flash
oder Simulator, der Watchdog schlägt immer wieder zu, obwohl er resettet
wird.
Habe ich was übersehen oder funktioniert das Ding nicht beim Mega16 ?
int main( void )
{
WDTCR = 0x0A;
for (;;)
{
_NOP();
_NOP();
_WDR();
}
return 0;
}
20: WDTCR = 0x0A;
+0000002A: E00A LDI R16,0x0A Load immediate
+0000002B: BD01 OUT 0x21,R16 Out to I/O location
23: _NOP();
+0000002C: 0000 NOP No operation
24: _NOP();
+0000002D: 0000 NOP No operation
25: _WDR();
+0000002E: 95A8 WDR Watchdog reset
+0000002F: CFFC RJMP PC-0x0003 Relative jump
Bj
Keine Interrupts, das oben ist alles, wie gesagt - CPU landet auf Reset-Vektor. Im Simulator ausser "run" nichts geändert. Kann mal jemand die drei Zeilen einhacken und bei sich testen ? Bj.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.