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.