'eeprom_read_byte' makes pointer from integer..

Gast #1543200
Lesenswert?

Hallo,

wie der Betreff vermuten lässt hab ich ein Porblem mit dem lesen und 
schreiben von Bytes in das EEPROM. Und zwar wollte ich über defines die 
EEPROM Adresse der verschiedenen Parameter die ich im speichern 
festlegen:
1
#define   par1   0x001

Jetzt würde ich gerne mit:
1
test = eeprom_read_byte(par1);

den Wert aus dem EEPROM auslesen. Das funktioniert auch soweit, leider 
gibt es eine Warnung:

../main.c:22: warning: passing argument 1 of 'eeprom_read_byte' makes 
pointer from integer without a cast

Lässt sich das beheben?

Vielen Dank
Jan
Gast #1543444
Lesenswert?

@ Stefan Ernst

Ja danke so bekomme ich die Fehlermeldung los.

@ Ernst B
Macht das einen Speicher/Geschwindigkeitsunterschied? Ich habe die 
Eeprom Artikel auf dieser Seite schonmal durchgelesen, dort wurde eine 
Array von der größe des kompletten EEPROMS angeleget, so dass dies immer 
an die selbe Stelle gelegt wird. Das wollte ich aus irgendeinen grund 
nicht machten, daher wollte ich die Adressen fest vorgeben.
#1543468
Lesenswert?

Jan schrieb:

> Macht das einen Speicher/Geschwindigkeitsunterschied?

Nein.
Die Variante von Ernst hat aber einen Haken. Von einer Firmware-Version 
zur nächsten kann sich die jeweilige Position der Daten im EEPROM 
verändern, insbesondere wenn eine zusätzliche EEPROM-Variable 
hinzukommt. Wirklich gangbar ist dieser Weg also nur, wenn die Firmware 
sicher irgendwann einen "finalen Status" erreicht hat, oder wenn die 
Daten im EEPROM eh nicht über ein Firmware-Update hinweg gültig sein 
müssen.

> Ich habe die
> Eeprom Artikel auf dieser Seite schonmal durchgelesen, dort wurde eine
> Array von der größe des kompletten EEPROMS angeleget,

Dieses Array ist nur dann relevant, wenn du feste Adressen und im 
Programm festgelegte Initialisierungsdaten haben möchtest. Wenn du auf 
die Initialisierungsdaten verzichten kannst, besteht praktisch kein 
Unterschied zu deiner Version.

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