Gast
#237671
Hallo Leute,
ich versuche, Werte im EEPROM (ATmega8) zu speichern, krieg aber immer
Fehlermeldungen. Folgendes:
const uint16_t iEEPROM_ADR = 2; // EEPROM-Adresse in der Konstante
eeprom_write_word (iEEPROM_ADR, iWert);
Das funktioniert, der Wert wird brav im EEPROM an Adressen 2 und 3
abgelegt, der Compiler motzt jedoch mit:
warning: passing arg 1 of `eeprom_write_word' makes pointer from
integer without a cast
Im Forum fand ich einige Beispiele, die die Adresse anders
deklarieren:
uint16_t iEEPROM_ADR _attribute_ ((section (".eeprom")));
Jetzt meckert der Compiler nicht mehr, das Programm läuft aber auch
nicht. Außerdem kann ich ja so nicht explizit bestimmen, dass der Wert
an Adresse 2 (oder wie auch immer) abgelegt wird. Was ist falsch?
Erweitertes Beispiel: Ich will mehrere Werte im EEPROM ablegen, sieht
so aus:
uint8_t c;
uint16_t iWert;
for (c = 0 ; c < 16 ; c++) {
iWert = foo();
eeprom_write_word ((i * 2), iWert);
}
Gleiches Problem wie oben, es funktioniert, die Werte werden schön
abgelegt, aber der Compiler motzt.
Kann mir das jemand korrigieren?
Ich benutze WINAVR mit dem GCC.
Danke und Gruß, min