LCD Zeichenfehler mit pfleury lib

Gast #75938
Lesenswert?

Ich nutze die Library von Peter Fleury und den ATmega16 um mein 2x40
Display anzusteuern.
Das klappt grundsätzlich auch, allerdings hab ich das Problem das
manchmal falsche Zeichen dargestellt werden oder nur ein Wirrwar. Ab
und zu wird aber auch alles richtig dargestellt. ein lcd_clrscr();
klappt übrigens nicht, ich weiß net warum.

Nun ist die Frage woran das liegt, kann mir da jemand weiterhelfen?

Gruß und danke schonmal
tacklemoe
Gast #75939
Lesenswert?

Hi,

die Fleurydateien kann ich überhaupt nicht empfehlen. Bei der LCD.c ist
schlecht, dass sie gar nicht funktioniert und zum anderen zu lang ist.
Das geht auch kürzer. Wer will denn schon eine 8 und eine 4 bit Version
zur Ansteuerung in einer Datei haben.

Ich komme auf weniger als ein Drittel vom Umfang her und lese auch das
Busyflag aus.

Rodrigez
Gast #75941
Lesenswert?

Hat dann jemand noch andere libs zum austesten?

@Peter
Was ich net ganz verstehe: Dein lib läuft bei mir soweit ohne Probleme
mit dem atmega16, testweise angeschlossene at90s8515 und atmega8535
geben auf dem Display keinen Mucks von sich.
Und wie angesprochen klappen die funktionen wie z.B. clrscr() nicht.
Bin am verzweifeln und um jede Hilfe dankbar :)

Gruß
tacklemoe
Gast #75947
Lesenswert?

Hmm, weißt du ne maximallänge oder so?
War halt so ein altes IDE Kabel das ich für den Zweck mißbraucht hab ;)
Aber ich werd's mal demnächst kürzen und testen, danke mal für den
Tipp :)
Gast #75948
Lesenswert?

@Peter:
Hab jetzt die Kabel gekürzt und klappt auch fast alles, nur Sachen wie
der clrscr() leider immer noch net. Die Zeichen werden aber immerhin
schon korrekt dargestellt :)

Gruß und danke
tacklemoe
Gast #75949
Lesenswert?

Frohe Weihnachten allerseits,
kann es sein, das die Funktion clrscr() nicht funktioniert, da die
Reihenfolge in der lcd.h nicht die selbe ist wie in der lcd.c ?

Beispiel:

lcd.h
extern ... function1(...)
extern ... function2(...)
extern ... function3(...)

lcd.c
... function1 (...)
{ x y z}

... function2 (...)
{ w u v }

... function3 (...)
{ w u v }


Änder einfach mal die Reihenfolge der Aufzählung in der LCD.h und
probier es aus oder schreib einfach mal lcd_command(0x01); statt der
Funktion.
Reini
Gast #75951
Lesenswert?

@tacklemo:

Eine Idee hätte ich noch, die sogenannte "execution time" beträgt bei
meinem Display für diesen Befehl 1,64ms.
Füg doch einfach doch ein delay von 2ms ein am Ende der CMD-write
Funktion(siehe unten)
Reini

else {    /* write instruction (RS=0, RW=0) */

       /* output high nibble first */
       LCD_DATA_PORT = (data>>4)&0x0F;
       lcd_e_toggle();

       /* output low nibble */
       LCD_DATA_PORT = data&0x0F;
       lcd_e_toggle();
     delay(2000);
Gast #75952
Lesenswert?

tacklemo hat mit per email mitgeteilt dass ein zusätzlich hinzugefügtes
lcd_waitbusy() vor lcd_command() die Probleme bei seinem Display
behoben hat.

Offenbar hat tacklemo ein LCD-Display erwischt das einen nicht 100%
kompatiblen Display-Controller beinhaltet.
Gast #75953
Lesenswert?

Hmm, ja muss tatsächlich am Display Controller liegen. Ich werd mal
gucken ob ich ein anders herkrieg zum testen.
An der Lib liegt's wohl nicht, also danke Peter für die Hilfe und
deine coole lib :)
Achso ich hätte einen Verbesserungsvorschlag:
auf www.jalcd.de unter "Schematics" ist zu sehen wie man die
Hintergrundbeleuchtung per Software steuern kann.
Vielleicht kannst du da ja in deine lib eine Funktion zufügen die im IO
Mode auch die Hintergrundbeleuchtung steuert (is ganz einfach aufegbaut
und braucht nur eine weitere Leitung).

Gruß und thanks
tacklemoe

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren