-
-
Neuer Benutzer
Öfters hier
Problem mit Schlüsselwort "volatile" und EEPROM
Hallo,
ich nutze AVR-Studio 4 mit WinAVR und programmiere einen ATmega644PA.
Vor dem Hauptprogramm habe ich folgenden Befehl:
"volatile unsigned int EEPROM fahrenmaxeep = 0;"
Im Hauptprogramm dann diese Anweisung:
"if(eeprom_read_word(&fahrenmaxeep) == 0)"
Diese Anweisung soll nur checken, ob schon Daten abgelegt wurden, oder ob das erst noch gemacht werden muss (also, wenn Inhalt == 0). Damit mir der Compiler die Anweisung nicht wegoptimiert, habe ich oben "volatile" angegeben. Beim kompilieren erhalte ich wegen dieser if-Anweisung folgende Warnung:
"warning: passing argument 1 of '__eerd_word_m644pa' discards qualifiers from pointer target type"
Weiss einer von euch vielleicht, warum der qualifier "volatile" in diesem Fall nicht beachtet wird?
Danke!
Gruß,
Thomas
-
Erfahrener Benutzer
Roboter Genie
Weil er an dieser Stelle keinen Sinn macht ...
volatile sagt dem Compiler, dass er jeden Zugriff auf diese Variable (lesen/schreiben) ausführen MUSS - Was im EEPROM-Kontext keinen Sinn ergibt. GCC liest den EEPROM nicht implizit ein, daher sind alle zusätzlichen Qualifier wie "const" und "volatile" hinfällig weil wirkungslos, da sie in deinen Zuständigkeitsbereich fallen.
Aus diesem Grund erwarten die EEPROM-Funktionen eben keinen volatile-Pointer sondern einen "ganz normalen".
mfG
Markus
Edit: Crossposting bei µC.net ...
-
Neuer Benutzer
Öfters hier
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen