Forum: Mikrocontroller und Digitale Elektronik Problem mit der lcd-routines.c Library


von Marcel P. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich stehe nun mal wieder vor einem Problem. Und zwar versuche ich die 
Library lcd-routines.c aus dem Tutorial mit weiteren Libraries zu einem 
*.a Packet zusammen zu packen. Allerdings erhalte ich bei dem Versuch 
das zu kompilieren folgende Fehlerliste, deren Grund ich bereits 
ausgibiebig gesucht habe:

bascom.h:12: error: expected ')' before 'x'
bascom.h:13: error: expected declaration specifiers or '...' before 
'uint8_t'
bascom.h:13: error: expected declaration specifiers or '...' before 
'uint8_t'

bezogen auf die kopierte(!) Zeile:

void set_cursor(uint8_t x, uint8_t y);

Und zusätzlich auch noch das hier:

lcd-routines.c:16: error: 'PORTD' undeclared (first use in this 
function)
lcd-routines.c:16: error: (Each undeclared identifier is reported only 
once
lcd-routines.c:16: error: for each function it appears in.)
lcd-routines.c:16: error: 'PD4' undeclared (first use in this function)
lcd-routines.c: In function 'lcd_command':
lcd-routines.c:38: error: 'PORTD' undeclared (first use in this 
function)
lcd-routines.c:38: error: 'PD4' undeclared (first use in this function)
lcd-routines.c: In function 'lcd_enable':
lcd-routines.c:59: error: 'PORTD' undeclared (first use in this 
function)
lcd-routines.c:59: error: 'PD5' undeclared (first use in this function)
lcd-routines.c: In function 'lcd_init':
lcd-routines.c:71: error: 'DDRD' undeclared (first use in this function)
lcd-routines.c:71: error: 'PD4' undeclared (first use in this function)
lcd-routines.c:71: error: 'PD5' undeclared (first use in this function)
lcd-routines.c:76: error: 'PORTD' undeclared (first use in this 
function)
avr-gcc: bconfig.map,--cref: No such file or directory
make.exe: *** [lcd-routines] Error 1


Die relevanten Files anbei

Vielen Dank schon mal vorab

Marcel P.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Ordne bascom.h mal um:

#define F_CPU ... ganz an den Anfang.

Anm.: Und du solltest F_CPU nur neu definieren, falls es nicht in der 
IDE oder in der Kommandozeile vom make oder avr-gcc definiert ist. Das 
gibt aber noch ein paar Grübelstunden, wenn du eine Binärlibrary (*.a 
Packet) machst und F_CPU dem User flexibel lassen willst.

Dann das allgemeine

#include <avr/io.h> vor die Funktionsprototypen. Für die neuen Typen 
(uint8_t etc.) brauchst du weitere Includedateien.

Anm.: Hier auch überlegen: Die Binärlibrary ist dann nur für einen AVR 
übersetzt/gültig!

Über beide Anmerkungen kann man eventuell hinwegsehen, wenn es um eine 
ganz spezielle Hardware z.B. Robot o-ä. geht.

von Hubert G. (hubertg)


Lesenswert?

Schön wenn du weist wo der Fehler liegt.
Welchen Kontroller verwendest du.
Sieht eher nach fehlenden define und deklarationen aus.
Meinte nicht define sondern include.

von Marcel P. (Gast)


Lesenswert?

Ich verdwende einen Atmega8.
Auch nach einer Umordnung erhalte ich die selben Fehlermeldungen.

MfG Marcel P.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Umordnung allein reicht nicht. Hast du die zusätzlichen Includedateien 
drin?

von Marcel P. (Gast)


Lesenswert?

im Tutorial werden doch auch keine zusätzlichen benötigt?

von Falk B. (falk)


Lesenswert?

@ Marcel P. (Gast)

>im Tutorial werden doch auch keine zusätzlichen benötigt?

Nein? Und was ist dann das?

1
#include <avr/io.h>
2
#include "lcd-routines.h"
3
#include <util/delay.h>

MFG
Falk

von Marcel P. (Gast)


Lesenswert?

und die hab ich nicht eigebunden oder was? die stehen doch in der 
lcd-routines.c drinne... grübel

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Und Antwort schon ergrübelt? Kleiner Tipp: Welche Datei betreffen die 
ersten Fehler? Korrigiere diese Fehler auch als erstes und zwar mit den 
Tipps oben. Du brauchst eine weitere Includedatei für die typedefs von 
uint8_t und Kollegen! Dann schau noch mal, was der Compiler zu 
lcd-routines.c meint, wenn das verbesserte bascom.h includiert wird.

von Marcel P. (Gast)


Lesenswert?

hmm tatsächlich kam ich jetzt doch auf die Lösung

Vielen Dank

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.