Forum: Mikrocontroller und Digitale Elektronik Atmega88 Watchdog ISR


von Sebastian (Gast)


Lesenswert?

Hallo,

ich programmiere momentan einen Atmega88. Ich möchte einen Watchdog 
implementieren. Als Hardware Debugger benutze ich einen DRAGON.

Ich habe zwei Funktionen geschrieben:

1) Init Watchdog

void Watchdog_Init (void)
{
  // Watchdog Interrupt enable
  // Prescaler 0 --> Timeout gleich 16ms
  // Enabel Watchdog ISR

  WDTCSR |= 0x40;
}

2) ISR

SIGNAL(SIG_WATCHDOG)
{
  TEMP_WARN_ON;
  while(1);
}

Es wird zwar ein Watchdog Signal ausglöst. Jedoch resetet sich der 
Atmega88 komplett. Es wird nie (zumindest scheint es so) die ISR 
angeprungen. Zum Testen setzte ich eine LED auf leuchten in der ISR, 
aber sie bleibt immer dunkel.

Hat jemand vieleicht einen Tip.

Danke schon mal im voraus,
Sebastian

von Jo (Gast)


Lesenswert?

Wie hast du die WDTON-Fuse gesetzt?

von Sebastian (Gast)


Lesenswert?

Ok. Sorry for wasting your time.

SIGNAL(SIG_WATCHDOG_TIMEOUT)
{
  TEMP_WARN_ON;
  while(1);
}

Dann funktionierts.

:-)

von Jörg X. (Gast)


Lesenswert?

Du meinst natürlich
[c]
ISR(WDT_vect) {
//...
}
;)

SIGNAL() gilt als veraltet, das wollen die avrlibc-Entwickler 
'loswerden'.

hth. Jörg

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.