Guten Abend zusammen
Ich habe folgendes Problem:
Bei meinem Atmega324 habe ich den Watchdog aktiviert.
Dieser Soll in meiner Hauptschleife regelmässig resetiert werden.
Seit einigen wochen klappten dies auch wunderbar. Doch seit ich einige
Änderungen vorgenommen habe, tut es nicht mehr so wie ich möchte.
Mein gesamter Code ist ziemlich umfangreich. Deshalb verzichte ich hier
auf ein Posten des gesamten Codes. Durchlesen würde Ihn sowieso niemand
:)
Hie mal meine derzeitige Main:
1 | int main(void)
|
2 | {
|
3 |
|
4 | init_ports();
|
5 |
|
6 | LED_1;
|
7 | _delay_ms(200);
|
8 | LED_0;
|
9 |
|
10 |
|
11 | GPS_CS_0; //GPS Deaktivieren
|
12 | GPS_ON_0; //GPS Deaktivieren
|
13 | //_delay_ms(100);
|
14 |
|
15 | toggle_on_off(); //GPS Einschalten
|
16 | init_soft_uart();
|
17 |
|
18 | wdt_enable(WDTO_2S); //2Sekunden Watchdog!
|
19 | sei(); //Interrupts aktivieren
|
20 |
|
21 | GSM_RST_1; //GSM Reset aufheben
|
22 |
|
23 |
|
24 | while(1)
|
25 | {
|
26 |
|
27 |
|
28 |
|
29 | ///// Wadtchdog Reset
|
30 |
|
31 | if(ucReset != 1) wdt_reset();
|
32 | else
|
33 | {
|
34 | LED_1;
|
35 | _delay_ms(10000);
|
36 | }
|
37 | ///////////
|
38 |
|
39 | //Wenn wir einen \n Terminierten String vom PC erhalten haben, parsen wir. Maximal 32Bytes!
|
40 | if(ucRX1NewData) parse_rx1buff();
|
41 | }
|
42 | }
|
Heruntergeladen wird das ganze durch den Bootloader von Peter Dannegger.
Nach dem ersten Download, klappt es und das Programm läuft normal.
Damit meine ich, zu beginn blitzt die LED kurz auf und danach ist sie
Dunkel und bleibt es auch.
Wenn ich nun jedoch einen Reset (Hardware oder mit Software) durchführe,
dann wird der Watchdog nicht mehr resetiert.
Ich verstehe nicht, was nach einem Reset anderst sein soll.
Die Led blitzt nach einem Reset im 2 Sekunden Takt (Watchdog-Zeit).
Hatt jemand schonmal ähnliche erfahrungen im Zusammenhang mit dem
Watchdog oder dem Bootloader gemacht?
Ich weiss nicht wie ich herausfinden kann, ob das Programm hängt und
wenn ja wo.
While Schleifen habe ich stets unterlassen.
In den Unterfunktionen initports und toggle_on_of sowie init soft uart
gibt es keine schleifen!
Danke schonmal