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!