По команде выходит в основную программу то же нормально. Вот кусок кода (команда сбрасывает FBoot).
int main(void)
{
MCUCR = (1<<IVCE);
MCUCR = (1<<IVSEL);
...
if(!FBoot){
FBoot = 0;
MCUCR = (1<<IVCE);
MCUCR = (0<<IVSEL);
asm("jmp 0x0000");
}
return 0;
}
Основная прога тоже работает, но вот переход в bootloader не идет, хоть ты тресни, ни как не пойму почему...
Вот кусок основной проги:
int main(void)
{
...
if(FBoot){
asm ("jmp 0x1E000");
}
return 0;
}
Причем при просмотре в эмуляторе (работаю в связке WinAVR+AVRStudio 4.19) jmp 0x1E000 проходит верно (на адрес 0x0F000, bootsector = 8k) и сам bootloader грузится в эмуляторе туда же и на симуляторе выполняется верно, но реально загрузчик после перехода не работает. Причем не работает сама прога boot-a, а не прерывания.
Всю голову уже сломал, где засада не могу сообразить, может кто из форумчан пнет в нужном направлении?


