mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Eclipse plugin Problem


Autor: Max (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich hab mir jetzt die eclipse-Version 3.4.2 mit dem AVRPlugin 
installiert und mein Projekt mit allen sources in einem Ordner geladen.
Ich habe eine Main.c in der ganz am Anfang eine global.h aufgerufen 
wird. In dieser global.h werden dann alle weiteren headerfiles und 
sourcefiles inkludiert. (sources werden mit Compilerschalter #if 
(graphics==1) dann binde die graphics.c mit ein)
Der Editor erkennt das auch, weil er die betrreffenden Stellen grau 
markiert.
Wenn aber mit "build project" das Projekt compilieren will, ruft er alle 
.c und .h Dateien in dem Ordner auf und kennt keine Abhängigkeiten mehr. 
z.b.: hab ich im global.h typedefs definiert die er nirgendsmehr kennt. 
Auch die ganzen Register vom ATMega32 sind ihm unbekannt....
Er erkennt also nicht die Abhängigkeiten der Sources untereinander.
Im Programmers Notepad von WINAVR funktionierts aber.
Das AVReclipsePlugin dient ja quasi als makefile?! Nur leider wüßte ich 
nicht wo da der Fehler sein könnte?
Building file: ../keyboard.c
Invoking: AVR Compiler
avr-gcc -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=1000000UL -MMD -MP -MF"keyboard.d" -MT"keyboard.d" -c -o"keyboard.o" "../keyboard.c"
../keyboard.c: In function 'kybd':
../keyboard.c:33: warning: implicit declaration of function 'clrb'
../keyboard.c:33: error: 'PORTD' undeclared (first use in this function)
../keyboard.c:33: error: (Each undeclared identifier is reported only once
../keyboard.c:33: error: for each function it appears in.)
../keyboard.c:35: warning: implicit declaration of function 'cinsb'
../keyboard.c:35: error: 'PIND' undeclared (first use in this function)
../keyboard.c:53: warning: implicit declaration of function 'setb'
../keyboard.c:134: warning: implicit declaration of function 'delay'
../keyboard.c:23: warning: unused variable 'taste_alt'
make: *** [keyboard.o] Error 1

Vielleicht hat ja jemand eine Idee.


Danke
Max

Autor: Marius Wensing (mw1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du die avr/io.h inkludiert?!

Was heißt denn überhaupt "In dieser global.h werden dann alle weiteren 
headerfiles und sourcefiles inkludiert."? Machst du da etwa ein #include 
"xxx.c"? Wenn ja gewöhn dir das gaaaaaaaaaaaanz schnell ab und lern den 
Unterschied zwischen Header-File und Source-File.

MfG
Marius

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja die ist inkludiert. Im Prog Notepad von Winavr funktioniert alles 
einwandfrei.
Ausserdem hab ich das Project auch als makefile project angelegt (im 
Eclipse) da funktionierts ebenfalls.In diesem make file welches bei 
Winavr dabei ist,steht, das "C-dependencies" aus den Source-Dateien 
automatisch kreiert werden.
Irgendwo in den Settings des AVReclipseplugins müsste doch wohl die 
Lösung sein?

Max

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>hab ich im global.h typedefs definiert die er nirgendsmehr kennt.
>Auch die ganzen Register vom ATMega32 sind ihm unbekannt....
>Er erkennt also nicht die Abhängigkeiten der Sources untereinander.

Das hat mit Abhängigkeiten vermutlich nichts zu tun. Beim Kompilieren 
einer einzelnen Datei kommen Abhängigkeiten gar nicht vor. Der Compiler 
includiert das, was per #include angegeben ist. Wenn da Dateien nicht 
gefunden würden, gäbe es entsprechende Fehlermeldungen. Gibt es aber 
nicht, also findet er alles.

Also, wie immer: Zeig den ganzen Code.

>(sources werden mit Compilerschalter #if
>(graphics==1) dann binde die graphics.c mit ein)

Keine gute Idee.

>Ausserdem hab ich das Project auch als makefile project angelegt (im
>Eclipse) da funktionierts ebenfalls.

Ja nun, und wo ist jetzt genau das Problem? Die vom Eclipse-plugin 
erzeugten makefiles sind einwandfrei, nutzt die doch einfach.

Oliver

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Morgen werde ich den Code posten, da ich die Dateien in der Arbeit habe.
Max

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Also ich hab jetzt meinen Saustall sortiert, und siehe da es geht alles.
Inkludiere jetzt keine source files mehr und mach alles über header.
Gefällt mir eigentlich auch besser, vorallem ist es jetzt richtig.

Danke
Max

Autor: Davor St (da__x)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo - habe exakt das selbe problem wie du. er möchte die ports meines 
atusb162 nicht kennen, obwohl ich die avr/io.h inkludiere.

sobald ich aber die avr/iousbxx2.h inkludiere, kennt er sie plötzlich. 
echt merkwürdig, durch die io.h müsste er doch selbst in diesen header 
finden.

was hast du genau gemacht um das zu ändern, bin schon langsam am 
verzweifeln und hab verdammt viel zeit daran verschwendet :/

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.