-
        

Ergebnis 1 bis 3 von 3

Thema: Problem mit Schlüsselwort "volatile" und EEPROM

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.08.2010
    Beiträge
    6

    Problem mit Schlüsselwort "volatile" und EEPROM

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Kandel
    Alter
    29
    Beiträge
    1.220
    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 ...

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    04.08.2010
    Beiträge
    6
    Alles klar. Vielen Dank!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •