Добрый день всем! недавно подсел на atmel и решил разобраться полностью с этим зверем, решил написать свой велосипед, ой бутлоадер. Но к сожелению в протеус не пишутся страницы, то есть вроде бы все делаю по мануалам, а записуется страница в область программной памяти с FF коммандами, моих команд сохраненных в временной странице как бы и нету. Вот кусок кода с области bootloadera, кто знает в чем беда, направте в нужное русло пожалуйста.
Код:
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, затертый мною до этого.