mikrocontroller.net

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


Autor: rollo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 Moderator
Autor: rollo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.