Hallo Bootloader Experten,
ich habe den UDP Bootloader von http://www.avrportal.com/?page=avrnet
für den ATmega644 angepasst. Jetzt habe ich das Problem, das nach einem
Watchdog reset nach dem programmieren der watchdog aktiv bleibt und mein
Controller sich aufhängt.
Wenn ich ohne Bootloader arbeite und einen Watchdog reset herbeiführe
hat folgender code am Anfang des Hauptprogramms geholfen:
siehe
http://www.nongnu.org/avr-libc/user-manual/group__avr__watchdog.html
1 | uint8_t mcusr_mirror __attribute__ ((section (".noinit")));
|
2 |
|
3 | void get_mcusr(void) \
|
4 | __attribute__((naked)) \
|
5 | __attribute__((section(".init3")));
|
6 | void get_mcusr(void)
|
7 | {
|
8 | mcusr_mirror = MCUSR;
|
9 | MCUSR = 0;
|
10 | wdt_disable();
|
11 | }
|
Was aber muss ich am Anfang des Bootloaders schreiben damit, wenn der
bootloader aktiviert ist, sich der controller nach einem WD-reset nicht
in einer endlos-wdreset-loop befindet die nur noch mit power-on reset zu
unterbrechen ist?
Viele Grüsse