Forum: Mikrocontroller und Digitale Elektronik PIC18F26K40 Data EEPROM


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Michael (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Volker S. (vloki)


Bewertung
0 lesenswert
nicht lesenswert
11.1.4 NVM UNLOCK SEQUENCE ?

von Michael (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Volker S. schrieb:
> 11.1.4 NVM UNLOCK SEQUENCE ?

Danke, aber das gilt nur für das Schreiben - war schon immer bei den PIC 
so. Selbst wenn man das (bei den alten Typen) nicht gemacht hätte, hätte 
man die Adressen schreiben können, nur das "WR"-Bit hätte sich 
anschließend nicht setzen lassen.

von Volker S. (vloki)


Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:
> Danke, aber das gilt nur für das Schreiben...

Hmmm, da ist was dran ;-)
Ich nehme an /CPD Config-Bit ist gesetzt?

von Michael (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Volker S. schrieb:
> Ich nehme an /CPD Config-Bit ist gesetzt?

Ja, das ist normalerweise gesetzt. Das sollte aber nur eine Auswirkung 
haben, wenn man den Speicher von außen mit einem Programmer/Debugger 
auslesen will. Aus dem Code heraus sollte das Lesen eigentlich immer 
funktionieren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.