Заполнить надо весь temp буфер.
После этого писать.
Если хотите записать только 2 байта - то надо прочитать содержимое всей страницы, изменить 2 байта, и записать модифицированную страницу в temp буфер, потом стереть страницу, и инициировать запись страницы.
Цитата
почему не пишутся данные во флеш
У вас функция зацикливается здесь:
Код
Wait_spm:
...
SBRC R19, 0
RJMP Wait_spm
OUT SPMCR,R16
SPM
SEI <--- к тому же запись в SPMCR происходит при разрешенных прерываниях!!!!
...
while_EEPROM:// not write to EEPROM
SBIC 0x1C, 0x01
RJMP while_EEPROM
call Wait_spm //enable write to prog. memory
Каждая функция (вызываемая CALL'ом) должна заканчиваться RET'ом.