Есть рабочая программа. Возникла задача освободить младшую область FLASH.
Что сделано:
- вектора прерываний и сброса перенесены на $FE00 (BOOT)
- введена установка IVSEL (перенос векторов прерываний на BOOT)
- все команды LPM заменены на ELPM, с установкой RAMPZ0
- фузы BOOTSZ0/1 =1 (BOOT = $FE00)
- фузы BOOTRST = 0 (сброс на BOOT)
Структура программы:
.org $0000
... пусто
...
.org $8000 ; область процедур
.include "xxx"
...
.include "zzz"
.org $FE00 ; сброс - начало работы
jmp RST
jmp ... вектора прерываний
...
jmp ...
RST: ; начало работы
настройка стека
ldi R16,(1 < < IVCE) ; настройка адреса векторов прерывания
out MCUCR, R16
ldi r16, (1 < < IVSEL)
out MCUCR, R16
... и т.д.
Компилятор ошибок и предупреждений не дает. В листинге все адреса как надо.
Программа не работает :((
Что ещё я мог забыть ???