AVR-Eclipse Auto-vervollständigung /-syntax bei <avr/io.h>

Gast #2384221
Hallo,

ich hatte mal eine Frage bezüglich AVR Eclipse.
Ist es möglich die Auto-vervollständigung /-syntax in Abhängigkeit des 
Targets einzustellen?

Beispiel:
1
// Target: atxmega256a3
2

3
#include <avr/io.h>
4

5
int main(void)
6
{
7

8
  PORTF.IN;
9

10
  return 1;
11
}

Die Autosyntax-Prüfung meckert immer rum das PORTF.IN nicht gefunden 
werden konnte. (Manuelles Kompilieren = 0 Errors)

Autovervollständigung funktioniert so auch nicht.

In den Projekteigenschaften ist Hardware Taget richtig gesetzt.

Kann man das irgendwo einstellen?

Wäre euch sehr dankbar bei Unterstützung.

mfg
Max
Gast
Was hat das damit zu tun?

Ich wollte damit nur verdeutlich das die Autovervollständigung nicht bei 
<avr/io.h> Funktioniert.

(Manuelles Kompilieren = 0 Errors)


Wenn ich jetzt z.B. zusätzlich die <avr/iox256a3.h> einbinde 
Funktioniert zwar die Autovervollständigung und Autosyntax-Prüfung. Aber 
das richtige Kompilieren schlägt fehl.
1
// Target: atxmega256a3
2

3
#include <avr/io.h>
4
#include <avr/iox256a3.h>
5

6
int main(void)
7
{
8

9
  PORTF.IN;
10

11

12
  return 1;
13
}


Einer eine Idee? Ich wäre euch sehr Dankbar.
Gast
Das Target ist richtig eingestellt.

Projekt Properties -> AVR -> Target Hardware -> ATXmega256A3
-mmcu=atxmega256a3 ist auch eingetragen

Das manuelle Kompilieren Funktioniert ja auch nur nicht die 
Autovervollständigung und die Autosyntaxprüfung.
Gast
Das Problem habe ich auch gerade (naja, mehr oder weniger). Ich hatte am 
Anfang das Projekt für den mega8 erstellt. Nun auf den Tiny2313 
umgestellt (klappt auch alles). Aber bei der Autovervollständigung 
blendet Eclipse mir immer noch Elemente des mega8 ein (sehe ich z.B. an 
den Timer INT Vectoren). Irgendjemand eine Idee?
Gast
Da der mcu-Typ über eine Compileroption eingestellt wird, die der 
Eclipse-Editor weder sieht noch kennt, sind für den die mcu-abhängigen 
defines nicht definiert. Daher kann der auch nichts 
"auto-vervollständigen".

Oliver
Gast
Aber er macht es ja, nur eben für den falschen Typ. Gibt es also 
irgendwo einen "default" Typ per #define festgelegt, dessen typahängigen 
Dinge er dann bezieht?
Das Problem hatte ich auch mal. Folgendes hat die Lösung gebracht:

Folgende Datei: <${projectname}.sc> löschen.
Zu finden unter 
<${workspace}/.metadata/.plugins/org.eclipse.cdt.make.core/>

scheint ein Eclipse CDT bug zu sein ...

Grüße,
Michael
Gast
Michael K. schrieb:
> Folgende Datei: <${projectname}.sc> löschen.
>
> Zu finden unter
>
> <${workspace}/.metadata/.plugins/org.eclipse.cdt.make.core/>

Hat leider nicht geholfen. Was ich nun aber fesgestellt habe, dass die 
typspezifischen defines natürlich dann auch falsch ersetzt werden (z.B. 
OCIE1A wird mit 4 ersetzt, anstatt mit 6). Hilft es da echt nur das 
Projekt für den anderen Controller neu aufzusetzen. Das kann ich 
irgendwie nicht ganz glauben, irgendwo muss das doch definiert sein.
Gast
Urspünglich nicht. Ich habe es dann aber geändert. Aber wie gesagt, 
Eclipse includiert weiterhin die falsche IO.h. In der Konsole sehe ich 
aber beim Bauen, dass er sich auf den richtigen Proz bezieht. Nur wie 
gesagt, Autovervollständigung mit den falschen Namen (kleines Problem) 
und falsche Auflösung der #define Werte (Riesenproblem).
Ich werde das Projekt wohl neu aufsetzen müssen und den richtigen Prozi 
wählen, finde es aber echt verwunderlich, dass man das nicht im 
nachhinein ändern kann. :(
Hallo Luke,

also:

1. In den Projekteinstellungen (Properties) unter "AVR" (AVR-Plugin 
sollte installiert sein) bei "Target Hardware" den entsprechenden Proz 
und die Taktrate einstellen.
2. In den Projekteinstellungen (Properties) unter "C/C++ General" bei 
"Paths and Symbols" die Verzeichnisse setzen in denen die include 
Dateien von WinAVR liegen (bei sind das: 
c:/winavr20100110/lib/gcc/avr/4.3.3/include, 
c:/winavr20100110/lib/gcc/avr/4.3.3/include-fixed, 
c:/winavr20100110/avr/include)
3. Auf das Projekt mit der rechten Maustaste klicken und bei "Index" den 
Eintrag "Freshen all files" anklicken. Damit wird der Index komplett neu 
erstellt.
4. Eclipse schließen und die entsprechende sc-Projektdatei löschen 
move/delete the ${projectname}.sc file found under 
${workspace}/.metadata/.plugins/org.eclipse.cdt.make.core)
5. Eclipse neu starten und Punkt 3 wiederholen.
6. GGf. mit dem Include Browser schauen, welche Proz-Datei inkludiert 
wird (bei mir wars anfangs immer die iom16.h) ...

Viel Erfolg,

Michael
Gast
Hallo Michael,

super Anleitung, hat nun geklappt. Ich hatte nach dem Löschen der 
.sc-Datei nie den Index neu gebaut.
Auf jeden Fall klappt es nun: die richtige IO wird eingebunden und die 
Auflösungen der einzelnen defines passen nun zum ausgewähltem µC.

Vielen Dank.

Luke.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.