Hallo, ich habe ein 128x64 LCD Display mit 2 KS0108 Controllern. Das ganze programmier ich mit dem avr-gcc. Ich hab eine Routine die sieht so aus: void lcd_goto(uint8_t page, uint8_t address); Sie wählt den richtigen Controller aus und sendet die Befehle um die Page und die Addresse zu setzen. Das funktioniert auch (zum Test Daten dort ausgegeben). Eine zweite Funktion liest an der aktuellen Stelle Daten vom Display: void lcd_read(); Nun hab ich versucht die beiden in Kombination zu verwenden: lcd_goto(0, 0); data = lcd_read(); Das liest aber immer wirrwarr. Dann hab ich bei Google folgende Seite gefunden: http://piclist.com/techref/microchip/language/c/ks0107.htm - Dort (in der Funktion lcd_plotpixel auf der Seite) macht er es etwa so: lcd_goto(0, 0); lcd_read(); // dummy data = lcd_read(); Damit geht es auch bei mir! Kann mir einer erklären warum das so ist? Ich habe in meiner Doku des Displays nichts darüber gefunden. Liebe Grüße, Thomas
Haste mal probiert statt des Dummies einfach ne gewisse Zeit zu warten nach der Cursorpositionierung? Vielleicht braucht das Display einfach ne Weile eh die Daten zur Verfügung stehen? Ich hatte mal ein Display das hat nach ner Positionierung immer das Erste Zeichen des auszugebenden Strings verschluckt wenn man direkt danach ne Ausgabe gemacht hat. Wenn dazwischen irgendwas Anderes stattfand wurde der String korrekt ausgegeben. bye Frank
Hab ich vergessen zu erwähnen: An den Zeiten kann es nicht liegen, denn ich hab schon versucht das Busy-Flag zu überprüfen und eine sehr sehr lange Wartezeit. Gruß
Ich hab auch ein solches Display. Läuft an sich wunderbar, allerdings läuft das Lesen überhaupt nicht. Ich verzichte aber sowieso auf den Lesevorgang. Hab den ganzen Displayinhalt im RAM gespeichert. Ich schreibe diesen Raminhalt dann auf einmal ins Display. Und lesen kann ich aus dem RAM ja problemlos. Gruß
Das kann ich mir beim mega16 (1kb ram) nicht leisten weil das schon 1,5kb wären :((
Hmm, stimmt. Hab hier nen Mega128, also vom Speicher her kein Problem. Kannst du dir ein externes Ram erlauben? Aber ist schon komisch, daß das mit dem lesen nicht fuktioniert. Ich hab das auch schon von jemand anderem gehört, der das gleiche Problem hatte.
Ich hab gerade diese Tage mit dem Displaytech 64128A mit KS108 gebastelt. Zugegeben ich progge unter Bascom, aber am Prinzip der Ansteuerung tut sich das nix, zumal ich mir meine eigene Lib für gebastelt hab. Also, mein Ablauf. 1. berechnen ob CS0 oder CS1 2. berechnen welcher Frame (Y) 3. setzen des Frames. 4. Frame auslesen Dafür brauchts 2 Schritte: Aus dem Datenblatt: Output register stores the data temporarily from display data RAM when CS1 or CS2 is in active mode and R/W and RS=H. Stored data in display data RAM is latched in output register. When CS1 or CS2 is in active mode and R/W=H, RS=L, status data (busy check)can be read out. To read the contents of display data RAM, twice access of read instruction is needed. (!!) In first access, data in display data RAM is latched into output register. In second access, MPU can read data which is latched. That is, to read the data in display data RAM, it needs dummy read. But status read does not need dummy read. 1. Die Diplaydaten ins Ram des Display 2. Die Displaydaten an die Pins raus. Dann Abfrage über Mega, aber nicht über xy=porta sondern x.1 =pina.0 Übers Pinregister !!! 5. Den Frame wieder setzen auf gleiche Position, weil der KS108 automatisch bei jeder Operation ein Frame weiter geht. 6. Frame Schreiben, alte und neue Daten per Oder-Verknüpfung übereinander gelegt
Also ich habe das so in Erinnerung das mit dem Senden des Dummy erst eine Übertragung eingeleitet wurde. Das hat tatsächlich mit den Zeiten gar nichts zu tun. Nur das Lesen startet erst wenn der Controller des LCD den Dummy empfangen hat. Stand meines wissens aber auch in dem Datenblat das ich dazu habe. Bei interesse krusch ich es mal raus ;-) Mfg Max
Ok Marko hat die Sache ja aufgeklärt. In dem Datenblatt von meinem Display steht es nicht :/
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.