Forum: Compiler & IDEs mit atmega32 44780 kompatibles lcd ansteuern


von Gizmo (Gast)


Lesenswert?

Hi ich versuche mit einem ATMEGA32 und dem STK500 ein HD44780
kompatiebles LCD anzusteuern. Das LCD hängt an PortD des stk500, ich
schaffs irgendwie nicht, die LCD.h von Peter Fleury im programmers
Note
Pad2 einzubinden. avr gcc sagt folgendes:

> "make.exe" all

-------- begin --------
avr-gcc (GCC) 3.4.1
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There
is
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.

make.exe: *** No rule to make target `LCDcontroll.o', needed by
`LCDcontroll.elf'.  Stop.

> Process Exit Code: 2

ich habe im makefile meines programmes die lcd.h als sourcefile
angegeben.

SRC = $(TARGET).c lcd.h

In der lcd.h habe ich XTAL2 auf 8000000 gesetzt da das auch mein µc
takt ist.

was habe ich falsch gemacht ?

irgendwie kann avr gcc die lcd.h nicht einbinden.

p.s. Die Lcd.h liegt natürlich auch in dem Ordner in dem sich das c
program befindet.

von OldBug (Gast)


Lesenswert?

>make.exe: *** No rule to make target `LCDcontroll.o', needed by
>`LCDcontroll.elf'.  Stop.

>irgendwie kann avr gcc die lcd.h nicht einbinden.

Wie kommst Du auf diese Idee?
Die Fehlermeldung sagt jedenfalls was anderes aus.
Wie ist Dein $(TARGET) definiert, und wie heist das 'main'-File?

von Gizmo (Gast)


Lesenswert?

ich musste im makfile den Namen des mainfiles noch richtig eintragen.
Doch jetz kommt eine andere Fehlermeldung:

> "make.exe" all

-------- begin --------
avr-gcc (GCC) 3.4.1
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.


Compiling: LCDTest.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -DF_CPU=8000000UL  -Os
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall
-Wstrict-prototypes -Wa,-adhlns=LCDTest.lst  -std=gnu99 -MD -MP -MF
.dep/LCDTest.o.d LCDTest.c -o LCDTest.o

Linking: LCDTest.elf
avr-gcc -mmcu=atmega32 -I. -gdwarf-2 -DF_CPU=8000000UL  -Os
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall
-Wstrict-prototypes -Wa,-adhlns=LCDTest.o  -std=gnu99 -MD -MP -MF
.dep/LCDTest.elf.d LCDTest.o lcd.h --output LCDTest.elf
-Wl,-Map=LCDTest.map,--cref    -lm
LCDTest.o(.text+0xa): In function `main':
C:\Projekte\µC\LCDTest/LCDTest.c:7: undefined reference to
`lcd_init'
LCDTest.o(.text+0xe):C:\Projekte\µC\LCDTest/LCDTest.c:8: undefined
reference to `lcd_clrscr'
LCDTest.o(.text+0x16):C:\Projekte\µC\LCDTest/LCDTest.c:9: undefined
reference to `lcd_puts'
make.exe: *** [LCDTest.elf] Error 1

> Process Exit Code: 2

was is hier los ?

von OldBug (Gast)


Lesenswert?

Du hast die 'LCD-Lib' beim Linken vergessen (in den LDFLAGS)!

von Gizmo (Gast)


Lesenswert?

das heißt ?
was muss ich jetzt machen ?

sorry bin c neuling

von Gizmo (Gast)


Lesenswert?

also die lcd.h habe ich im main file so eingebunden

#include "lcd.h"

im make file siehts so aus:


SRC = $(TARGET).c lcd.h

von OldBug (Gast)


Lesenswert?

Ich weis leider nicht, wo die LCD-Lib bei Dir liegt, wenn sie im
gleichen Verzeichnis wie Dein Programmcode liegt, dann füge einfach
unterhalb der "LDFLAGS-Zeilen" folgende Zeile ein:

LDFLAGS += -L. -l<namederlib>

Vorraussetzung dafür ist, daß der Name der LCD-Lib mit 'lib'
beginnt!
Etwa so:

LDFLAGS += -L. -llcd

Dann muss im Verzeichnis eine Lib mit dem Namen 'liblcd.a' vorhanden
sein.

von Gizmo (Gast)


Lesenswert?

Also die dateien aus peter Fleury`s lcd lib heißen:
lcd.h und lcd.c muss ich die lcd.h beim Linker angeben so:
LDFLAGS += -L. -llcd.h

oder so:
LDFLAGS += -L. -llcd.c ?

von OldBug (Gast)


Lesenswert?

Argh!

Nein! Ich dachte Du hast eine echte Library zum Dazulinken verwendet,
sorry! Du musst anstelle des lcd.h das lcd.c im Makefile unter SRC
eintragen.

Entschuldige bitte die Verwirrung :-)

von Gizmo (Gast)


Lesenswert?

is kein Problem danke für Deine Hilfe

von Gizmo (Gast)


Lesenswert?

es funktioniert leider immer noch nicht
hast Du vielleicht einen beispiel code oder so etwas wie wo man sieht
wie man alles einstellen muss ?

von OldBug (Gast)


Lesenswert?

Nein...

Was funktioniert denn nicht?

von Gizmo (Gast)


Lesenswert?

so der compiler macht jetzt keinen ärger mehr ich habe einfach alle
files aus der LCD lib in meinen Projektordner kompiert.
was muss ich nun in der lcd.h umändern?
ich nutze ein 2*16 zeilen lcd einene atmega32 und das stk500, dass
stk500 ist über die pins von portd mit dem lcd verbunden

von OldBug (Gast)


Lesenswert?

Da kann ich Dir nicht weiterhelfen.

Ich hätte aber noch eine klitzekleine Bitte: Poste doch bitte nicht
immer alle Beiträge mehrfach ;-)

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
Noch kein Account? Hier anmelden.