Пытаюсь записать в флеш память программ по адресу 400h и 401h значение 0. Но не работает.
Чип ATmega48. Пробовал на ATmega88, тоже не работает. В симуляторе работает, в железе нет. EEPROM и спящий режим не использую.
Где я ошибся?
Код
test:
clr r0
clr r1
ldi ZL, Low(0x400)
ldi ZH, High(0x400)
ldi XL, (1 << SELFPRGEN)
rcall Do_SPM; записать r1:r0 в буфер
ldi XL, (1 << PGWRT) | (1 << SELFPRGEN)
rcall Do_SPM; записать буфер во флеш
rjmp P0
Do_SPM:
push XL
in XL, SPMCSR
sbrc XL, SELFPRGEN
rjmp Do_SPM
wait_EE_Do_SPM:
sbic EECR, EEPE
rjmp wait_EE_Do_SPM
pop XL
cli
out SPMCSR, XL
spm
sei
ret