Forum: Compiler & IDEs Funktionen für ext EEPROM wie für internen EEPROM


von rollo (Gast)


Lesenswert?

Hallo an alle,

ich beschreibe derzeit den internen EEPROM eines ATMEGA 16 mit der 
avrlibc. Nun möchte ich auf einen extrenen 24C02 umsteigen. Dieser 
Funktioniert auch schon über den I2C.

Ich suche nun nach Funktionen oder Lib's für meinen externen EEPROM die 
gleiche Funktionsweisen wie aus der avrlibc bereitstellen.

Also allá 
eeprom_write_block(myByteBuffer,eeFooByteArray1,sizeof(myByteBuffer));

Also so, dass ich nicht die direkte adresse in HEX im EEPROM angeben 
muss sondern, dass ich über variablen arbeiten kann.
Und die Funktionen mir die eigentliche Speicherorganisation abnehmen. 
Eben wie in der avrlic.

Ich hoffe ich habe mein Anliegen deutlich genug beschrieben. Bin noch 
nicht so der pro.

Vielen dank schonmal

: Verschoben durch User
von rollo (Gast)


Lesenswert?

Hey!!!!!!!!!

Hat den keiner n par Programmschnippsel für sowas parat ? Oder auch ne 
Idee oder n Ansatz wie sowas Funktioniert...

Vielleicht ist es ja auch ganz easy, nur ich komm enicht drauf..

Ihr würdet mir echt weiter helfen...

Danke

von Karl H. (kbuchegg)


Lesenswert?

> Und die Funktionen mir die eigentliche Speicherorganisation abnehmen.

Na ja.
Die Funktionen an sich sind es ja nicht, die dir die 
Speicherorganisation abnehmen.

Das macht schon der Compiler.
Das EEMEM Makro bei den Variablen sorgt dafür, dass diese Variablen in 
einer eigenen Section gesammelt werden. Dort kümmert sich dann 
Compiler/Linker um die korrekte Adresslage.

Aber um die Spezialfunktionen zum Auslesen an einer bestimmten 
Speicherstelle kommst du nicht herum. Die musst du sowieso neu 
schreiben.

Abgesehen davon lautet mein Rat: Sieh dir an, wie das EEMEM funktioniert 
und dupliziere das mit einer neuen Speicher-Section. Du musst 
rauskriegen, wie du die Speichersektion dem Compiler unterjubelst und du 
musst rauskriegen, wie du die Startadresse einer Section dem Linker 
unterjubelst.

von Peter D. (peda)


Lesenswert?

rollo schrieb:
> Also allá
> eeprom_write_block(myByteBuffer,eeFooByteArray1,sizeof(myByteBuffer));
>
> Also so, dass ich nicht die direkte adresse in HEX im EEPROM angeben
> muss sondern, dass ich über variablen arbeiten kann.

Nö, Du arbeitest ja voll im SRAM in der Variable myByteBuffer.
Und das eeprom_write_block speichert dann vom SRAM ins EEPROM an Adresse 
eeFooByteArray1.

Du must also nur Dein eeprom_write_block umschreiben auf externen 
EEPROM, dann wars das.


Peter


P.S.:
Ich mach das auch immer so, auf ner Kopie im SRAM arbeiten.
Das Lesen ist dann schneller, das Schreiben extrem viel schneller und 
man verbräht nicht unnütz Schreibzyklen.
Man schreibt nur auf Anforderung ins EEPROM bzw. liest einmal nach dem 
Reset daraus.

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.