AVR Eclipse plugin Problem

Gast #1253277
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
Angehängte Dateien:
#1253304
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
Gast #1253375
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
Gast #1253436
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
Gast #1254718
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
#2360553
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren