Software Reset AVR

Persönliche Seite #843216
Lesenswert?

Moin,

ich möchte den AVR resetten wenn ich ein bestimmtes Zeichen über den 
USART empfange...

Nur irgendwie macht der dann Resets ohne Ende....

Hier mal ein bißchen Code...
1
void reset(void)
2
{
3
  wdt_enable(WDTO_250MS);
4
  while(1);  //warten das der Watchdog den AVR resettet
5
}
1
ISR(USART0_RX_vect)
2
{
3
  uint8_t temp=UDR0;
4

5
  if(temp=='R')
6
      reset();
7
}

Muss ich im main() noch was erledigen?

AVR: ATMega644p
Compiler: AVR-GCC
Persönliche Seite #843316
Lesenswert?

> Das beantwortet aber nicht die Frage ob das wdt_disable() reicht..

Häh? In dem Link steht doch, dass wdt_disable(); nur der zweite Hälfte 
vom Weg ist. Die erste Hälfte ist das WDRF-Bit im MCUSR Register zu 
löschen.

Und das als erstes in main() zu machen, kann ggf. schon zu spät sein.

Hier steht es nochmal:
http://www.nongnu.org/avr-libc/user-manual/group__avr__watchdog.html

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