Gast
#3425238
Hallo zusammen, ich steh irgendwie aufm Schlauch und komm nicht weiter, vielleicht hat einer von euch ne Idee. Ich hab nen Bootloader auf nem ATMEGA328P ab 0x7000 (byte adresse), dieser wird nach einem Power-On Reset auch korrekt angesprungen, meldet sich und funktioniert soweit. Ins Hauptprogramm springe ich dann via void (*start)( void ) = 0x0000; Auch das Hauptprogramm startet und arbeitet einwandfrei. Aaaber ich komme leider nicht wieder zurück in den Bootloader per Software, noch nicht einmal via Hardware-Reset-Taster. Beide Varianten haben denselben Effekt. Hardware: Reset Pin low ziehen Software: cli(); wdt_enable(WDTO_15MS); while (1); Der Bootloader startet erneut aber scheint sich dann periodisch alle paar ms zu resetten so als ob der Watchdog zuschlägt. Ich habe aber sowohl im Bootloader als auch im Anwendungsprogramm den Befehl wdt_disable(); direkt am Anfang. Im Anwendungsprogramm funktioniert das auch, d.h. wenn ich ohne Bootloader zu flashen den watchdog reset ausführe startet das Anwendungsprogramm neu und läuft einwandfrei. Direkt die Bootloaderadresse anspringen klappt leider auch nicht: void (*bootloader)( void ) = (void*)0x7000; bootloader(); Da geht dan gar nix. Ohne Bootloader läuft der PC offenbar wie erwartet hoch bis zum Überlauf und das Hauptprogramm startet korrekt. Jemand ne Idee? Vielen Dank für eure Hilfe :)
