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.