http://www.freak5mynew.no-ip.info/Muell/DisplayStreifenanzeigeMitVe.jpg So habe ich den Fehler entdeckt. Ich hatte schon die gesampte Bildschirmfläche gelöscht und auch schon alles mit schwarz zugemalt. Einzelne Zeilen habe ich auch schon beschrieben, wobei mir bei den einzelnen Zeilen schon einige Auffälligkeiten aufgefallen sind. Dann habe ich das Streifenmuster gezeichnet, welches einwandfrei angezeigt wurde. Nach diesem Muster habe ich das am anfang gezeigte, versetzte Streifenmuster gemalt und habe im Bereich der Unteren Bildschirmhälfte einen eigenartigen Fehler ausgemacht. Anstatt weiß wird ein zufälliges Muster gemalt. Ein vorheriges Löschen des Bildschirminhaltes bewirkt keine Änderung. http://www.freak5mynew.no-ip.info/Muell/DisplayStreifenanzeigeOhneV.jpg Ich kann mir diesen Vorgang nicht erklären, besonders wo die Timings keinen Einfluss auf dieses Phänomen haben. P.S.: Eigenartig ist auch das Verhalten beim Entfernen des Controllers! Vorher: http://www.freak5mynew.no-ip.info/Muell/DisplayStreifenanzeigeOhneV.jpg Nachher: http://www.freak5mynew.no-ip.info/Muell/DisplayStreifenanzeigeOhVeH.jpg Vorher: http://www.freak5mynew.no-ip.info/Muell/DisplayStreifenanzeigeMitVe.jpg Nachher: http://www.freak5mynew.no-ip.info/Muell/DisplayStreifenanzeigeMtVeH.jpg
Naja da habe ich herausgefunden, dass prinzipiell die Ansteuerung funktioniert. Außerdem dachte ich, dass dies nun eher ein neuer Fehler ist und das vorherige dazu keine Erkenntnisse liefert. Ich wollte keinen mit so viel Text überhäufen. Vielleicht ist das ja ein leicht zu klärendes Phänomen.
Achja.. Der Code für das Streifenmuster: LDI r19, 128 Vollschreiben1: LDI r20, 8 Vollschr1: LDI r16, 0b00000000 rcall DataWrite LDI r16, 0b11000000 rcall CommandWrite LDI r16, 0b11111111 rcall DataWrite LDI r16, 0b11000000 rcall CommandWrite dec r20 BRNE Vollschr1 dec r19 BRNE Vollschreiben1 Der Code für das versetzte Muster: LDI r19, 64 Vollschreiben1: LDI r20, 8 Vollschr1: LDI r16, 0b00000000 rcall DataWrite LDI r16, 0b11000000 rcall CommandWrite LDI r16, 0b11111111 rcall DataWrite LDI r16, 0b11000000 rcall CommandWrite dec r20 BRNE Vollschr1 dec r19 BRNE Vollschreiben1 LDI r19, 64 Vollschreiben: LDI r20, 8 Vollschr: LDI r16, 0b11111111 rcall DataWrite LDI r16, 0b11000000 rcall CommandWrite LDI r16, 0b00000000 rcall DataWrite LDI r16, 0b11000000 rcall CommandWrite dec r20 BRNE Vollschr dec r19 BRNE Vollschreiben
Mir ist jetzt noch aufgefallen, dass der Text auch Fehler aufweist. Die Zeichen sind zwar da, aber es fehlen oft Pixel. In bestimmten konstillationen verschwinden einige Zeichen ganz..
http://www.freak5mynew.no-ip.info/Muell/DisplayText.jpg Ich habe den Buchstaben alle zwei Zeichen einmal hochgezählt. Eigentlich sollte etwas in dieser Richtung erscheinen: http://www.freak5mynew.no-ip.info/Muell/DisplayText.gif Nur das ebend mit jeweils doppelten Zeichen. Eigenartigerweise wird z.B.: das "!" gar nicht angezeigt, obwohl das vorher funktioniert hat(dafür haben andere Zeichen vorher nicht funktioniert) Der Code(r19 ist der zu schreibende Wert. R20 ist der Zähler und r16 wird durch eine Funktion ausgegeben) LDI r19, 0 LDI r20, 64 Vollschr1: mov r16, r19 rcall DataWrite LDI r16, 0b11000000 rcall CommandWrite mov r16, r19 rcall DataWrite LDI r16, 0b11000000 rcall CommandWrite inc r19 dec r20 BRNE Vollschr1
Das lustige ist, dass Pixel, die bei einem Buchstaben da waren, beim nächsten Buchstaben wieder verschwunden sein können. Die Timings machen nichts aus...
Wenn ich zum Beschreiben des Displays dieses Muster nehme 1100110011000011 Anstatt dieses 1111111100000000 oder dieses 1010101010101010 zu wählen kommt auch irgend ein zufälliges Muster. Das kann ich mir einfach nicht erklären. Die Timings konnte ich übrigens um den Faktor 1000 verringern, ohne dass es mehr Fehler gab. Über 4sek sind die Timings sicher auch übertrieben und vermeiden tut das auch nichts.
Ich habe das jetzt noch einmal fotografiert http://www.freak5mynew.no-ip.info/Muell/DisplayFehlerMusterStrei.jpg Auf den ersten Blick sieht das ganz normal aus. Bei genauerem Hinsehen kann man aber fehlende Pixel am Rande der STreifen erkennen.
Naja bei dem B denkt man fast, dass man ein E hat. Da fehlen zu viele Pixel. Bei dem e und dem x besteht verwechslungsgefahr, da nur 3 Pixel gezeichnet werden und das b kann eher ein o sein. http://www.freak5mynew.no-ip.info/Muell/DisplayText.jpg Dort habe ich einfach einige Zeichen durchgezählt, indem ich ein Register hochgezählt habe. Da sind einige Zeichen fast gar nicht draufgekommen. Andere sehr gut. Dabei habe ich z.B.: Das "!" Welches gar nicht drauf war vorher einwandfrei auf dem ganzen Bildschirm ausgegeben. Merkwürdig finde ich, dass viele Buchstaben nur bedingt ausgegeben werden, so dass Pixel fehlen. Erst dachte ich, das liegt an der Kontrastspannung, weil viele Pixel auch verdammt blass sind. Aber ich habe da 22.5V drauf und das ist Bedingt durch die 12V Leitung meines Netzteils, welche nicht die vollen 12V sondern eher 11V liefert. Das mit den Pixeln hätte ich mir ja dadurch erklären können, dass einige einfach tot sind, aber ich kann den bildschirm einfach komplett weiß oder komplett schwarz machen, ohne das Fehler auftreten. Auch ein 1px Streifenmuster wird fehlerfrei angezeigt. Aber schon das versetzen der Streifen kann Fehler hervorrufen. Ich verstehe das irgendwie nicht. Dem Controller müsste das Muster doch egal sein. Wenn überhaubt, dann sollte sich vielleicht das Timing ändern...
Ein gutes Beispiel sind die "(" und ")" Zeichen. Bei dem "(" fehlen mindestens drei Pixel, was im Bezug auf die restlichen Zeichen fast sogar gut ist. Oder muss ich dieses Rom vorher auch Aktivieren, damit die Buchstaben keine Grafikfehler beinhalten? Ich habe das eigentlich anders verstanden.
22,5V Kontrastspannung? Hast du dich da nicht verschrieben? Das ist ziemlich hoch. Meine T6963C-Displays arbeiten beim Kontrast mit max. -12V. Gruß Elektrikser
Datenblatt des TLX1391 Seite 6 meint -14,5V. Mein großes TLC1091 kommt mit -9V aus. Meintest du eigentlich +22,5V oder -22,5V? ...
Wenn die Kontrastspannung in dieser höhe falsch anlag, kannste dir gleich ein neues LCD besorgen! ;)
Ach ich meinte zu Kontrast zu 12V gemessen. Das waren also -11.5 im Verhältnis zu GND. Wenn ich das Poti nur ganz leich zu einer seite drehe wird es schnell blass auf dem Bildschirm und nach ungefähr 0.1 Umdrehungen ist das Display kokmplett weiß. Das ist praktisch nichts. Ich könnte mir das Potentiometer eigentlich sparen, oder sollte darüber nachdenken, die Wiederstände zu GND zu erhöhen, damit ich mit dem Poti noch irgendwas anfangen kann. Aber eigentlich ist der Auschlag so wie so schon fast auf der maximal möglichen Kontrastspannung. Das Poti welches zwischen den Widerständen und dem Inverter liegt ist ja so wie so voll zum Inverter gedreht. GND-10KOhm-10KOhmPoti-Inverter
Hier habe ich noch einmal das klassische Streifenmuster aufgezeichnet. Diesmal habe ich aber die obere Hälfte einfach weiß gezeichnet. Es ist kein Fehler zu erkennen. http://www.freak5mynew.no-ip.info/Muell/DisplayOK_ObenGel.jpg Kann es sein, dass das Display mit einem zunehmenden Schwarzanteil irgendwie überlastet wird? Aber das kann eigentlich nicht sein, weil man sonst gar keinen Text anzeigen lassen könnte!
http://www.freak5mynew.no-ip.info/Muell/DisplayOK_UntenKomp.jpg Das hier funzt auch. Ich habe extra nicht alles verändert, damit ich auch den tollen Kontrast meines Displays bewundern könnt. Kann irgendjemand das erklären? Wo ist der unterschied zwischen dem hier, oder dem Ausdehnen des Musters auf den gesampten Bildschirm?
Was willst du uns eigentlich mit deinen Fotos zeigen? Deine Streifen und Muster mögen zwar beeindruckend sein, aber ist es auch das, was du programmiert hast?? Wenn ich bei meinem T6963-LCD den Controller ziehe und ein geeignetes Netzteil nehme, was neben den +5V auch die -9V erzeugt, dann habe ich auch zufällige Muster auf dem LCD (siehe Bild). Manchmal blinkt da sogar etwas. Oft ist es aber einfach nur gleichmäßig leer (also kein Muster). Wenn du ergründen willst, ob dein LCD korrekt arbeitet, dann musst du systematisch vorgehen. Da bringt es nix, Streifen oder Muster zu erzeugen, die kannst du nicht oder nur schwer auf Korrektheit überprüfen. Du musst da Text ausgeben, denn nur dann kannst du ohne großen Aufwand feststellen, ob auch der Text, den du programmiert hast (und nur der und kein anderer!!!) an der Stelle, die du dafür vorgesehen hast (und nur dort und nicht irgendwoanders!!!), erscheint. Erst wenn die Textausgabe hundertprozentig und reproduzierbar klappt, lohnt es sich, mal über Grafik nachzudenken. ...
http://www.freak5mynew.no-ip.info/Muell/DisplayOK_UntenKomp.jpg http://www.freak5mynew.no-ip.info/Muell/DisplayOK_ObenGel.jpg Diese Muster wurden zum Beispiel Fehlerfrei erzeugt. http://www.freak5mynew.no-ip.info/Muell/DisplayFehlerMusterStrei.jpg Hier fehlte immer ein Pixel (das kann man an den Kannten sehen) http://www.freak5mynew.no-ip.info/Muell/DisplayStreifenanzeigeMitVe.jpg Und hier ist in der zweiten Hälfte anstatt weiß ein zufälliges Muster angezeigt. Ich verstehe nur nicht, warum nur bestimmte Muster eine totale Zufälligkeit hervorrufen und andere zu 100% Korrekt angezeigt werden, nur weil ich mich auf die untere Bildschirmseite beschränke... Ich habe beim Text übrigens auch eigenartige Grafikfehler!
Woher nimmst du die Gewissheit, dass die Muster fehlerfrei erzeugt werden. Bist du sicher, dass dein Wissen schon ausreicht, Grafiken auf dem LCD auszugeben? Ich halte das für Zufall. Ich glaube bald, Hubert hatte Recht, das LCD wäre woanders wirklich besser aufgehoben... (http://www.mikrocontroller.net/forum/read-1-179974.html#180885) ...
Solange man die Grafiken nicht Pixelgenau positionieren möchte, sondern auf der y-Achse in 8px Schritten läuft ist das Ausgeben doch kein Problem?? Der Unterschied zwischen einem Pixel und einem Bild ist bei den Displays doch eigentlich nicht vorhanden. Man muss einfach ein paar Pixel hinterherschieben und schon hat man ein Bild. Meinst du, dass es ein Zufall ist, dass die Pixel genau da sind, wo ich sie hinhaben wollte?
Eine Eigenart ist, dass ich jedes Muster, welches ich ausgeben wollte bis jetzt fehlerfrei ausgegeben habe, wenn ich die erste Hälfte des Bildschirms weiß gemalt habe. Das irretiert mich sehr.... Wobei mir auffällt, dass ich mich sicher auch noch um den Speicher des Textmodes kümmern sollte, wenn ich diesen nicht ganz abgeschaltet habe. Was noch nicht erklärt, warum Pixel im Textmode fehlen, wenn ich das Display auf Textmode only stehen habe und warum alles funktioniert, wenn der Grafikmodus an ist und die erste Hälfte mit weiß beschrieben wurde....
Schachbrettmuster werden so in allen Variationen fehlerfrei dagestellt. Mit fehlern werden sie dagestellt, wenn sie den ganzen Bildschirm bedacken sollen...
Meinen Namen kann ich auf dem Display im Textmodus auch schreiben. Das funktioniert aber nur in gewissen bereichen des Displays und es fehlten 3px beim "B". Das finde ich immer noch eigenartig.
Das mit den Fehlern kommt übrigens auf die Position an. In Zeile 1 und 2 verschwindet die Schrift fast vollkommen. in 3 ist sie zum Teil fehlerhaft und in Zeile 4 ist alles zu 100% OK!
@freak5: Bendix, wenn deine Fehler immer an den selben Stellen des Displays sind, dann könnten (Hardware-) Fehler im RAM sein (evtl. durch ESD verursacht?). Oder Pixelfehler im Display (Verbindung Platine -> Displayträger-Glasplatte). Teste es doch erstmal im Textmodus mit verschiedenen Zeichen (den gesamten Zeichensatz), dann im Grafik-Modus das Verhalten benachbarter Pixel in den fehlerhaften Bereichen. Als Fehler kommen hauptsächlich in Betracht: Im RAM: - Schluss nach GND - Schluss nach Vcc - Schluss zum Nachbarbit An der Verbindung Platine-Display: - Schluss zur Nachbarleitung - Leitungsunterbrechung Aus welchem Material ist eigentlich die blaue Matte, auf der du arbeitest? Ist die antistatisch?? ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.