- Код: Выделить всё • Развернуть
commandWriteChip:
clr ZH ; 0 адресс страницы
clr ZL
; SPMEN – разрешает вызов команды SPM в следующих 4х тактах
; PGERS – команда на очистку страницы флеша
ldi R17, (1<<PGERS) | (1<<SPMEN) ; в R17 передаётся параметр в регистр SPMCR
call commandSPM
ldi R17, (1<<RWWSRE) | (1<<SPMEN) ; ре-инициализация страницы
call commandSPM
; выше я по идее очистил страницу программной памяти, в которую буду писать
ldi R18, 0x20 ; количество слов в странице (32)
ldi ZH, 0b00000000 ;
ldi ZL, 0b00000000 ;
asddd:
; ниже 4 комманды которые прописуются в регистр r0:r1 и в итоге они должны быть записаны в страницу
ldi r16, 0xA0
mov r1, r16
ldi r16, 0xBB
mov r0, r16
adiw ZH:ZL, 2 ; инкремент адресса позиции слов
ldi R17, (1<<SPMEN) ; в R17 передаётся параметр в регистр SPMCR
call commandSPM ; собственно запись во временую страницу
dec R18
brne asddd
;ниже идет запись временной страницы в память программы по адреессу начиная с 0x20
ldi ZH, 0b00000000
ldi ZL, 0b00010000
; PGERS – команда на очистку страницы флеша
ldi R17, (1<<PGWRT) | (1<<SPMEN) ; в R17 передаётся параметр в регистр SPMCR
call commandSPM
ldi R17, (1<<RWWSRE) | (1<<SPMEN) ; ре-инициализация страницы
call commandSPM
до записи в программе идет:
- Код: Выделить всё • Развернуть
0000: 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0010: FF FF FF FF 00 00 FF FF FF FF FF FF FF FF FF FF | ................
0020: 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0030: FF FF FF FF 00 00 FF FF FF FF FF FF FF FF FF FF | ................
0040: 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0060: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
после стирания
- Код: Выделить всё • Развернуть
0000: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0010: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0020: 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0030: FF FF FF FF 00 00 FF FF FF FF FF FF FF FF FF FF | ................
0040: 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0060: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
после записи
- Код: Выделить всё • Развернуть
0000: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0010: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0020: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0030: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0040: 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0060: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
вот как бы показывается что оно стирает, а моих данных не пишит, так же пробовал писать страницу не на 0х20 адресс, а на 0х00, затертый мною до этого.