Forum: Mikrocontroller und Digitale Elektronik Kleiner Bug in der Fleury LCD-Lib


von Max D. (max_d)


Lesenswert?

Ich bin grade am basteln mit einem LCD in nem Projekt und nach einigen 
Stunden Ärger und hin&her hab ichs jetzt laufen.
Die Ursache war, dass in der LCD-Lib von P.Fleury (quasi das 
Standard-werk ^^) eine kleine Unsauberkeit drinnen war.

Die lcd_init sah bei zeile (ind lcd.c) ~540 (hab vorher schon bischen 
rumgeschoben deswegen so unpräzise) so aus:
1
    LCD_DATA1_PORT |= _BV(LCD_DATA1_PIN);    // LCD_FUNCTION>>4;
2
    LCD_DATA0_PORT |= _BV(LCD_DATA0_PIN);    // LCD_FUNCTION_8BIT>>4;
Wie man sieht werden die beiden höheren Bits (2 und 3) mit 0 angenommen.
Bei mir waren die das aber (aus ungeklärter Ursache ?) nicht.
Mit einer minimalen Verbesserung:
1
    LCD_DATA3_PORT &= ~_BV(LCD_DATA3_PIN);
2
    LCD_DATA2_PORT &= ~_BV(LCD_DATA2_PIN);
3
    LCD_DATA1_PORT |= _BV(LCD_DATA1_PIN);    // LCD_FUNCTION>>4;
4
    LCD_DATA0_PORT |= _BV(LCD_DATA0_PIN);    // LCD_FUNCTION_8BIT>>4;
Läuft jetzt mein Disp (vorher war nur die typische helle erste Zeile zu 
sehen).

Ich schreib das aus 2 Gründen:
1. Um anderen Leuten mit dem gleichen Problem zu helfen
2. Um euch zu fragen: Lohnt es sich an den Autor mit diesem Ding 
heranzutreten? Oder hatte ich mit meinem Setup einfach nur massiv Pech ?

Grüße,
Max

€dit: typos

von Marian (phiarc) Benutzerseite


Lesenswert?

Max D. schrieb:
> Bei mir waren die das aber (aus ungeklärter Ursache ?) nicht.

Irgendwo anders in deinem Code musst du ja in die Register schreiben...?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Marian B. schrieb:
> Max D. schrieb:
>> Bei mir waren die das aber (aus ungeklärter Ursache ?) nicht.
>
> Irgendwo anders in deinem Code musst du ja in die Register schreiben...?

Da ich Richtung und Ports immer mit sinnvollen Werten vorbelege, fällt 
mir das nie auf. Erst dann kommt die lcd_init().

von Max D. (max_d)


Lesenswert?

Ok, jetzt bin ich komplett verwirrt. Hab das ganze .lss durchsucht und 
es wird nirgendwo anders (ausser den anderen fleury Funktionen) auf 
portb geschrieben. Dann habe ich versucht es einzugrenzen indem ich erst 
den einen und dann den anderen clear Befehl auskommentiert habe. Jetzt 
läuft es auch OHNE die Befehle....
Ich lass es jetzt einfach so und freu mich, dass das Display 
funktioniert.

von Uwe (de0508)


Lesenswert?

Hallo Max,

ich möchte noch die Implementierung von Peter Dannegger (peda)

# 
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=102296
Beitrag "Re: C/C++ LCD Lib für Arduino 2560 Board mit LCD Shield 1602"

erwähnen, die auch einen sehr guten Code erzeugt.

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.