Forum: Mikrocontroller und Digitale Elektronik Ethernut 2.1 LCD Display


von Denis Jakel (Gast)


Angehängte Dateien:

Lesenswert?

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

von ... .. (docean) Benutzerseite


Lesenswert?

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...

von Denis Jakel (Gast)


Angehängte Dateien:

Lesenswert?

Hier nochmal als Zip File

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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.

von Denis Jakel (Gast)


Angehängte Dateien:

Lesenswert?

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