Forum: Compiler & IDEs EEPROM auslesen


von Alexander S. (knut740)


Lesenswert?

Hallo

Daß Daten im EEPROM nach Stromausfall erhalten bleiben, ist mir bekannt, 
aber daß sie nach Umprogrammieren weg sind, finde ich unpraktisch, 
insbesonders, wenn man den Umgang mit der eep-Datei nicht kennt, wo die 
EEPROM-Inhalte angeblich gespeichert werden könnten seien, was ich aber 
leider nicht nachvollziehen kann.

Also, ich habe ein Programm, das Meßwerte ins EEPROM schreibt und sie 
z.Zt. zwecks Kontrolle auch gleich wieder ausliest.
Ich möchte aber, daß sie im EEPROM bleiben und daß ich sie später mit 
einem anderen Programm wieder auslesen kann. Sie müssen also 
Umprogrammieren des ATMEGA und ggf. Stromausfall überstehen.

Kann mir vielleicht jemand beschreiben, wie man das bewerkstelligt?
Muß man die o.g. eep-Datei beim Programmieren aktivieren oder das 
Überschreiben des EEPROMs deaktivieren?


Vielen Dank schon mal
Alexander


PS: Ich benutze einen ATMEGA16 und gcc incl. avrdude auf einem 
XP-Rechner

von Grrrr (Gast)


Lesenswert?

Lies einfach mal gründlich das Datenblatt und die Beschreibung von 
avrdude. Dann werden alle Deine Fragen geklärt.

von Alexander S. (knut740)


Lesenswert?

Grrrr schrieb:
> Lies einfach mal gründlich das Datenblatt

Hatte ich nicht ausdrücklich geschrieben, daß ich gcc benutze? Dort ist 
eeprom.h enthalten - was soll also der Hinweis auf das Datenblatt mit 
der unkomfortablen Lösung?

> und die Beschreibung von
> avrdude. Dann werden alle Deine Fragen geklärt.

Wenn ich damit zurechtgekommen wäre, hätte ich hier nicht nachfragen 
müssen.
So komme ich einfach nicht über die Nachfrage "can't set buffers for 
lpt1" hinweg; meine Schnittstelle com3 wird nicht akzeptiert.

Trotzdem vielen Dank
mfg

von Grrrr (Gast)


Lesenswert?

Alexander Schmeil schrieb:
> Hatte ich nicht ausdrücklich geschrieben, daß ich gcc benutze? Dort ist
> eeprom.h enthalten - was soll also der Hinweis auf das Datenblatt mit
> der unkomfortablen Lösung?

Sie soll Dich darauf hinweisen, das Deine Frage von Anzeichen für 
absolute Unwissenheit nur so strotzt.
Grundwissen mussst Du Dir selbst aneignen und nicht Deine Faulheit hier 
auf Kosten Anderer ausleben.

> Wenn ich damit zurechtgekommen wäre, hätte ich hier nicht nachfragen
> müssen.

Wir sind hier nicht dafür da Dir den Darwin-Arward zu ersparen. Wenn Du 
nicht lesen kannst, werde Gärtner.

> So komme ich einfach nicht über die Nachfrage "can't set buffers for
> lpt1" hinweg; meine Schnittstelle com3 wird nicht akzeptiert.

Soll das ein Argument sein oder reine Verzweiflung? Haust uns hier 
irgendeine Fehlermeldung um die Ohren?


> Trotzdem vielen Dank

Du kannst mich auch mal gerne haben.

von NurEinGast (Gast)


Lesenswert?

Schau mal in Datenblatt nach "EESAVE". Dieses Bit musst Du 
programmieren.
Un denn Du nun beim avrdude das EEProm einfach nicht beschreibst, dann 
sollen die Daten erhalten bleiben.

von Karl H. (kbuchegg)


Lesenswert?

Alexander Schmeil schrieb:

> Also, ich habe ein Programm, das Meßwerte ins EEPROM schreibt und sie
> z.Zt. zwecks Kontrolle auch gleich wieder ausliest.
> Ich möchte aber, daß sie im EEPROM bleiben und daß ich sie später mit
> einem anderen Programm wieder auslesen kann. Sie müssen also
> Umprogrammieren des ATMEGA und ggf. Stromausfall überstehen.

Dein ATMEGA hat sicherlich auch eine Fuse, mit der man den EEPROM gegen 
Überschreiben beim Programmieren schützen kann.

AUch Brennprogramme unterscheiden oft zwischen 'Flash beschreiben', 
'EEprom beschreiben' und 'beides in einem Aufwasch beschreiben'. Benutzt 
du letzteres, kann dich nur noch die Fuse im Mega davor retten, dass das 
Brennprogramm das EEPROM beschreibt

> Kann mir vielleicht jemand beschreiben, wie man das bewerkstelligt?
> Muß man die o.g. eep-Datei beim Programmieren aktivieren oder das
> Überschreiben des EEPROMs deaktivieren?

Beides ist möglich.
Für ersteres empfiehlt sich das Studium der avrdude Doku. Für letzteres 
das Studium des Datenblattes.

von Oliver (Gast)


Lesenswert?

Alexander Schmeil schrieb:
> Hatte ich nicht ausdrücklich geschrieben, daß ich gcc benutze?

Hattest du. gcc hat aber nichts mit deinem Problem zu tun.

Du kannst mit avrdude flashdaten und eepromdaten übertragen, musst es 
aber nicht zusammen tun. Und du kannst den AVR dazu bringen, seinen 
eeprom-Daten nicht zu vergessen.

Infos dazu stehen in der avrdude-Doku und im Datenblatt.

Also:
RTFM

Oliver

von Klaus F. (kfalser)


Lesenswert?

Alexander Schmeil schrieb:
> Also, ich habe ein Programm, das Meßwerte ins EEPROM schreibt und sie
> z.Zt. zwecks Kontrolle auch gleich wieder ausliest.
> Ich möchte aber, daß sie im EEPROM bleiben und daß ich sie später mit
> einem anderen Programm wieder auslesen kann. Sie müssen also
> Umprogrammieren des ATMEGA und ggf. Stromausfall überstehen.
>
> Kann mir vielleicht jemand beschreiben, wie man das bewerkstelligt?
> Muß man die o.g. eep-Datei beim Programmieren aktivieren oder das
> Überschreiben des EEPROMs deaktivieren?

Also einen Stromausfall überstehen sie immer.
Beim Umprogrammieren des Atmegas muss man unterscheiden, ob der 
Programmer den Chip mit Chip Erase löscht, oder nur das Flash 
umprogrammiert, meisten aber wird ein Chip Erase gemacht. Dabei wird der 
ganze Chip gelöscht.
Man kann aber die FUSE EESAVE setzen/löschen, dann wird dieses 
verhindert.

Die EEP-Datei nützt für die Erhaltung der Daten nichts, sie enthält nur 
Initial-Werte für das EEPROM, z.B. wenn man im EEPROM einer Seriennummer 
ablegen will.
Wenn der Programmer die EEP-Datei in den Chip schreibt, werden die alten 
Werte überschrieben.

von Peter D. (peda)


Lesenswert?

Karl heinz Buchegger schrieb:
> AUch Brennprogramme unterscheiden oft zwischen 'Flash beschreiben',
> 'EEprom beschreiben' und 'beides in einem Aufwasch beschreiben'. Benutzt
> du letzteres, kann dich nur noch die Fuse im Mega davor retten, dass das
> Brennprogramm das EEPROM beschreibt

Nö.
Bei 'EEprom beschreiben' und 'beides in einem Aufwasch beschreiben' wird 
der EEPROM natürlich immer überschrieben.

Nur das pure 'Flash beschreiben' + EESAVE schützt den EEPROM.

Das EESAVE verhindert das Mitlöschen beim Flash löschen.


Peter

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.