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

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.

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.