Написал две подпрограммы для чтения LOCKBITS.
Первая (работает) :
Код
RD_LA:
lds R16,(NVM_LOCKBITS)
ret
Вторая (не работает) :
Код
RD_LB:
lds R16,(NVM_STATUS)
sbrc R16,NVM_NVMBUSY_bp
rjmp PC-3
ldi R16,0
sts (NVM_ADDR1),R16
sts (NVM_ADDR2),R16
ldi R16,0x07 ; <- address
sts (NVM_ADDR0),R16
ldi R16,NVM_CMD_READ_FUSES_gc
sts (NVM_CMD),R16
ldi R16,CCP_IOREG_gc
sts (CPU_CCP),R16
ldi R16,NVM_CMDEX_bm
sts (NVM_CTRLA),R16
lds R16,(NVM_DATA0)
ret
По идее в результате выполнения обоих подпрограмм в R16 должно быть состояние LOCKBIT.
Но почему то вторая этого не делает !!!
Причем она же (вторая) читает все FUSEBYTE отлично (при соответствующем NVM_ADDR0).
В чём может быть дело?
PS. И более того, похоже что после выполнения второй программы при NVM_ADDR0=0x07 состояние NVM_DATA0 вообще не изменяется. Вот что в нём было до выполнения то и осталось.