mikrocontroller.net

Forum: Compiler & IDEs EEPROM Variablen unterstrichen in Eclipse


Autor: Andy S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das ist in meinem C File deklariert und nicht initialisiert.
//Regler Variablen
uint16_t P_Anteil EEMEM;
uint16_t I_Anteil EEMEM;
uint16_t D_Anteil EEMEM;

und dies im h File (damit alle zugreifen können)
extern uint16_t P_Anteil EEMEM;
extern uint16_t I_Anteil EEMEM;
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

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Folglich sagt er auch folgendes bei dem hier:
volatile unsigned int Kp = eeprom_read_word(&P_Anteil);  //Reglerparameter Proportional
volatile unsigned int Ki = eeprom_read_word(&I_Anteil);  //Reglerparameter Integral
volatile unsigned int Kd = eeprom_read_word(&D_Anteil);  //Reglerparameter Differncial
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

Autor: Klaus Falser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bob der Baumeister (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andy S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.