Forum: Mikrocontroller und Digitale Elektronik Block ins EEprom schreiben


von Maddin S. (schrank)


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!):
1
char array1[]="Hallo Welt";
2
char array2[11];
3
char eeAdresse EEMEM;
4
5
6
eeprom_write_block(&array1,&eeAdresse,11);
7
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!

von Maddin S. (schrank)


Lesenswert?

Keiner da der mir helfen kann bzw. mag? Ist die Frage zu banal?

von Stefan E. (sternst)


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.

1
// Dieser String liegt im EEPROM (dafür sorgt das EEMEM)
2
char eestring[] EEMEM = "Hallo Welt";
3
4
// Dieses Array ist im RAM
5
char ramarray[11];
6
7
// String aus dem EEPROM ins RAM kopieren:
8
eeprom_read_block(&ramarray,&eestring,11);
9
10
// Neuen String aus dem RAM ins EEPROM schreiben:
11
eeprom_write_block(&ramarray,&eestring,11);
Ich hoffe, so wird es deutlicher.

von Maddin S. (schrank)


Lesenswert?

Ah ja, jetzt wird mir das klarer!
D.h. also:
Mit
1
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!

von Stefan E. (sternst)


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.

von Maddin S. (schrank)


Lesenswert?

Da geb ich dir voll uns ganz recht:)

von P. S. (Gast)


Lesenswert?

Und im uebrigen ist das doch schoen im Tutorial erklaert :-/

von Maddin S. (schrank)


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!

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.