Den64 0 20 января, 2018 Опубликовано 20 января, 2018 · Жалоба Пытаюсь записать в флеш память программ по адресу 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aiwa 0 27 января, 2018 Опубликовано 27 января, 2018 · Жалоба Первым делом стоило бы проверить фьюз SELFPRGEN. The ATmega48/V has no separate Boot Loader section, and the Store Program Memory (SPM) instruction is enabled for the whole Flash if the SELFPRGEN fuse is programmed (“0”). Otherwise the SPM instruction is disabled. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться