PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Pollin (Wintek) 4x27 LCD



Thomas_R.
01.03.2006, 23:27
Hi zusammen,
ich verzweifel seit einiger Zeit mit dem Display.

Ausgangspukt war das Umschreiben der LCD Ansteuerung von Peter Fleury zur Ansteuerung des Pollin Displays. Anfangs mit einer Nachbildung aus zwei Displays und dann als die Lieferung kam mit dem richtigen Display.

Nun stehe ich in einer Sackgasse und komme nicht weiter.

- Display haengt an Port D.
- Wenn ich das Programm schreibe werden anschliessend alle 4 Zeilen sauber angezeigt.
- Nach einem Reset (egal ob per Software oder Power On Reset) ist dann aber jeweils wieder die Displayhaelfte die ich als zweites initialisiert habe "tot". Es erscheinen nur Schmierzeichen. Mal mehr mal weniger.
- Es ist voellig egal ob ich E1 und E2 hardwaremaessig oder softwaremaessig tausche oder die Reihenfolge der Initialisierung aendere. Jeweils die als letzte initialisierte Displayhaelfte spinnt nach einem Reset.
- Manchmal sind nach einem Reset ganz kurz alle vier Zeilen zu sehen (selten). Dann ist wieder sofort Muell auf der zewiten Haelfte.
- weitere delays an unterchiedlichen Stellen brachten keine Aenderung.
- meine umgeschriebene lcd.c unterstuetzt verwendete und auch nicht verwendete R/W Leitung. In beiden Faellen der gleiche Effekt.

Hat da irgendjemand eine Idee? Das es nach dem Programmieren erstmal klappt verwirrt mich ja so. Deshalb glaube ich nicht an einen echten Programmfehler. Muss irgendwie mit der Ansteuerung selber zusammenhaengen und den gemeinsamen Leitungen.

Falls jemand den Code probieren will, haengt er als Attachment dran.
Eingestellt auf PORTD sowie R/W auf Masse. R/W kann in der lcd.h mit LCD_RW_PIN_USED eingestellt werden.

Bin fuer jeden Ratschlag dankbar.
Gruss
Thomas

Thinker
13.03.2006, 20:12
@Thomas_R.

ich hab mal deinen Code getestet....bei mit genau das gleiche.
Wenn ich zwei bis dreimal den Reset drücke dann passt alles....
Die Zeilen werden korrekt angezeigt....

Gruß

Thomas_R.
13.03.2006, 20:32
Hi Thinker,
bin seit gestern spaet Abends einen Schritt weiter.
Lasse es aber gerade noch von anderen Testen.

Das Programm selber ist eigentlich fehlerfrei. Nur das Display macht hier einen Strich durch die Rechnung.
Fuer die Initialisierung brauche ich Data0 und Data1. Wie in allen Implementierungen die ich kenne und auch selebr verwende bin ich davon ausgegangen das es reicht, die beiden Pins zu setzen und vom ueblichen Gedanken auszugehen das automatisch der Prozessor beim Initialisieren Data2 und Data3 auf Low setzt.
Pustekuchen. Anfangs ist ja noch alles OK. Kaum habe ich dann aber den ersten Prozessor des Displays initialisiert spielen Data2 und Data3 verrueckt. Zum Teil sitzen die ploetzlich auf High. Pulldown Widerstaende haben das sogar noch verschlimmert.
Ich setze nun die beiden Pins jeweils vor der Initialisierung explizit auf low. Und schon klappt es prima.
Wenn der Code ausgetestet ist stell ich ihn hier rein. Vielleicht kann ihn ja jemand brauchen.
Ist glaube ich die erste Implementierung die wahlweise mit und ohne RW arbeiten kann, alle Pinbelegungen unterstuetzt und egal ob mit oder ohne RW das wunderschoene C Newline Konstrukt /n kann.

Thinker
13.03.2006, 20:41
Das hört sich mal echt gut an!!

Bin schon auf den Code gespannt!!

Gruß

Jango
23.08.2006, 13:29
Der kommt wohl nicht mehr ;-)

Thomas_R.
23.08.2006, 13:44
Der kommt wohl nicht mehr ;-)
Ooops. Sorry. Ich wusste doch das ich es irgendwo noch vergessen habe.
Angehaengter Code funktioniert nun. Ist auf PORTB eingestellt. RW enabled.
Bei Aenderungen beachten, das bis auf E1 und E2 alle Pins frei auf die Ports verteilt werden duerfen. E1 und E2 muessen aber auf dem gleichen Port liegen.

Jango
23.08.2006, 18:35
Werde ihn mal ausprobieren, cool dass Du noch dran gedacht hast ;-)