Hallo,
Ich möchte dass eine Variable während eines Watchdog Resets (ATMega8)
erhalten bleibt und habe daher die Variable in die Sektion .noinit
getan:
1 | u08 volatile baudval __attribute__((section(".noinit")));
|
Die Variable wird also nur initialisiert wenn der Reset nicht durch den
Watchdog erfolgt:
1 | if (MCUCSR != (1<<WDRF)) { //Wenn kein Watchdog reset
|
2 | baudval = baud9600val;
|
3 | }
|
Direkt nach dem Code gebe ich die Variable aus. Nach einem Power-On
steht in der Variable der gewünscht Wert, nach einem Watchdog Reset
jedoch immer 0. Testeshalber habe ich direkt vor der Watchdog
Aktivierung die Variable mal auf einen Wert gesetzt und bin dann in
eine Endlosschleife gegangen:
1 | baudval = 42;
|
2 | wdt_enable(WDTO_15MS);
|
3 | _delay_ms(200.0);
|
Die Variable ist jedoch nach dem Reset weiterhin Null.
Kann mir jemand sagen wo die Ursache dafür liegt?