mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Block ins EEprom schreiben


Autor: Maddin Sche (schrank)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Bin gerade dabei einen String ins EEprom zu schreibn und es später 
wieder zu lesen. Hierfür gibt es ja extra die Funktionen 
eeprom_write_block und eeprom_read_block in der avr-libc. Nach einigen 
Recherchen und Rumprobieren hats dann auch geklappt nur versteh ich 
nicht was pasiert. Folgende Code wurde programmiert
(auszugsweise, nicht vollständig!):
char array1[]="Hallo Welt";
char array2[11];
char eeAdresse EEMEM;


eeprom_write_block(&array1,&eeAdresse,11);
eeprom_read_block(&array2,&eeAdresse,11);

Und jetzt zu meine Fragen:
1. Was soll das EEMEM, wird in eeprom.h definiert, aber versteh nicht 
was das soll
2. Das was ich hier als eeAdresse bezeichne ist mir unbekannt (dachte es 
hat was mit der Adresse zu tun wohin ich schreiben bzw lesen will). Was 
ist das genau und wenn es die Adresse ist, warum muss ich sie dann nicht 
definieren

Hab da noch einige Lücken!
Wäre super, wenn mich da jemand unterstützen würde!
Vielen Dank!

Autor: Maddin Sche (schrank)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keiner da der mir helfen kann bzw. mag? Ist die Frage zu banal?

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maddin Sche wrote:

> 2. Das was ich hier als eeAdresse bezeichne ist mir unbekannt (dachte es
> hat was mit der Adresse zu tun wohin ich schreiben bzw lesen will). Was
> ist das genau und wenn es die Adresse ist, warum muss ich sie dann nicht
> definieren

Kein Wunder, dass du das eeAdresse nicht verstehst. Das ist reichlich 
unsinnig.

// Dieser String liegt im EEPROM (dafür sorgt das EEMEM)
char eestring[] EEMEM = "Hallo Welt";

// Dieses Array ist im RAM
char ramarray[11];

// String aus dem EEPROM ins RAM kopieren:
eeprom_read_block(&ramarray,&eestring,11);

// Neuen String aus dem RAM ins EEPROM schreiben:
eeprom_write_block(&ramarray,&eestring,11);

Ich hoffe, so wird es deutlicher.

Autor: Maddin Sche (schrank)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah ja, jetzt wird mir das klarer!
D.h. also:
Mit
char eeAdresse EEMEM;
hab ich mir nur ne "leere" Variable ins EEPROM gelegt,wohin ich dann 
schreibe und später wieder lese.Dass das so umständlich ist ist mir 
jetzt klar.
Perfekt!
Vielen Dank!

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maddin Sche wrote:

> hab ich mir nur ne "leere" Variable ins EEPROM gelegt,wohin ich dann
> schreibe und später wieder lese.Dass das so umständlich ist ist mir
> jetzt klar.

Es war nicht nur umständlich. Du hast auch 11 Bytes an die Adresse 
dieser 1-Byte-Variable geschrieben. Das hat nur deshalb ohne 
Nebenwirkungen funktioniert, weil du sonst keine weiteren 
EEPROM-Variablen definiert hast.

Autor: Maddin Sche (schrank)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da geb ich dir voll uns ganz recht:)

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und im uebrigen ist das doch schoen im Tutorial erklaert :-/

Autor: Maddin Sche (schrank)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wahrscheinlich ist so ziemlich alles in den Tutorials erklärt, nur 
manchmal braucht man eben zusätzlich eine kleine Hilfe um weiter 
zukommen, weil man einfach am Schlauch steht.

Vielen Dank für die Hilfe, bin jetzt wieder ein gutes Stück schlauer!

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.