Hallo zusammen, ich versuche, ein LCD-Display in eclipse mit avr in c und einem Atmega 128 zum Laufen zu bekommen. Ich verwende die Header-Datei von P. Fleury. Aber irgendwie gibt es Probleme beim Kompilieren der Datei. Hier meine main.c: /* * main.c * * Created on: 17.05.2015 * Author: arubuntu */ #include <avr/io.h> //#include <avr/pgmspace.h> #include <util/delay.h> #include "lcd.h" int main(void) { _delay_ms(10); /* initialize display, cursor off */ lcd_init(LCD_DISP_ON); /* clear display and home cursor */ lcd_clrscr(); /* put string to display (line 1) with linefeed */ lcd_puts("LCD Test Line"); while(1) { } return 0; } Der Kompiler sagt mir, dass es kein Verweis auf lcd_init, lcd_clrscr und lcd_puts gibt. Wenn ich in den Einstellungen unter AVR C Linker die Library von Hand und den dazugehörigen Pfad eintrage kommt dann folgende Fehlermeldung: /usr/lib/gcc/avr/4.8.2/../../../avr/bin/ld: cannot find -llcd.h kennt jemand das Problem ?
Welche Library hat denn den Namen "lcd.h"? Lib's hören auf *.a". P.F.-LCD besteht doch aus "lcd.h" und "lcd.c". Beide einfach in's Source-Verzeichnis und CDT/AVR-Plugin erledigen den Rest. In kurz: "Build".
ah dacht ich mir. ich habe die lcd.h als include eingebunden. Aber gerade da sagt mir eclipse dann dass es ein nicht definierter Verweis auf ../src/main.c:16: Nicht definierter Verweis auf `lcd_init' ../src/main.c:28: Nicht definierter Verweis auf `lcd_clrscr' ../src/main.c:28: Nicht definierter Verweis auf `lcd_puts' ist
andes schrieb: > ah, mir fehlt wahrscheinlich noch die lcd.c wenn ich die lcd.c jetzt einbinde kommt eine Meldung "Mehrfachdefinition innerhalb der geschweiften Klammern von lcd_init(), usw
Jetzt habe ich es hinbekommen, aber ich glaube, die folgende Schreibweise ist ned ganz richtig: _delay_ms(10); /* initialize display, cursor off */ lcd_init(LCD_DISP_ON); /* clear display and home cursor */ lcd_clrscr(); /* put string to display (line 1) with linefeed */ lcd_puts("********************"); lcd_puts("* Display *"); lcd_puts("* *"); lcd_puts("********************"); Genauso hätte ich glaube fast alles in eine Zeile schreiben können. Auf dem Display wird es richtig angezeigt, aber wie müßt ich es machen, damit auch immer nur eine Zeile beschrieben wird und nicht gleich die nächste, wenn ich mal zuviele Zeichen eingebe ??
Was verstehst du unter "einbinden"? Das darf nicht mit #include geschehen, nur die ".h"-Datei wird inkludiert. Liegt "lcd.c" im Source-Folder, dann werden alle ".c"-Dateien übersetzt und vom Linker gebunden. Doppeldefinition deutet auf "c-File inkludiert" hin, dann gibt es die LCD-Funktionen in 2 Objekt-Files.
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.