-         

Ergebnis 1 bis 8 von 8

Thema: Problem mit LCD

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.02.2007
    Ort
    Delitzsch
    Alter
    34
    Beiträge
    6

    Problem mit LCD

    Anzeige

    Hallo,

    ich versuche schon seit einiger Zeit ein LCD anzusteuern. Es kommt folgender Fehler bei der dem Versuch das Programm zu compilieren:

    Linking: main.elf
    avr-gcc -mmcu=atmega8 -I. -gstabs -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o -std=gnu99 -Wundef -MMD -MP -MF .dep/main.elf.d main.o lcd.h --output main.elf -Wl,-Map=main.map,--cref -lm
    main.o: In function `main':
    main.c:15: undefined reference to `lcd_init'
    main.c:22: undefined reference to `lcd_clrscr'
    main.c:25: undefined reference to `lcd_puts'
    main.c:28: undefined reference to `lcd_puts'
    main.c:31: undefined reference to `lcd_gotoxy'
    main.c:34: undefined reference to `lcd_putc'
    make.exe: *** [main.elf] Error 1

    Klingt fast so, als ob das Hauptprogramm die Routinen nicht findet
    Außerdem zeigt das LCD nur die oberste Zeile mit schwarzen Kästchen an. Warum da zweite nicht?

    Gruß Stefan

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.12.2006
    Beiträge
    205
    ich nehme mal an du benutzt die Peter Fleury lib?
    Hast du die beiden Dateien richtig eingebunden? entweder im Makefile oder direkt in main.c
    Ich binde sie immer direkt im main-file ein:
    #include <lcd.h>
    #include <lcd.c>

    Wie das mit dem Makefile funktioniert kannst du dir in der Testdatei anschauen, die bei der lib dabei war.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    LCD's mit hd44780 zeigen bei anlegen der Betriebsspannung immer die ERSTE Zeile mit kästchen an. Da im controller standard 1-Zeilen-Betrieb ist. Du musst es halt erst initialisieren.
    Dass es die schwarzen balken anzeigt ist ein gutes Zeichen für die Funktionalität deines LCD
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    #include <lcd.c>
    Man included keine *.c Dateien
    Software is like s e x: its better when its free.
    Linus Torvald

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.12.2006
    Beiträge
    205
    @izaseba warum nicht?
    macht das irgend einen Unterschied ob ich die Datei in meinem Hauptfile include oder ob ich sie ins Makefile schreibe?

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Warum ?
    1. Weil hier auch mal Leute mitlesen, die eventuell denken könnten, das wäre so richtig.
    2. weil man nur Header includet, um dem entsprechendem Programm zu sagen, wieviel Speicher zu reservieren ist bei Funktion X oder Variablen Y. Die entsprechende *.c Datei wird später extra übersetzt(falls in Makefile angegeben) und zu dem fertigem Programm gelinkt.
    3.Angenommen, Du hast Datei a.c, b.c und c.c, in c.c sind Funktionen drin, die von a.c und b.c gebraucht werden. Was passiert, wenn Du in a.c und b.c die c.c includest anstatt sie extra zu übersetzen und zu linken ?

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.12.2006
    Beiträge
    205
    @izaseba na dann, danke für den Hinweis, werd ich dann in Zukunft nicht mehr machen

    war bei mir halt nie ein Problem, weil ich nur eine Hauptdatei hatte, wo oben alle anderen Seiten included wurden.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    22.02.2007
    Ort
    Delitzsch
    Alter
    34
    Beiträge
    6
    Danke für eure Hilfe. Hat mich sehr weiter gebracht.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •