Forum: Mikrocontroller und Digitale Elektronik EEPROM Verständnisfrage


von Uwe C. (Firma: privat) (olmuk)


Lesenswert?

Hallo Forum,
ich bitte um Hilfe zur Thematik EEPROM :

Im Projekt werden 2 Zählerstände erzeugt durch Taster. Jedesmal wenn 
einer der Zähler inkrementiert wird, schreibe ich diesen geänderten Wert 
in eine EEPROM Zelle. Um die beiden Zählern mit Low- und Highbyte 0 zu 
beginnen müsste ich die 4 Zellen im EEPROM mit 0 setzen.
Allerdings ist dies nur der Startwert, nach dem ersten Zählen ändert 
sich dies ja sofort.
Was ich rausbekommen habe, kann ich nachfolgen .eseg das EEPROM 
beschreiben,
aber dies möchte ich halt nur einmal tun.
Kann man im AVR-Studio das eep-file entsprechend beschreiben ?

Vielen Dank im voruas - Gruß Uwe

von Karl H. (kbuchegg)


Lesenswert?

Was ich in solchen Fällen mache:

Ich lass das EEP File links liegen.
Viel zu viel Aufwand, mir das EEP File zu suchen, dem Brennprogramm 
mitzuteilen, dass es jetzt das EEP File doch schreiben soll, ev. die 
Fuses umstellen etc.

Stattdessen kriegt mein eigentliches Programm ganz an den Anfang die 
Anweisung, in die bewussten Speicherzellen den Anfangswert zu schreiben, 
den ich gerne haben möchte. Das brenn ich ganz normal auf den µC und 
lass es laufen. Dann wird der Programmteil auskommentiert, erneut 
compiliert, gelinkt und auf den µC gespielt. Für ein Einzelstück ist das 
eine gangbare Lösung, die schneller erledigt ist, als du Piep sagen 
kannst.

(Mann kanns auch umgekehrt machen: Einfach den Initialisierungsteil 
auskommentieren, der das erste mal den Wert aus dem EEPROM holt und 
statt dessen der Variable/Register den gewünschten Startwert geben. 
Programm laufen lassen und den Programmteil ausführen, der das EEPROM 
neu beschreibt.

von spess53 (Gast)


Lesenswert?

Hi

>aber dies möchte ich halt nur einmal tun.
>Kann man im AVR-Studio das eep-file entsprechend beschreiben ?

Ja, wenn ich dich richtig verstanden habe.

       .eseg

Taster1:   .dw 0  ; Setzt 2 Byte auf 0
Taster2:   .dw 0  ; Setzt 2 Byte auf 0

      .cseg

      .... Programm

>Im Projekt werden 2 Zählerstände erzeugt durch Taster. Jedesmal wenn
einer der Zähler inkrementiert wird, schreibe ich diesen geänderten Wert
in eine EEPROM Zelle.

Du solltest aber beachten, das EEPROM-Zellen nicht unendlich oft 
beschrieben werden können.

MfG Spess

von Uwe C. (Firma: privat) (olmuk)


Lesenswert?

@ Karl heinz Buchegger :

Die Idee finde ich gut, habe es probiert und es passiert folgendes :
Nach dem Setzen des EEPROMS kommentiere ich die Zeilen aus und nach
dem Übertragen ( nur hexfile ) steht wieder alles auf FF.

Was kann ich falsch machen ?

Ist eine Reihenfolge des flashens vorgeschrieben ( hex, eep )?

von spess53 (Gast)


Lesenswert?

Hi

EESAVE-Fuse!

MfG Spess

von Tim O. (tim_o)


Lesenswert?

Wird vorm flashen der Chip gelöscht? ;) Ist nen Häkchen, das man schnell
mal übersieht.

von j0 (Gast)


Lesenswert?

warum bebrennt ihr den neu?
ich würde eine ganz eeprom-speicherzelle als flag benutzen. das programm 
"schaut" erstmal dort nach, ob etwas von 0x00 verschiedenes da steht, 
wenn nein, wird der eeprom-inhalt auf deine werte gesetzt, zum schluss 
das flag noch auf 0x00. und so muss man die firmware nur 1x neu drauf 
brennen.
J0

von Uwe C. (Firma: privat) (olmuk)


Lesenswert?

Danke für die Antworten - das muß ich erst mal austesten.
Klingt ja logisch.

Gruß Uwe

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.