Forum: Compiler & IDEs EEPROM Variablen unterstrichen in Eclipse


von Andy S. (Gast)


Angehängte Dateien:

Lesenswert?

Das ist in meinem C File deklariert und nicht initialisiert.
1
//Regler Variablen
2
uint16_t P_Anteil EEMEM;
3
uint16_t I_Anteil EEMEM;
4
uint16_t D_Anteil EEMEM;

und dies im h File (damit alle zugreifen können)
1
extern uint16_t P_Anteil EEMEM;
2
extern uint16_t I_Anteil EEMEM;
3
extern uint16_t D_Anteil EEMEM;

Leider sind wenn ich kompiliere diese 6 Zeilen unterstrichen aus irgend 
einem Grund.

Wenn ich mit der Maus auf den Unterstrich hingehe sagt er Syntax Error, 
aber in den Warnings und Fehlern unten zeigt er nichts an und kompiliert 
auch richtig. Er zeigt auch nach dem Kompilieren, dass er 0,3% vom 
EEPROM belegt hat. Also alles spricht dafür, dass alles passt aber diese 
Striche stören mich

von Andy S. (Gast)


Lesenswert?

Folglich sagt er auch folgendes bei dem hier:
1
volatile unsigned int Kp = eeprom_read_word(&P_Anteil);  //Reglerparameter Proportional
2
volatile unsigned int Ki = eeprom_read_word(&I_Anteil);  //Reglerparameter Integral
3
volatile unsigned int Kd = eeprom_read_word(&D_Anteil);  //Reglerparameter Differncial
1
error: initializer element is not constant.

Was ist das initializer element?
Was genau darf ich nicht machen?
Leider ist so ein Fall wo ich die EEPROM Variable in allen C Files 
verwenden möchte nicht im Tutorial drinnen, also bleibt mir nur noch das 
Ausprobieren.


lg andy

von Klaus Falser (Gast)


Lesenswert?

Das sind 2 verschiedene Dinge:
- Das Unterstreichen macht der Editor von Eclipse, weil er das Wort 
EEMEM nicht kennt.
- Den 2. Fehler meldet der Compiler.
Du machst eine Initialisierung, d.h. die Variablen starten mit einem 
bestimmten Wert.
Der Compiler kann diesen Wert jedoch nicht im VORAUS berechnen.
Schreibe das initialisieren getrennt, dann geht's.
[C]
volatile unsigned int Kp;
volatile unsigned int Ki;
volatile unsigned int Kd;

in main() :
Kp = eeprom_read_word(&P_Anteil);  //Reglerparameter Proportional
Ki = eeprom_read_word(&I_Anteil);  //Reglerparameter Integral
Kd = eeprom_read_word(&D_Anteil);

von Andy S. (Gast)


Lesenswert?

Klaus Falser schrieb:
> Das Unterstreichen macht der Editor von Eclipse, weil er das Wort
> EEMEM nicht kennt.

Hmm, aber EEMEM sollte doch ein Makro in <avr/eeprom.h> sein. Und 
deswegen verstehe ich nicht wieso er unterstreicht und gar keine Warnung 
ausgibt.

Klaus Falser schrieb:
> Der Compiler kann diesen Wert jedoch nicht im VORAUS berechnen.
> Schreibe das initialisieren getrennt, dann geht's.
> [C]
> volatile unsigned int Kp;
> volatile unsigned int Ki;
> volatile unsigned int Kd;
>
> in main() :
> Kp = eeprom_read_word(&P_Anteil);  //Reglerparameter Proportional
> Ki = eeprom_read_word(&I_Anteil);  //Reglerparameter Integral
> Kd = eeprom_read_word(&D_Anteil);

Ja das funktioniert jetzt.
Danke, jedoch unterstreicht er immer noch

lg andy

von Bob der Baumeister (Gast)


Lesenswert?

Andy S. schrieb:
> Hmm, aber EEMEM sollte doch ein Makro in <avr/eeprom.h> sein. Und
> deswegen verstehe ich nicht wieso er unterstreicht und gar keine Warnung
> ausgibt.

Der Compiler kennt es ja, und gibt keine Warnung aus.

Eclipse kennt das Wort nicht. Eclipse ist aber auch kein C-Compiler, 
sondern im Kern ein Text-Editor. Eclipse muss "EEMEM" nicht kennen.
Wichtig ist nur der Compiler, das ganze 
Farben/Unterstreich/Kursiv/Blink-Zeuchs ist zwar schön anzuschauen, tut 
aber nichts zur Sache.

von Andy S. (Gast)


Lesenswert?

Bob der Baumeister schrieb:
> Eclipse kennt das Wort nicht. Eclipse ist aber auch kein C-Compiler,
> sondern im Kern ein Text-Editor. Eclipse muss "EEMEM" nicht kennen.
> Wichtig ist nur der Compiler, das ganze
> Farben/Unterstreich/Kursiv/Blink-Zeuchs ist zwar schön anzuschauen, tut
> aber nichts zur Sache.

Ok, gut zu wissen, danke.

lg andy

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.