Atmega88 und Watchdog

Gast #832326
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren