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?
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.
Hallo Klaus, dein "Wert1" muss vom Typ uint sein oder du musst entsprechend wandeln. Die 3 muss auch ein Pointer sein. eeprom_write_byte (uint8_t *__p, uint8_t __value) Gruss Wolfram
welchen höheren sinn hat es hier die eeprom addresse als Pointer mit zu geben und nicht als Value?
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.
interessent schrieb: > welchen höheren sinn hat es hier die eeprom addresse als Pointer mit zu > geben Ein Zeiger in einen Speicherbereich ist ein Pointer. Selbst wenn du die Adresse "anders betrachtest", bleibt sie doch eine Adresse und damit sinngemäß ein Pointer/Zeiger.
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.