Цитата(Сергей Борщ @ Jul 16 2007, 17:28)

А есть ли у вас внешняя подтяжка на кнопке PROG? Возможно просто не хватает внутренней подтяжки и вместо вашего приложения вы иногда принудительно попадаете в загрузчик? Опять же Watchdog в вашей программе используется?
Да! Действительно нет внешней подтяжки! Забыл про это. В бутлодере на кнопке PROG нет даже внутренней подтяжки. А достаточно ли внутренней подтяжки для бутлодера? Можно ли повредить порт микроконтроллера, закорачивая его на землю без подтяжки?
По-моему, в оригинальном loader.c содержится ошибка:
#if !defined(WDTCR) && !defined(__IOM8_H)
#define WDTCR WDTCSR
#endif
#if defined(__IOM16_H) || defined(__IOM32_H)
WDTCR = (7 << WDP0) | (1 << WDE);
#else
#if defined(__IOM8_H)
>>>> WDTCR = (1 << WDTOE) | (1 << WDE);
#else
>>>> WDTCR = (1 << WDCE) | (1 << WDE);
#endif
WDTCR = (7 << WDP0) | (1 << WDE);
#endif
...У меги8 нет бита WDTOE. Т.е. отмеченные строки следовало бы поменять местами. Кстати, если попытаться откомпилировать оригинальный bootldr32 компилятор (IAR 4.12A) выдаст ошибку:
Error[Pe020]: identifier "WDTCSR" is undefined D:\...\AVR231\Source Code\IAR\loader.c 137
Поэтому, я просто закомментировал кусок
// #if !defined(WDTCR) && !defined(__IOM8_H)
// #define WDTCR WDTCSR
// #endif
В основной программе WatchDog не используется. А надо ли?
Только что обратил внимание, AES bootloader занимает:
1 902 bytes of CODE memory
2 048 bytes of DATA memory (+ 9 absolute ) <<<<
Может в этом проблема?
В бутлодере в начале main функции добавил:
PORTA = (1<<PA7); // Pull-Up on the PROG
... Безрезультатно