Ich würde zu Testzwecken mal den Watchdog rausnehmen. Meinen M 644 bekomme ich nur mit Watchdog zum laufen, wenn ich am Anfang des Codes den Watchdog abschalte, denn dafür bleiben nur 4 Takte Zeit. Dann muss der Watchdog regelmäßig zurückgesetzt werden, wenn er aktiviert ist. Ich mache das immer in der Hauptschleife.
Watchdog initialisierung beim Mega 644.Code:$asm Wdt_off: ; Turn off global interrupt cli ; Reset Watchdog Timer wdr ; Clear WDRF in MCUSR in r16, MCUSR andi r16, wdrf;(0xff & (WDRF)) Out Mcusr , R16 ; Write logical one to WDCE and WDE ; Keep old prescaler setting to prevent unintentional time-out in r16, WDTCSR ori r16,wdce; (1<<WDCE) | (1<<WDE) Out Wdtcsr , R16 ; Turn off WDT ldi r16,wde; (0<<WDE) Out Wdtcsr , R16 $end Asm







Zitieren

Lesezeichen