Polaris 0 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Добрый день, пришлось заняться написанием загрузчика для 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 выхода не происходит. Заранее спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Прерывания запретить в asm вставке, регистры сохранить в стеке? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Polaris 0 5 июля, 2018 Опубликовано 5 июля, 2018 · Жалоба Прерывания запретить в asm вставке, регистры сохранить в стеке? Прерывания были отключены, регистры не используются в тексте существенным образом. Проблема была все-таки в логике программы, так что с процессором все в порядке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться