Hallo Leute, ich hänge jetzt schon seit zwei Tagen an einem Problem und komme einfach nicht weiter. Ich benutze Eclipse zusammen mit dem AVR-Plugin. Jetzt wollte ich die RFM12 Lib von hier -> http://www.hansinator.de/rfm12lib/ einbinden und für mein Projekt nutzen. Ich habe mich genau an den folgenden Abschnitt der Doku gehalten: In order to run, the library will need some configuration, which is stored in a header file usually named rfm12_config.h. See the section Configuration for more information on how to configure the library. Otherwise just take the demo configuration header from the library folder, put into your source folder and change the values to your needs. The library itself will not include the configuration file, you have to do this manually before including the rfm12.h header. However, the rfm12.c file will need a special wrapper. To use the library with your project, it's advised to create two wrapper files, which will simplify your makefile and include the library configuration. Just create two files, rfm12.c and rfm12.h inside your source folder and include the RFM12 configuration header (usually rfm12_config.h), as well as the real rfm12.c and rfm12.h. Here's an example: rfm12.h #include "rfm12_config.h" #include "../rfm12lib/rfm12.h" rfm12.c #include "rfm12_config.h" #include "../rfm12lib/rfm12.c" Wenn ich das Projekt dann bauen möchte bekomme ich von Eclipse nur eine Latte Fehlermeldungen: 'BIT_SS' undeclared (first use in this function) 'DATARATE_VALUE' undeclared (first use in this function) 'DDR_SS' undeclared (first use in this function) 'FREQ' undeclared (first use in this function) und so weiter ... Kann mir jemand von euch sagen, was ich falsch mache? Muss ich noch etwas anderes beachten? Gruß JD
Hast du die Dateien #include "include/rfm12_hw.h" #include "include/rfm12_core.h" mit "reingezogen"?
Passt den deine Projektstruktur zu der des Beispiels? Was das ganze "simplifien" soll erschließt sich mir nun aber auch nicht.
Wo rein gezogen? Die ist in dem SRC Verzeichnis mit drin. Ich habe mal ein Bild mit angehangen.
Ich habe mir jetzt ein Makefile gebaut und mache es ganz old school. Die IDE oder das Plugin scheinen einfach nicht ausgereift zu sein.
thinkJD schrieb: > Ich habe mir jetzt ein Makefile gebaut und mache es ganz old school. Die > IDE oder das Plugin scheinen einfach nicht ausgereift zu sein. Klar die anderen sind immer schuld... Was mir ganz "old school" auffällt ist z.B. das du garkeinen Ordner 'rfm12lib' hast, trotzdem in deinem rfm12.h darauf verweisst. Ansosnten würde man es 'new school' vermutlich eh so machen, dass man für die Lib ein eigenes Projekt anlegt vom Typ statische Library, dort die RFM12 dateien reinlegt, kompiliert und im anderem Projekt dann einfach als einzubindene Libary + include Pfad angibt. Dann kann man das nämlich auch noch in anderen Projekten nutzen ohne jedesmal alles neu zu machen.
thinkJD schrieb: > 'BIT_SS' undeclared (first use in this function) Diese Fehlermeldung bekommst du weder oldschool noch newschool mit einem anderen makefile weg, wenn da nicht vorher der Fehler >fatal error: xxx.h: No such file or directory kam. Und den bekommst du durch das hinzufügen der source-Dirs zu den Includepfaden weg. Das alles hat mit Eclipse oder dem avr-plugin nichts zu tun, die Includepfad-defaults kommen vom gcc. Oliver
Mein Fehler... das lag daran, dass ich den Text aus der Doku kopiert habe. In meinem Projekt habe ich die Pfade entsprechend angepasst. Es kommt mir so vol als wollte Eclipse das SRC Verzeichnis übersetzen ohne vorher in die main.c zu schauen. Mit einem Makefile funktioniert es, ganz oldschool wie schon geschrieben. Wenn du ein wenig Zeit hast, kannst du es ja mal mit deiner Umgebung probieren. Dann exportiere ich das Projekt später und lade es hoch.
thinkJD schrieb: > Es > kommt mir so vol als wollte Eclipse das SRC Verzeichnis übersetzen ohne > vorher in die main.c zu schauen. Eclipse übersetzt gar nix. Das macht der Compiler. Und der "schaut" auch nicht voher ins main.c, sondern übersetzt jede einzelne .c-Datei für sich, ganz unabhängig von allen anderen. Von den anderen weiß der gar nichts. Das ist ganz unabhängig davon, ob der nun von einem durch Eclipse oder von dir oldschool erzeugten makefile aufgerufen wird. Eclipse baut das makefile basierend auf den Einstellungen, die du in den Projekt-Settings gemacht hast. Da musst du die Includepfade richtig setzen, dann funktioniert das auch. Und selbstverständlich müssen in allen Dateien alle benötigten header files includiert sein. Oliver
Noch was: Ich habe die ganz starke Vermutung, daß du alle .c-Files aus den Verzeichnis src in main per #include "xxx.c" includiert hast. Das wäre dann allerdings nichgt oldschool, sondern bullshit. Oliver
Nein, das hast du falsch vermutet. Ich habe genau die Doku beachtet und die zwei Wrapper-Files erstellt und im Main die rfm12.h includiert. Das jede C-Datei einzeln übersetzt wird war mir nicht klar, danke für die Info. Das würde erklären warum es nicht übersetzt wird. Ich kann den Include Pfad doch auch so -> #include "src/rfm12.h" direkt angeben. Dazu brauch ich doch keinen Pfad einzustellen oder habe ich da noch einen Denkfehler?
thinkJD schrieb: > Ich kann den Include Pfad doch auch so -> #include "src/rfm12.h" direkt > angeben. Dazu brauch ich doch keinen Pfad einzustellen oder habe ich da > noch einen Denkfehler? Das geht natürlich auch. Oliver
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.