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:
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();
    }
Und am Anfang von main steht das:
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();
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.

Was kann man noch probieren?

LG!