Re: Fehler im Modul pcflcd?? Kategorie: I²C-Bus (von André H. - 10.10.2002 19:13) | |
Als Antwort auf Fehler im Modul pcflcd?? von Christian H. - 10.10.2002 17:24
| |
Hallo Christian, Ich habe bei der Anpassung des Moduls für 4x16LCDs vergessen, in der Funktion goto() etwas zu ersetzen. Korrekt mu� diese so lauten: { if line & 0x01 LCD_WriteCommand(0x80+(chars_per_line*(line shr 1))+pos); else LCD_WriteCommand(0xC0+(chars_per_line*(line shr 2))+pos); } Die If-Bedingung selbst stimmt. Bei Zeile 1 und bei Zeile 3 mu� der If-Teil ausgeführt werden. Bei Zeile 2 und bei Zeile 4 mu� der else-Teil ausgeführt werden. Dies hat folgenden Grund: Zeile 3 ist die Verlängerung von Zeile 1 und Zeile 4 ist die Verlängerung von Zeile 2. Ich werd ein Kürze eine neue Modul-Version hochladen. Bei dieser ist goto() dann korregiert. Bei dem goto mit dem Bug müssten aber alle Zeichen beim 4x16 in Zeile 3 um 4 Zeichen zu weit Rechts und nicht zu weit Links ausgegeben werden ! MfG André H. > Hallo beisammen! > > Ich weiss nicht, ob es an mir oder meinem LCD (4x16; Displaytech 164A) liegt, > oder ob es ein Fehler im Modul pcflcd ist. Jedenfalls gibts bei mir Probleme mit > pcflcd.goto(); hier wird in Zeile 3, und nur in dieser, die Position falsch gesetzt... > immer 4 Zeichen weiter links wie aufgerufen. > > Ich hab jetzt den Original-Code: > > if line & 0x01 > { > LCD_WriteCommand( 0x80 + ( 20 * (line shr 1) ) + pos ); > } > else > LCD_WriteCommand( 0xC0 + ( chars_per_line * (line shr 2) ) + pos ); > > in der ersten Zeile ersetzt mit: > > if line == 1 > { > > und jetzt funktionierts. > Original springt CC2 ja auch bei line == 3 ins if und nicht ins else, das wirds wohl > gewesen sein... > > Wär nur interessant ob das an meinem LCD liegt - und ich hab keine Lust das > Datenblatt des Controllers zu wälzen - kennt jemand das Problem? Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | |
Antwort schreiben Antworten: Re: Fehler im Modul pcflcd?? (von Christian H. - 10.10.2002 21:50) |