Ich kämpfe jetzt gerade mit dem Watchdog, und zwar gibt es das Problem dass er, wenn er angeschlagen hat, in einer Endlos Reset Schleife gefangen ist.
Ich hab den empfohlenen Code aus der AVR Lib eingefügt mit dem man den Watchdog schnell abschalten kann, nutzt aber nichts:
Und am Anfang von main steht das:Code:unsigned char mcusr_mirror __attribute__ ((section (".noinit"))); void get_mcusr(void) \ __attribute__((naked)) \ __attribute__((section(".init3"))); void get_mcusr(void) { mcusr_mirror = MCUSR; MCUSR = 0; wdt_disable(); }
Ist ein Atmega644 mit 16Mhz mit max Startup Zeit für den Quarz. Die Watchdog Fuse ist deaktiviert, habs auch schon mit und ohne Fuse getestet.Code:if (mcusr_mirror & (1 << WDRF)) { LED_gr_ein;LED_rot_ein; lcd_gotoxy(0,0);lcd_puts_p(PSTR("!WATCHDOG! ")); Motor_li_stop();Motor_re_stop();Mower_faststop(); while(1); } else wdt_enable(WDTO_1S); sei();
Was kann man noch probieren?
LG!







Zitieren

Lesezeichen