Forum: Mikrocontroller und Digitale Elektronik MPLAB X und EEPROM Problem


von Bad U. (bad_urban)


Lesenswert?

Hallo zusammen,

ich habe ein kleines Problem mit MPLAB X in Verbindung mit dem EEPROM 
des PIC18F46k80.
Ich nutze das EEPROM zum Speichern von Einstellungen. Diese würde ich 
auch gerne beim neu Flashen des Programmspeichers beibehalten. Erst 
dachte ich, das würde mit der Preserve EEPROM Einstellung gehen. Wie ich 
mittlerweile herausgefunden habe, bedeutet diese nur, dass das EEPROM 
nicht vom PICKIT3 beschrieben wird. Gelöscht wirds aber trotzdem. 
Deshalb habe ich die Erase All Option deaktiviert.
Der EEPROM Inhalt wird zwar jetzt nicht gelöscht, dafür bekomme ich aber 
eine Fehlermeldung beim Flashen, dass Speicherstellen nicht 
übereinstimmen. Das liegt wohl daran, dass das Flasch auch nicht 
gelöscht wurde.
Das Verhalten ist reproduzierbar. Ändere ich nichts am Programm, 
funktioniert das Flashen ohne Erase Option einwandfrei.

Weiß von Euch vielleicht jemand wie man das hinbekommen kann, dass das 
Flash gelöscht wird, das EEPROM aber nicht?

EDIT: Ich nutze MPLABX 2.00.

: Bearbeitet durch User
von Chris B. (dekatz)


Lesenswert?

.....Preserve EEPROM .... Erase All Option deaktiviert....

Hast du schon das Häckchen bei "EEPROM" rausgenommen? (3. Eintrag von 
Oben)

von Bad U. (bad_urban)


Angehängte Dateien:

Lesenswert?

Chris B. schrieb:
> .....Preserve EEPROM .... Erase All Option deaktiviert....
>
> Hast du schon das Häckchen bei "EEPROM" rausgenommen? (3. Eintrag von
> Oben)

Ja, das hab ich.

Wie gesagt. Das Problem tritt auf wenn ich Erase All deaktiviere. Aber 
das warum erschließt sich mir nicht. Es scheint so, als würde das alte 
Programm mit dem neuen verglichen, vor dem Flashen. Was für mich keinen 
Sinn macht... Aber vielleicht ists ja auch ganz was anderes. Ich komm 
halt an dem Punkt einfach nicht weiter...

EDIT: hab noch mal nen Screenschot von der Fehlermeldung angehängt.
nochn EDIT: beim ersten Fehler Screenshot hatte ich versuchsweise 
eingestellt, dass das Pickit sich die zu programmierenden Speicher 
selbst aussuchen kann. Und da war dann auch wieder das EEPROM dabei.

: Bearbeitet durch User
von Carsten M. (ccp1con)


Lesenswert?

>... Gelöscht wirds aber trotzdem.
Das sollte meines Wissens aber nicht so sein!

Lass alles auf default und wähle "preserve EEPROM".

von Carsten M. (ccp1con)


Lesenswert?

übrigens - preserve ist irreführend - er liest den EEPROM vor dem 
Programmieren und programmiert dann diese Daten ...

von Bad U. (bad_urban)


Lesenswert?

Hallo Carsten,

danke für den Tip. Ich hatte jetzt nur kurz Zeit das mal zu Testen. Aber 
bei ein paar Versuchen hats funktioniert.
Der Fehler war, den Haken bei EEPROM rauszumachen. Ist der drin und 
Preserve EEPROM aktiviert, dann gehts. Auf die Idee die Kombination 
auszuprobieren bin ich garnicht gekommen. Irgendwie war für mich klar, 
dass ich alles aktiviere, bzw. deaktiviere was mit dem Beschreiben des 
EEPROMs zu tun hat.
Dein letzter Post könnte dafür die Erklärung sein. Es werden alle 
Speicher gelöscht. Mit Preserve EEPROM soll eigentlich der alte Inhalt 
wieder reingeschrieben werden. Aber da der Haken bei EEPROM draussen 
ist, kann das das Pickit nicht mehr. Wäre zumindest eine Möglichkeit...
Trotzdem finde ich es verwirrend, wenn es einen Fehler gibt, wenn man 
den Flash vorher nicht löscht....

Aber naja, jetzt weiß ich ja beischeid :-)

Euch allen einen schönen Abend und vielen Dank für die Hilfe. Ich werde 
das in den nächsten Tagen mal weiter testen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.