Forum: Mikrocontroller und Digitale Elektronik EEPROM - Problem beim Daten speichern


von Cole.Cammet (Gast)


Lesenswert?

Ich probier grad so ein bisschen, Daten im EEPROM abzuspeichern. Dabei 
hab ich aber ein Problem. Hier erstmal der Quelletext:
1
#include "eeprom.h"
2
3
4
uint8_t eeFooByte EEMEM = 4;
5
6
eeprom_write_byte(&eeFooByte, eeFooByte);        <-- Zeile 7

In eeprom.h werden alle festen Adressen (für den späteren Zweck) 
definiert und die AVR-Headerdatei eeprom.h eingebunden.

Wenn ich dieses Programm compilieren möchte kommen immer folgende 
Fehler:

- Syntaxfehler vor &-Zeichen (Zeile 7)
- in Konflikt stehende Typen für eeprom_write_byte (Zeile 7)

von Cole.Cammet (Gast)


Lesenswert?

Kann mir dabei vielleicht jemand weiterhelfen?

Wäre sehr nett!

Cole.Dammet

von Jörg X. (Gast)


Lesenswert?

Das sieht aus, als hättest du da was verwechselt.
Das EEMEM bei der Variablen bedeutet, dass diese Variable _schon im 
EEPROM steht_! Der Compiler (der Linker?) erzeugt eine Hex-Datei (.eep) 
mit dem Inhalt für das EEPROM. Wenn du eeprom_write_byte benutzen 
willst, musst du eine "normale" Variable als 2. Parameter angeben.
Schau mal lieber (nochmal) hier: 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#EEPROM rein ;)

hth. Jörg
ps.: die header -- avr/eeprom.h und stdint.h bzw. inttypes.h -- hast du 
aber eingebunden, oder?

von Cole.Cammet (Gast)


Lesenswert?

Die Header-Dateien die du genannt hast sind alle eingebunden.
Hab schon ziemlich viel rumprobiert, deswegen warscheinlich der 
unsinnige Code. Hier vielleicht ein besserer:
1
#include "eeprom.h"
2
3
uint8_t eeFooByte EEMEM = 4;
4
5
uint8_t zahl = eeprom_read_byte(&eeFooByte);

Hier kommt in Zeile 5 immer der Fehler: "Initialisierungselement ist 
nicht konstant"

Wie könnte man diesen Fehler beheben???

von Rolf Magnus (Gast)


Lesenswert?

Indem du den Funktionsaufruf in eine Funktion schreibst, denn nur dort 
sind Aufrufe erlaubt.

von Cole.Cammet (Gast)


Lesenswert?

SHIT!!!!
Was für ein Fehler! Sorry...

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
Noch kein Account? Hier anmelden.