Werte ins EEPROM schreiben und lesen

Gast #4591664
Lesenswert?
• ▲
▼
Hallo Liebe Gemeinde!

Ich hoffe mir kann jemand bei folgendem Verständnis problem helfen.

Vor ab ich benutze Atmel Studio 7.
AVR µC Attiny 85.

Ich möchte ein paar Werte ins EEPROM ablegen und wieder lesen.
Dazu verwende ich die eeprom.h.

Als Beispiel Speichere ich einen Wert
ab der Adresse 3 ins EEPROM mit folgenden Aufruf:

eeprom_write_byte(3,Wert1);

Nach dem Compilieren kommt folgente Warnung:
expected 'const uint8_t *' but argument is of type 'int'
Klickt ich auf diese Warnung springt er in die folgende Zeile in 
eeprom.h.

** \ingroup avr_eeprom
    Write a byte \a __value to EEPROM address \a __p.
 */
void eeprom_write_byte (uint8_t *__p, uint8_t __value);

Hier scheine ich bei meinem Aufruf irgend einen Fehler zu machen aber 
welchen?
Gast #4591666
Lesenswert?
• ▲
▼
Klaus schrieb:
> Hier scheine ich bei meinem Aufruf irgend einen Fehler zu machen aber
> welchen?

Indem du nicht darauf Rücksicht nimmst welche Variablentypen
du der Funktion eeprom_write_byte übergeben musst.

Ein Tipp: ein * bedeuted oft so etwas wie Pointer auf etwas.
Gast #4591696
Lesenswert?
• ▲
▼
interessent schrieb:
> welchen höheren sinn hat es hier die eeprom addresse als Pointer mit zu
> geben

Weil nun mal eine Adresse "eher" einen Pointer als einen
Wert darstellt.

Wenn du eine Reihe von Variablen im EEPROM ablegst kannst du
dir nur schwer den aktuellen numerischen Offset einer bestimmten
Variablen ermitteln (ja, mit mühsamen Abzählen wäre das möglich).
Gibst du dagegen die Adresse einer Variablen an macht das der
Compiler automatisch richtig für dich.
Gast #4591700
Lesenswert?
• ▲
▼
Vielen Dank an Alle!

Ich habe mich nochmal mit dem Toutorial beschäftigt.

interessent schrieb:
> welchen höheren sinn hat es hier die eeprom addresse als Pointer mit zu
> geben und nicht als Value?

Also der höhere Sinn, so hab ich es begriffen, liegt darin das
EEMEM die abelegten Werte verwaltet.
Also man muss sich nicht selber um die Adresse der abgelegten Werte 
kümmern.

Ansprechen der Adressen sollte also über Variablen gehen und EEMEM sorgt
dafür, das es an der richtigen stelle im EEPROM gespeichert wird.



Wolfram K. schrieb:
> dein "Wert1" muss vom Typ uint sein oder du musst entsprechend wandeln.
> Die 3 muss auch ein Pointer sein.

Habe es jetzt so wie im Tutorial gemacht.


Jetzt sind auch die Warnungen weg!

Nochmals Danke!

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