Добрый день,
пришлось заняться написанием загрузчика для Tiny45, с которым не работал уже тысячу лет, и возникла проблема с записью флэш при помощи SPM.
Во внутренний буфер все пишется замечательно, а вот со стиранием/записью страницы есть вопросы.
Код стирания, например выглядит вот так:
Код
LED_PIN_Set;
#asm
movw R30, R10
ldi R22, 0x03
out 0x37, R22
spm
#endasm
LED_PIN_Clear;
while (SPMCSR & (1 << SPMEN));
Адрес страницы лежит в R10, это железно, так как страница пишется/стирается. Но вот выхода из SPM не происходит, так как светодиод загорается (LED_PIN_Set), но уже не гаснет, то есть до команды LED_PIN_Clear выполнение не доходит.
Фьюз SELFPRGEN включен.
Есть ли у кого-нибудь идеи, почему это может происходить? Потому как наполнение буфера для страницы работает, хотя там тоже используется SPM, хотя и не происходит изменений во флэш. Сама страница тоже пишется, но один раз - из пишущего страницу SPM выхода не происходит.
Заранее спасибо!