mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ich verzweifle mit includes in AVR Studio :(


Autor: Matthias Machmal (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi zusammen,

ich möchte grad eine USI TWI lib von Atmel in AVR Studio 7 verwenden.

Der Compiler sagt mir ständig dass er allemöglichen Variablen nicht 
findet, obwohl diese im Header vorhanden sind.
Mach ich einen rechten Mausklick darauf und sag "GoTo Implementation" 
findet er es auch und springt in die verlinkte .h Datei.

Beim Compilieren allerdings kennt er es nicht.

Jemand eine Idee?? Ich verzweifle so langsam... :(

Autor: Matthias Machmal (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
... auch beim includen findet er die Datei bereits und schlägt sie mir 
vor.

Autor: Kaj (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du die Datei auch dem Projekt hinzugefügt?

Autor: Carl Drexler (jcw2)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Das sind eben 2 "Compiler" am Werk. Der eine, der Code für den AVR 
erzeugen soll und der andere, der für Intellisens zuständig ist. Die 
beiden scheinen nicht die gleichen Include-Pfade zu verwenden.
Ich kenn das nicht vom AS, sondern von Eclipse, nur daß dort der echte 
Compiler alles richtig macht, aber die IDE manche Register nicht kennt. 
Das ist mir persönlich der liebere Fehler.

: Bearbeitet durch User
Autor: Matthias Machmal (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Kaj schrieb:
> Hast du die Datei auch dem Projekt hinzugefügt?

Ja, hier rechten Mausklick, add Existing und die .c und .h Files 
ausgewählt.

Carl D. schrieb:
> Das sind eben 2 "Compiler" am Werk.

Wo gib ich denn dem echten Compiler die Pfade mit? Ich dachte es reicht 
die Files dem Projekt hinzuzufügen?

Autor: nicht"Gast" (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,


ein schöner Fehler ist immer auch, wenn das Projekt ein externes 
Makefile benutzt. Schau mal in den Projekteinstellungen nach, ob das der 
Fall ist.

Autor: F. Fo (foldi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte ich auch mal, aber ganz genau kann ich mich nicht erinnern.
So wie ich meine, waren die Dateien doppelt gespeichert, aber nur auf 
einen Pfad griff das Studio zu.

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
vielleicht solltest Du erstmal den genauen Wortlaut der Fehlermeldung 
posten und die komplette Ausgabe in der Konsole beim Kompilieren. Dann 
muss man weniger herumrätseln und kann gezielt sagen woran es liegt.

Autor: WaMin (Gast)
Datum:

Bewertung
-3 lesenswert
nicht lesenswert
Bernd K. schrieb:
> vielleicht solltest Du erstmal den genauen Wortlaut der Fehlermeldung
> posten und die komplette Ausgabe in der Konsole beim Kompilieren. Dann
> muss man weniger herumrätseln und kann gezielt sagen woran es liegt.

Genau! Noch besser wird sein du erstellst ein komplettes Immage der 
System Partition und schickst das an Professor7Bit. Nur so kann er dir 
helfen.

nicht"Gast" schrieb:
> ein schöner Fehler ist immer auch, wenn das Projekt ein externes
> Makefile benutzt. Schau mal in den Projekteinstellungen nach, ob das der
> Fall ist.

Ist ne Möpglichkeit.

Anderer Tip: AVR-Studio 4.xx installieren... ;-)

Autor: Veit Devil (devil-elec)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

weiß nicht ob dir das hilft. Aber kannst mal nachschauen.
Ich hatte auch mal verzweifelt versucht eine fremde Lib in AS 
einzubinden.
Weil die in einem anderen Lib Ordner liegt.

Ich mußte den Pfad in Toolchain angeben.
Dann hat er sie beim tippen automatisch vervollständigt usw.

Projekt Explorer > Projektname rechte Maustaste  > Eigenschaften > 
Toolchain, dann gibts das doppelt für C und C++ Compiler. Bei mir C++ 
Compiler, weil mein Projekt als C++ angelegt ist.
Dort dann Dirctories und Pfad angeben bzw. prüfen.

Und hast du beide inkludiert?
#include <avr/io.h>
#include <stdio.h>

: Bearbeitet durch User
Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias Machmal schrieb:
> findet er es auch und springt in die verlinkte .h Datei.

Zu dem .h muß es auch ein .c oder .o geben. Das mußt Du dann zum Build 
hinzufügen.

Autor: F. Fo (foldi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Veit D. schrieb:
> #include <avr/io.h>
> #include <stdio.h>

Genau, das war es damals auch bei mir. Eigentlich sollte es die io.h 
auch nur über die "< >" finden, ohne AVR/, hat es aber nicht.

Autor: M. Köhler (sylaina)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:
> Zu dem .h muß es auch ein .c oder .o geben. Das mußt Du dann zum Build
> hinzufügen.

Das hätte ich jetzt auch vermutet. Das ist zumindest auch bei mir meist 
der Fall warum der AVR-GCC meckert: Weil ich vergessen hab ne .c/.o mit 
anzugeben im Makefile. Da wird auch wahrscheinlich irgendwo ne Meldung 
sein, dass die ein und andere Referenz vom Linker nicht aufgelöst werden 
konnte. Ist zumindest bei mir häufig der Fall wenn ich wieder mal 
vergessen hab was einzubinden.

Autor: nicht“Gast“ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:
> Matthias Machmal schrieb:
> findet er es auch und springt in die verlinkte .h Datei.
>
> Zu dem .h muß es auch ein .c oder .o geben. Das mußt Du dann zum Build
> hinzufügen.

Nein, muss es nicht. Das sind keine Mechanismen, die zwangsweise 
zusammen hängen. Du darfst ruhig einen Header haben, in dem nur 
Deklaration stehen. Da braucht's nicht zwangsweise eine Code Datei 
dahinter.

Autor: M. Köhler (sylaina)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
F. F. schrieb:
> Genau, das war es damals auch bei mir. Eigentlich sollte es die io.h
> auch nur über die "< >" finden, ohne AVR/, hat es aber nicht.

Kommt auf dein Compiler an. Bei mir liegt die io.h auch im Lib-Ordner im 
AVR-Ordner, auf der oberen Lib-Ordner-Ebene gibts bei mir auch keine 
io.h sondern nur die Standardsachen (wie z.B. die math.h, stdio.h, 
string.h usw)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nicht“Gast“ schrieb:
> Da braucht's nicht zwangsweise eine Code Datei
> dahinter.

Wenn nicht .c oder .o dann eben .a.
Aber irgendwo muß der Code schon herkommen.
Und entweder er wird über den Linkerpfad eingebunden oder muß dem Build 
hinzugefügt werden.

Was nicht zu den standard Libs gehört, binde ich immer als Quelltext 
ein. Dann kann man darin debuggen und Fehler korrigieren.

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.