我的 PIC30F 代码第一次从数据 EEPROM 中读取一个字时,它读取的是 0xFFFF 而不是 EEPROM 中实际的数据。之后读的很好。
- 读错后,我检查了 W1,它确实有正确的地址
- 数据 EEPROM 中没有值为 0xFFFF 的字
- 我检查了电源:它是 5.13 V
- 如果我在表格读取指令之前中断并逐步完成它,它就可以了
- 我知道 NVMADRU 和 NVMADR 不参与读取,但我检查了它们,它们的值在好读取和坏读取之间没有变化
- 这是一个 dsPIC30F5011
- 我检查了勘误表,没有发现任何关于此类问题的参考
- 我正在使用 PICkit II 完成 MPLAB 8 的调试功能
- 我正在使用 PICkit II 完成 MPLAB 8 的调试功能:我重置,然后运行,但它失败了
- 如果我将代码放在一个紧密的循环中,直到值正确,并计算迭代次数,我发现循环需要 2339 次才能正确读取
EEPROM读取代码:
_ReadEEWord:
;--------------------------------------------------------------------------------
; Read a word from Data EEPROM
; Entry W0 Word address relative to the start of Data EEPROM
; Exit W0 Word at that location
; Uses W1, Table pointer
;--------------------------------------------------------------------------------
; Start address of Data EEPROM
#define DATAEE_START 0x7FFC00
; Setup pointer to EEPROM memory
mov #0x7F,W1 ; Set the table pointer
mov W1,TBLPAG ; to the page with the EEPROM
add W0,W0,W0 ; Convert the word address to a byte address
mov #0xFC00,W1 ; Add the start of EEPROM
add W1,W0,W1 ; to the address
nop
nop
nop
; Return the EEPROM data
tblrdl [W1],W0 ; Read the EEPROM data
nop
nop
nop
return
关于可能导致这种情况的任何建议?