PIC30F コードが初めてデータ EEPROM からワードを読み取るとき、実際に EEPROM にあるデータではなく 0xFFFF を読み取ります。後は問題なく読めます。
- 読み取り不良の後、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
それを引き起こしている可能性のあるものの提案はありますか?