При работе с Atmega128L cтолкнулся с такой проблемой: 1. При BOOTRST=0 Atmega128L стартует с адреса 0000, а не с 0f000 - как хотелось бы. Если делаю JMP 0f000 (команда находится по адресу 0000) на код размещенный с адреса 0f000 , то программа стартует и выполняется (если прерывания запрещены) 2. Если вектра прерывания и код размещаю с адреса 0f000 (в BootLoader-е), то при первом же прерывании Atmega128L уходит на Reset и начинает выволняться с адреса 0000, (IVSEL=1). 3. Если вектра прерывания размещаю с адреса 0000, а код размещаю с адреса 0f000 (в BootLoader-е) то прерывания обрабатываются нормально (IVSEL=0).
Использую компилятор IAR C/C++ Compiler for AVR 4.10B/W32 [Evaluation] (4.10.2.3) Программирую Atmega128 программой AvReal ver1.25rev3 (через Xilinx-Parallel Cable III).
Fuse биты следующие: CKOPT=0,CKSEL=F,SUT=3,BOOTRST=0,BOOTSZ=0,WDTON=0,M103C=1,BODEN=0,BODLEVEL=1, BLB0=3, BLB1=3,OCDEN=1,JTAGEN=0,EESAVE=1.
|