Forum: Compiler & IDEs Atmega88 und Watchdog


von Loipe (Gast)


Lesenswert?

Hallo,

ich habe ein Programm im Atmega88, dass sich immer wieder mal aufhängt.
Jetzt habe ich den Watchdog aktiviert und stellte folgendes fest.

Hier ein kurzer Codeausschnitt
1
int main(void)
2
{
3
  //wdt_disable();
4
  wdt_enable(WDTO_500MS);
5
6
  PRR = 1<<PRTWI | 1<<PRSPI | 1<<PRADC;
7
8
  DDRD=0xEF;   //0b11101111
9
  PORTD=0x18;  //0b00011000
10
11
  DDRB=0xFF;
12
  PORTB=0x00;
13
14
  DDRC=0xFF;
15
  PORTC=0x00;
16
17
  if(bit_is_set(MCUSR,WDRF))  // Bedingung, ob Watchdog ausgelöst wurde
18
    PORTD &= ~_BV(PD3);  //LED  
19
    
20
  //softuart_init();
21
22
  read_EEPROM();
23
24
  TIMER2_init();
25
26
  init_2138_10();
27
28
  EIB_init();
29
30
  sei();
31
32
  for(;;)
33
  {
34
    wdt_reset();
35
    EIB_check();
36
  }
37
}

Einen Tag später nachdem ich den Controller eingebaut habe, leuchtete 
die LED. D.H. es wurde der Watchdog ausgeführt.
So nun stehe ich da und finde den Fehler in meinem Programm nicht. Gibt 
es noch weiter Befehle, Hilfen, die mich auf der Suche nach dem 
Programmfehler unterstützen können?
Die Funktion EIB_check() dauert laut AVR-Studio Simulation ca. 1,5ms

Gruß Alex

von Timmo H. (masterfx)


Lesenswert?

Bissl wenig Code wie ich finde. Du arbeitest scheinbar mit Interrupts, 
bloß wie sehen die ISRs aus? Pollst du dort irgendwo?

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.