Hallo Leute, ich habe etwas Schwierigkeiten beim Initialisieren eines LCD Displays am Ethernut Board 2.1 (Atmega128). Ich benutze ein Standart LCD Display "Displaytech 162". In meinem Anhang ist eine PDF Anleitung zur Anbindung eines LCD an das Board dabei. Leider bekomme ich es nicht auf die Reihe. Ein txt File mit Fehlermeldungen liegt ebenfalls drin, sowie meine Projekt Datei "simle.c" mit Make file. Bin in einer Sackgasse angekommen und weiß nicht mehr weiter!!!!! Ich habe mich an ihre PDF Anleitung gehalten und den C Quellcode kopiert. Im Make File habe ich die Datei hd44780.c eingebunden. Ich bekomme bei copeilieren jedoch einige Fehlermeldungen wie. Z.B. “simple.c:141: warning: implicit declaration of function 'LcdSendNibble'”. Mir ist nicht klar warum??? Die Datei hd44780.c wurde doch mit eingebunden wo die Funktion enthalten ist. Desweiteren finde ich nirgend die Funktion 'LCD_SWITCH_ALL' undeclared (first use in this function) Ich wäre sehr dankbar wenn ihr mal einen Blick in mein Projekt simple.rar werfen könntet. MfG Denis Jakel
Denis Jakel wrote: > Im Make File habe ich die Datei hd44780.c eingebunden. > Ich bekomme bei copeilieren jedoch einige Fehlermeldungen wie. Z.B. > “simple.c:141: warning: implicit declaration of function > 'LcdSendNibble'”. Hast du in de simple.c auch ein
1 | #include "hd44780.h" |
Gibts es die Fkt überhaupt in der .h und .c ? PS: eine zip ist besser...das kann win sogar mit bordmitteln...
Du hast Code in hd44780.c und simple.c doppelt.
Das ist für mich ein Hinweis darauf, dass du nicht verstanden hast, wie
die LCD Routinen in Ethernut implementiert sind.
Es sieht für mich so aus, als ob du die Erklärungen zur LCD Ansteuerung
im PDF 1:1 in simple.c kopiert hast, statt die vorhandenen Funktionen in
hd44780.c und dev/hd44780.h zu benutzen und die konkrete Anpassung an
die Hardware (Displaytyp, Ports) in cfg/LCD.h zu machen.
Du musst dich entscheiden, ob du mit der lückenhaften Anleitung aus dem
PDF arbeiten willst oder mit dem älteren (?) Treiber aus hd44780.c
Wenn du mit dem PDF arbeitest, dann solltest du deinen Code checken.
Hier z.B. ist ein Fehler beim Ende des Kommentars - der Funktionsname
fehlt!
/*
The initialization routine uses another command routine named LcdSwitch,
which
switches on and off certain mode bits in the LCD controller.
void LcdSwitch(u_char on, u_char off)
*/
{
switch_control |= on & LCD_SWITCH_ALL;
switch_control &= ~(off & LCD_SWITCH_ALL);
LcdWriteCmd(switch_control, 1);
}
Die meisten (alle) Warungen bekommst du weg, wenn du die Definitionen
und Funktionen so umsortierst, dass die Funktionsdefinition vor dem
ersten Aufruf der Funktion kommt. Du kannst alternativ auch die jetzige
Anordnung lassen und zusätzlich vor den Funktionsdefinitionen
Funktionsprototypen deklarieren.
Bei dem von dir kopierten LCD-Teil fehlt anscheinend auch die
Beschreibung bestimmter Definitionen für LcdSwitch (LCD_SWITCH_DISPLAY,
LCD_SWITCH_ALL). Die PDF-Anleitung ist in diesem Sinn lückenhaft. Du
könntest mal alle Ethernut Sourcen auf diese Stichworte durchsuchen, ob
die vielleicht irgendwo in einer Include-Datei oder in einem Beispiel
stehen. Eine Google-Suche bringt an der Stelle nur eine offene Frage.
Oder du vergisst das PDF und arbeitest mit dem vorhandenen hd44780.c
Wenn die kopierten Teile in simple.c raus sind, erledigen sich die
meisten (alle) Warnings. Die Fehler zu den unbekannten Symbolen dürften
sich dadurch auch erledigen. Die Routinen aus hd44780.c und
dev/hd44780.h benutzen die fehlenden Definitionen nicht bzw. bringen
eigene mit.
Hallo @all, ich habe das LCD am Ethernut 2.1 Board zum laufen bekommen. Für alle die Probleme damit haben, hier die Datei als Anhang Gruß Denis
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.