Hallo zusammen, ich bin am verzweifeln. Seit 2 Wochen bin ich stolzer Besitzer des MyAVR Boards MK2 mit LCD-AddOn. In letzter Zeit habe ich viel gemacht und seit einer Woche versuche ich jetzt jeden Tag, das LCD anzusteuern. Hab mir dabei auch schon zig lcd.c und lcd.h Files runtergeladen. Die Anleitung zu dem LCD-Addon findet ihr hier: http://www.myavr.info/download/produkte/lcd/techb_lcd_de_en.pdf Mit einem von MyAVR angebotenen Programm (für Windows) kann ich die Test-Hex-Datei auf den MC brennen und der zeigt das dann auch auf dem LCD an. Aber mir nützt ja die Hex-Datei nichts, will ja in C programmieren. Wollt damit auch nur sagen, dass das LCD an sich geht. Ich betreibe das ganze auf einem Mac mit Xcode und schreibe dort in C. Wenn ich dort das Programm brennen möchte, dann kommt als Fehler Command/bin/user/make failed with error code 2 Mache ich das ganze in Terminal bekomme ich folgenden Fehler, der mehr Aufschluss verdeutlicht: Mac-Pro:firmware Patrick$ make avr-gcc -Wall -Os -DF_CPU=8000000 -mmcu=atmega8 -o main.elf main.o main.o: In function `main': main.c:(.text+0x8): undefined reference to `lcd_init' main.c:(.text+0xa): undefined reference to `lcd_on' main.c:(.text+0xc): undefined reference to `lcd_clear' main.c:(.text+0x12): undefined reference to `lcd_write_s' make: *** [main.elf] Error 1 Ich habe die Dateien mal angehängt. Ich habe mich auch schon durch die komplette Netzwelt gelesen, habe aber mein Problem nicht lösen können. Hab auch das Makefile so abgeändert, dass in der Zeile SRC auch die lcd.c mit drinhängt. Aber auch wenn die Datei im selben Ordner ist, dann schaffe ich es nicht, das Ding zum laufen zu bekommen. Ich hoffe ich habe euch jetzt alle Informationen gegeben, die ihr brauchen könnt, um mir zu helfen. Würde mich auf jeden fall mal freuen!!! Vielen, vielen Dank und eine gute Nacht noch Patrick
Patrick schrieb:
> avr-gcc -Wall -Os -DF_CPU=8000000 -mmcu=atmega8 -o main.elf main.o
In dieser Zeile sollen alle Teilmodule zusammengelinkt werden, es fehlt
am Ende aber das Object-File "lcd.o". Vermutlich hat Dein Makefile an
dieser Stelle eine Variable, in der alle Object-Files eingetragen werden
müssen.
DU GOTTT!!!! Danke Danke Danke! Habs unter Objects eingetragen und jetzt funktionierts. Was ist denn der unterschied zwischen der Dreickklammer <> und "" bei include? #include <avr/io.h> #include "lcd.h" und muss die Zeile SRC = $(TARGET).c SRC += lcd.c mit rein? Vielen Dank für die schnelle Hilfe! Da wär ich bei ewigem Suchen nicht drauf gekommen!Danke Viele Grüße Patrick
Patrick schrieb: > Was ist denn der unterschied zwischen der Dreickklammer <> und "" bei > include? C-Buch es werden andere Pfadlisten zum Aufsuchen von Include Files, die nicht auf dem Verzeichnis des includierenden *.c Files liegen, benutzt. "" verwendet man bei Include-Files, die zum Projekt gehören. <> verwendet man bei Include-Files, die zum 'System' gehören. Der Compiler benutzt für beides meistens Listen von Pfaden, die er der Reihe nach abklappert und nachsieht, ob dort das Include-File vielleicht vorliegt und er es von dort includieren kann. > und muss die Zeile > > SRC = $(TARGET).c > SRC += lcd.c > > mit rein? klar. Du willst ja auch haben, dass lcd.c mitcompiliert wird. > Da wär ich bei ewigem Suchen nicht > drauf gekommen!Danke Immer rückwärst anfangen: Schau dir das Kommando an, welches ausgeführt wird. In deinem Fall ist es das linken mehrere Einzelteile zum kompletten Programm. Dann entscheide ob die Angaben vollständig sind oder ob da was fehlt (in deinem Fall taucht lcd.o nicht auf, obowhl es vorkommen müsste, weil dort ja die Implementierungen der fehlenden Funktionen drinn ist) und sieh im Makefile bei der entsprechenden Rgel nach, wie das Kommando zusammengebaut wird.
Patrick schrieb: > Was ist denn der unterschied zwischen der Dreickklammer <> und "" bei > include? Der Suchpfad. Näheres kann man z.B. mit "info cpp" nachlesen.
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.