EEprom immer mit alten Werten besetzt

  • 1
  • 2
  • Page 1 of 2
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

EEprom immer mit alten Werten besetzt

 · 
Posted: 07.07.2020 - 16:36  ·  #1
Ich habe in einem Programm einmal testweise ein paar Strings als Structconst ins eeprom gelegt.
Dazu dann wie üblich das {$EEPROM} davor gestellt:

Code
{$EEPROM}
var
  ee_udatabank: byte; 
  
structconst 
  ss: string[20] = 'blablabla';



Dann habe ich das rückgängig gemacht, wieder {$IDATA}davor gestellt und aus structconst const gemacht:

Code
{$EEPROM}
var
  ee_udatabank: byte; 
  
{$IDATA}
const 
  ss: string[20] = 'blablabla';




Dennoch landet jetzt bei jedem Make der alte Inhalt wieder ins eeprom.
Wie werde ich das wieder los?
Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: EEprom immer mit alten Werten besetzt

 · 
Posted: 07.07.2020 - 18:12  ·  #2
indem du die EESAVE Fuse deaktivierst (auf binär '1' setzt)

und hier im Forum ist eine höfliche Umgangsform gerne gesehen:
ein HALLO am Anfang
und ein
DANKE SCHONMAL am Ende des Posting
Du willst ja von uns kostenlose Hilfe.
Dann sollte man sich auch an die "NetikEtikette" halten


Beste Grüße,
Gunter
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Re: EEprom immer mit alten Werten besetzt

 · 
Posted: 09.07.2020 - 11:02  ·  #3
HALLO

Ich bin ein Freund weniger Worte in Foren, schreibe daher meist so kurz wie nötig, daher lasse ich Hallos, ich grüße euchs, Moin Moins oder Grüßgotts in Foren eigentlich immer weg. Aber wenn das hier so sehr gewünscht ist, bitte, dann folgt jetzt immer erst ein Gruß an alle Forenmitglieder.
Das war mir in den all den Jahren hier nicht aufgefallen und ich entschuldige mich hier in aller Form, dass ich die grundsätzlichen Regeln der Höflichkeit in diesem Forum nicht beachtet habe.

Zum eigentlichen Thema:

Quote
indem du die EESAVE Fuse deaktivierst (auf binär '1' setzt)

Die Methode würde Sinn ergeben, und war das erste, dass ich probiert habe, leider funktioniert sie nicht.

Es wird dann immer noch bei jedem Make der Inhalt wieder hergestellt. Eine Analyse der Zugriffe aus Avrco ergab dass die .eep -Datei offenbar nach einem Make nicht gelöscht wird, der Inhalt bleibt bestehen, Prog nimmt sie dann wieder und schreibt die alten Daten ins Eeprom.

Offenbar wird nach einer Code-Änderung von $EEPROM auf $IDATA bei einem neuen Lauf die .eep-Datei nicht aktualisiert.
Es hilft also nur das Löschen der .eep Datei damit sie neu erzeugt wird.
Erst wenn ich im Code etwas neues in $EEPROM anlege wird die Datei wieder aktualisiert.


DANKE!
Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: EEprom immer mit alten Werten besetzt

 · 
Posted: 09.07.2020 - 12:12  ·  #4
Hi,
die sauberste Methode die EEprom Programmierung zu steuern ist unten gezeigt.
Gruß, Gunter
Attachments
EEprom immer mit alten Werten besetzt
Filename: elab.png
Filesize: 62.52 KB
Title:
Download counter: 145
Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: EEprom immer mit alten Werten besetzt

 · 
Posted: 09.07.2020 - 12:36  ·  #5
und klar:
eine .eep wird nicht mehr gelöscht. Höchstens überschrieben.
Kann doch sein, dass jemand das ProgEE mal aus- und dann wieder einschaltet.
Kann man natürlich auch jedes Mal im Prommer steuern.
Aber mit Define_Fuses ist das eine "saubere Sache" weil diese Infos wesentlich und dann auch in der Source dokumentiert sind.
Ausserdem kann es ja sein, dass das .eep von 3. Seite stammt und gar nicht
vom Compiler erzeugt wird.

Gunter
Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: EEprom immer mit alten Werten besetzt

 · 
Posted: 09.07.2020 - 18:01  ·  #6
siehe im Prommer:
Options - Programmer Options und da rechts unten bei General
Gunter
Merlin
Administrator
Avatar
Gender:
Age: 24
Posts: 1409
Registered: 03 / 2005
Subject:

Re: EEprom immer mit alten Werten besetzt

 · 
Posted: 10.07.2020 - 10:12  ·  #7
Sorry - only English.

The programmer only downloads what it necessary (for speed). It does not blank EEPROM first.

Therefore if your new EEPROM data is smaller than the old, some of the old data will be left in place.That (usually) doesn't usually matter because it is unused.

If if bothers you though you could use either Erase EEPROM (if available) or Erase Device in the options menu of the programmer.

Regards
Lschreyer
Schreiberling
Avatar
Gender: n/a
Posts: 527
Registered: 02 / 2007
Subject:

Re: EEprom immer mit alten Werten besetzt

 · 
Posted: 14.07.2020 - 11:15  ·  #8
The problem here is, that the compiler/maker does not overwrite the .eep file if ye remove anything from the eeprom data.

If I create some eeprom constants and do a maker run, it creates the constant data in the .eep file. So far so good.
If I then remove the constants from the code, it does not recreate the .eep file, the data remains in the .eep file.
The "prog" program takes the .eep file and writes it to the controller, still with the old constant data in it.

So I have to manually delete the .eep file to let the maker recreate it. I had expected that it recreates the .eep file every time it makes the project when a change was made, but that does not seem to be the case.
  • 1
  • 2
  • Page 1 of 2
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 16 · Cache Hits: 15   141   156 · Page-Gen-Time: 0.029878s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI