Hallo zusammen,
Ich versuche seit ein paar Stunden mit dem Data EEPROM des PIC18F26K40
klar zu kommen und schaffe es noch nicht einmal, ein Byte zu lesen.
Mein Programm besteht darin, dass offenbar die Register NVMADRH/NVMADRL
nicht beschreibbar sind.
Ich nutze den Code aus dem Datenblatt (brauche aber das High-Byte nicht,
die Adresse steht im WREG).
1 | bcf NVMCON1,NVMREG0
|
2 | bcf NVMCON1,NVMREG1
|
3 | movwf NVMADRL
|
4 | clrf NVMADRH
|
5 | bsf NVMCON1,RD
|
6 | movf NVMDAT,w
|
Ich kann beim Debuggen mit Einzelschritten genau sehen, dass die beiden
Adressregister nicht übernommen werden. Wenn beispielsweise in WREG eine
"4" stünde, würde ich erwarten, dass am Ende NVMADRH = 0 und NVMADRL = 4
ist. Stattdessen erhalte ich 0x26 und 0x16. Woher diese Werte kommen,
weiß ich nicht. Ich kann die Register auch nicht im Watch-Window ändern,
nach dem nächsten Einzelschritt steht wieder dieser Unsinn in den
Registern. (Laut Datenblatt sei dies übrigens gar nicht möglich, NVMADRH
hätte nur die beiden unteren Bits implementiert und die restlichen Bits
würden mit "0" gelesen!)
Die PIC sind mittlerweile schon ein paar Monate am Markt, dass kann doch
kein prinzipielles Problem sein - im Errata-Sheet finde ich nichts
diesbezügliches.
Weiß jemand weiter?
Viele Grüße,
Michael