Forum: Mikrocontroller und Digitale Elektronik AT Mega 16 - Watchdog Problem


von Bj (Gast)


Lesenswert?

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

von Stefanie B. (sbs)


Lesenswert?

Interrupts noch offen/falsch initialisiert?

Gruss
Stefan

von Bj (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.