mikrocontroller.net

Forum: Compiler & IDEs mit atmega32 44780 kompatibles lcd ansteuern


Autor: Gizmo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Gizmo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: OldBug (Gast)
Datum:

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

Autor: Gizmo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das heißt ?
was muss ich jetzt machen ?

sorry bin c neuling

Autor: Gizmo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gizmo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Gizmo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
is kein Problem danke für Deine Hilfe

Autor: Gizmo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein...

Was funktioniert denn nicht?

Autor: Gizmo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da kann ich Dir nicht weiterhelfen.

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.