Hi,
kurze Frage hatte hier jeman schneinmal das Problem das egal was ihr dem
Display schreiben wollt der Schirm immer Schwarz ist also auch nicht
gecleard werden kann (nach Init schwarz).
Was ich bis jetzt sagen kann an zu schneller Datenübertragung kann es
nicht liegen habe DELAYs.
LG
Hi
>...das Problem das egal was ihr dem>Display schreiben wollt der Schirm immer Schwarz ist also auch nicht>gecleard werden kann (nach Init schwarz).
Wenn das Display nach der Init nicht 'gecleard' wird erscheint ein
zufälliges Pixelmuster. Wenn deins schwarz ist, stimmt etwas mit der
Initialisierung nicht.
MfG Spess
Ohne Angaben zur Schaltungsvariante bringt das nix, da die Booster bei
anderer Verschaltung andere Spannungen liefern und somit andere
Kontrastwerte eingestellt werden müssen. Die Betriebsspannung wäre auch
noch wichtig zu wissen.
Deine Initialisierung deutet auf Einfach-Versorgung von 3.3V hin. Ist
das korrekt? Wenn ja, nochmal alle (Pump-)Kondensatoren ueberpruefen...
Wenn das auch nichts gebracht hat, Schaltplan inkl. aller Infos posten.
Volker
Achso ja also ich betreibe es mit 3,3V d.h. mit dem oberen Beispiel auf
Seite 4 aus dem Datenblatt:
http://www.lcd-module.de/pdf/grafik/dogm128.pdf
Boost habe ich wie im Post zu sehen auf 4x eingestellt.
Das Display ist weiter hin an dem SPI eines ATmega32 angeschlossen.
Die Verbindungen zwischen LCD und M32 habe ich alle schon geprüft. Die
Kondensatoren auch.
lg
Timo Reinert schrieb:
> Achso ja also ich betreibe es mit 3,3V d.h. mit dem oberen Beispiel auf> Seite 4 aus dem Datenblatt:> http://www.lcd-module.de/pdf/grafik/dogm128.pdf> Boost habe ich wie im Post zu sehen auf 4x eingestellt.> Das Display ist weiter hin an dem SPI eines ATmega32 angeschlossen.> Die Verbindungen zwischen LCD und M32 habe ich alle schon geprüft. Die> Kondensatoren auch.>>> lg
Wie sieht die Ansteuerung/Beschaltung von /CS, /RST und A0 aus?
Pull-ups?
Hier sieht das in etwa so aus:
Also A0,CS,RST und natürlich der SPI sind mit dem MCU verbunden ohne
ext. PullUps.
RST ist normal high. A0 ist dementsprechen 0 oder 1 jenachdem ob
Commandos oder Daten gesendet werden. CS ist immer dann low wenn ich
etwas sende, nach dem senden geht dieser wider auf high. Und bei Reset
geht RST = 0, Delay 50ms und dann wieder RST = 1.
lg
Ich habe vor zwei Tagen das erste mal angefangen ein DogL-128
anzusteuern (Ansteuerung identisch mit DogM-128). Ich betreibe es nur
mit 3,3V und habe auch dementsprechend die Initialisierung vorgenommen.
Nach dem ersten Versuch hatte ich auch das Problem, dass das Display
komplett schwarz war und nichts weiter angezeigt wurde. Das Problem in
meinem Fall war, dass ich davon ausging, dass das LCD einen eingebauten
Powerup-Reset hätte. Das scheint aber nicht der Fall zu sein. Nachdem
ich dann also zu Beginn einen definierten Reset ausgeführt hatte, zeigte
es ein zufälliges Pixelmuster an. Vermutlich liegt das dadran, weil der
interne Ram zu beginn undefiniert gefüllt ist. Ein anschließendes
Beschreiben des LCD mit Nullen für den gesamten Bereich hat das LCD dann
gelöscht. Seit dem funktioniert es problemlos und ich habe heute schon
einen eigenen Font dafür geschrieben. :)
Achja und ich verwende CPOL=1 (idle clk=1) CPHA=1 (bei steigender
Flanke übernehmen).
Hier mein Beispielcode für einen LPC935 (8051):
Tut mir leid hatte die letzten Tag viel zutun. Danke für deinen Code
werde die Initialisierung heute Mittag gleich mal ausprobieren.
Wie hast du den Funt gemacht?
Einfach eine Tabelle, oder wie?
mfg
Timo Reinert schrieb:
> Wie hast du den Funt gemacht?> Einfach eine Tabelle, oder wie?
Ich habe für den Font ein zweidimensionales Array benutzt. Das Array ist
dann als Konstante Font[x][y] aufgebaut, wobei x für das ASCII Zeichen
(minus 0x20, da ich mit Space als erstem Zeichen arbeite) und y von 0-4
für die 5 Bytes der Spalten des jeweiligen Zeichens stehen.
Die meisten Zeichen habe ich im Internet gefunden gehabt. Ein paar
Sonderzeichen habe ich aber verändert, weil diese nicht gut aussahen. :)
Falls du dir den gesamten Beispielcode samt Font anschauen willst, dann
schau mal in [1] rein.
Ciao,
Rainer
[1]
https://quakeman.homelinux.net/viewvc/uVision/trunk/Test_LCD_DogL128/test_dogl128.c?view=markup
Das Display hat mit dem AtMega168A perfekt funktioniert. Aus
Speicherplatzproblemen verwende ich jetzt den AtMega328P. Nun wird
sofort wenn das Display eingeschaltet wird ein zufälliges Pixelmuster
angezeigt welches zwar durch Buchstaben und Zeichen überschrieben wird
aber durch die lcd_clear..() Befehle nicht wegzubringen ist.
Der Code ist nach wie vor 1:1 gleich wie jenes vom M168A und jegliche
verwendete Register und Einstellungen habe ich in den Datenblättern
kontrolliert und sind ebenfalls gleich.
Die ausgegebenen Zeilen (Schrift) wird wie gewünscht angezeigt. Das
Problem liegt darin das alle lcd_clear..() Funktionen nicht
funktionieren und nie eine Zeile gelöscht wird sondern nur die nächste
Zeile darüber geschrieben wird und das Pixelmuster im Hintergrund immer
zu sehen ist.
Hatte schon jemand ein ähnliches Problem oder weiß woran es liegen
könnte?
Meine v_Clear() Methode macht ja nichts anderes als das LCD vollständig
mit weißen Pixeln zu überschreiben, da es keine native clear Funktion im
Display gibt. Probier doch mal das LCD mit der gleichen Farbe zu füllen
ob das geht (v_Rect() Methode). Dabei ist es egal ob weiß oder schwarz.
Ansonsten hatte ich mit meiner v_Clear() Methode noch nie Probleme
gehabt.