Forum: Mikrocontroller und Digitale Elektronik ATMega168: Reset


von Peter Reither (Gast)


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!

von Stefan E. (sternst)


Lesenswert?

Peter Reither schrieb:
> Beim ATMega8 hat der Code noch
> funktioniert.

Sicher nicht, denn ...
1
  WDTCSR &= ~(1 << WDE); //disable watchdog
auch beim Mega8 kann man den Watchdog so nicht ausschalten.

von g457 (Gast)


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

von Peter Reither (Gast)


Lesenswert?

gut, jetzt habe ich den Fehler, danke

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.