Forum: Mikrocontroller und Digitale Elektronik AVR Eclipse plugin Problem


von Max (Gast)


Angehängte Dateien:

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?
1
Building file: ../keyboard.c
2
Invoking: AVR Compiler
3
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"
4
../keyboard.c: In function 'kybd':
5
../keyboard.c:33: warning: implicit declaration of function 'clrb'
6
../keyboard.c:33: error: 'PORTD' undeclared (first use in this function)
7
../keyboard.c:33: error: (Each undeclared identifier is reported only once
8
../keyboard.c:33: error: for each function it appears in.)
9
../keyboard.c:35: warning: implicit declaration of function 'cinsb'
10
../keyboard.c:35: error: 'PIND' undeclared (first use in this function)
11
../keyboard.c:53: warning: implicit declaration of function 'setb'
12
../keyboard.c:134: warning: implicit declaration of function 'delay'
13
../keyboard.c:23: warning: unused variable 'taste_alt'
14
make: *** [keyboard.o] Error 1

Vielleicht hat ja jemand eine Idee.


Danke
Max

von Marius W. (mw1987)


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

von Max (Gast)


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

von Oliver (Gast)


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

von Max (Gast)


Lesenswert?

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

von Max (Gast)


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

von Davor S. (da__x)


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 :/

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.