Ксения (08.12.2008 02:29, просмотров: 327) ответил бомж на Гляньте в бутлоадер, например внутри или по ссылке. Там всё чётко работает.
Глянула и страшно удивилась! Там все один в один, как как в даташите, за одним крайне странным добавленим - после команды SPM вставили FFFF (прямо как данные!) и команду NOP (нет операции):
extern void spmWriteWord(unsigned char __flash *addr, unsigned int data);
----------------------------------------------------
spmWriteWord:
movw r1:r0, r19:r18 //data
ldi r22, (1 << SPMEN)
rjmp spmSPM
.............................................
spmSPM:
movw r31:r30, r17:r16 // addr
rcall spmWait
in r20, SREG // тут они состояние разрешения/запрета прерывания сохраняют в 20-м регистре
cli
out SPMREG, r22
spm
dw 0xFFFF // Вот это что такое? И чего МК станет делать, когда досюда дойдет?
nop
out SREG, r20 // восстанавливают разрешение/запрет прерывания, как было до входа в процедуру
ret