Block ins EEprom schreiben

OP #1010680
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!
#1011432
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.
#1011669
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren