Forum: Mikrocontroller und Digitale Elektronik Atmega Watchdog Timer abschalten


von Tim S. (Firma: Germany) (timex09)


Lesenswert?

Hallo,
ich habe folgendes probelm.
ich habe ein programm geschrieben das einfach nur von 0 bis 999 zählt 
und dann die zahl durch ein display ausgibt.

Ich habe jetzt das problem das nach ca. 5sec. der ATmega sich resetet.

Kann das an dem watchdog timer hängen (den ich eigentlich abgeschaltet 
habe)


WDT_off:
push     r16
wdr
in       r16,WDTCR
ori      r16,0b00011000
out      WDTCR,r16
ldi      r16,0b00000000
out      WDTCR,r16
pop      r16
ret


oder gibt es noch andere funktionen die einen Reset auslösen?

von spess53 (Gast)


Lesenswert?

Hi

>oder gibt es noch andere funktionen die einen Reset auslösen?

Ja. Z.B. dein Programm. Wenn du den WD nicht eingeschaltet hast 
(Software/Fuses), dann läuft er auch nicht.

MfG Spess

von MWS (Gast)


Lesenswert?

Bei manchen Typen muss zuerst WDRF in MCUSR gelöscht werden, sonst sind 
Änderungsversuche ohne Wirkung. Auch eine gesetzte WDTON-Fuse hat 
denselben Effekt.

von Tim S. (Firma: Germany) (timex09)


Lesenswert?

WDT_off:

    ;** 1. Phase
    wdr                   ; reset WDT
   ldi  r16,0x00
   out  MCUCSR,r16
    ;** 2. Phase
    in  r16,WDTCR      ; Write logical one to WDCE and WDE
    ori r16,0b00011000

    in  r17,SREG       ; save I Flag
    cli                   ; we have only 5 cycles to reset WDE

    out WDTCR,r16

    ;** 3. Phase
    ldi r16,0x00   ; Turn off WDT
    out WDTCR,r16

    out SREG,r17       ; restore I Flag
    ret


probem ist immernoch vorhanden

spannungsabfall also brown-out kann es auch nicht sein der wurde auch 
deaktiviert

von MWS (Gast)


Lesenswert?

Man kann auch MCUSR abfragen um zu erkennen, welche Sorte Reset es denn 
war. Ansonsten gibt's noch einige Gründe, warum ein Controller einen 
Reset ausführt.

von Dietrich L. (dietrichl)


Lesenswert?

Nochmal zur Erinnerung (spess53 sagte es schon):
Auch ein Fehler im Programm kann dazu führen (Sprung ins Nirgendwo, 
durchlaufen des leeren Flashs und ankommen bei Adresse 0; Interrupt ohne 
ISR...).

Gruß Dietrich

von Tim S. (Firma: Germany) (timex09)


Lesenswert?

> Auch ein Fehler im Programm kann dazu führen (Sprung ins Nirgendwo,
> durchlaufen des leeren Flashs und ankommen bei Adresse 0; Interrupt ohne
> ISR...).


Da das Programm nicht so lang ist muss ich das glaube punkt für punkt 
noch mal durchgehen.

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.