ATMega168: Reset

Gast #3135235
Lesenswert?

Hallo!

In einer funktionierenden Schaltung habe ich einen ATMega8 durch einen 
ATMega168P ersetzt. Der Neue zeigt allerdings ein seltsames Phänomen: 
Wenn ich den Watchdog verwende um einen Reset durchzuführen, führt er 
scheinbar immer fortwährende Resets aus.
1
int main(void){
2
  WDTCSR &= ~(1 << WDE); //disable watchdog
3
}
4

5
void reset(void){
6
  WDTCSR &= ~((1 << WDP2) | (1 << WDP1) | (1 << WDP0));
7
  WDTCSR |= (1 << WDE); //enable watchdog
8
}

Im Laufe des Programmablaufs wird die reset() Methode aufgerufen. Doch 
sobald dies einmal geschehen ist, hängt der ATMega in einer 
Resetschleife. Dies bestätigt auch das Debugging mit DebugWire: Bevor 
die Methode reset() aufgerufen wird läuft alles normal, doch danach wird 
immer wieder die int main(void) aufgerufen.

Habt ihr eine Idee woran es liegen kann? Beim ATMega8 hat der Code noch 
funktioniert.

Danke im Voraus!
Gast #3135271
Lesenswert?

> Habt ihr eine Idee woran es liegen kann?

Ich vermute es liegt in erster Linie daran, dass Du das Datenplatt nicht 
gelesen hast. Die Lösung dazu ist so einfach wie offensichtlich: 
Datenplatt besorgen und auch lesen. Insbesondere, aber nicht 
ausschließlich, die Kapitel über den Watchdog ;-)

HTH

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren