Hallo, hat jemand mit der Pictiva Oled von Osram 128x64 2,7 inch Pnr. OS128064PK27MxxA00 gearbeitet bzw. aus dem winterschlaf wecken können. Mir gelingt das nämlich nicht, ich versuche die Initialisierung Sequenz aus dem von Osram zur Verfügung gestellte Dok. "Calgary 4 Bits OLED Module Application Instruction,: AN018" aber anscheint muss ich ein paar Werte umändern, aber welche??? Ich weiss es gibt reichlich Beiträge über Pictiva und sogar eine Routine von Thorsten, aber es war für SPI und ich mache es mit Parallel Interface und das war auch für eine andere Model. Naja wenn jemand (Thorsten, Let, Tino......) helfen könnte waäre super. Dank in vorraus Raza
Erst mal einfach nur das "Display On" Kommando senden. Wenn er das akzeptiert, solltest du schon etliche Pixel leuchten sehen. Evt. auch mal versuchen das Status Register zu lesen. Dann siehst du ob dir das Display überhaupt antwortet.
www.icplan.de (piciva) Da ist sowohl der Anschluss beschrieben als auche in Programmbeispiel... Gruss Otto
Etwas länglich aber irgendwo gibt es da Anschlußbelegung + Code: Beitrag "[Q]Erfahrungen mit (Reichelt) Pictiva OLED Displays"
Hallo Haider, hast Du auch "BS1" und "BS2" auf high gesetzt ? Andernfalls hast Du seriell (SPI) angewählt. Das Programmbeispiel von "ICPLAN" ist auch für Dich verwendbar, wenn Du anstelle "sende_SPI" einfach an den Port ausgibst - zusätzlich muss "CS" und "WR" auf Low gezogen werden und "RD" High sein.... Gruss Otto
Hallo Haider, die Wahl des 80 / 68 - Interface ist nur dann wichtig, wenn Du das OLED als externen Speicher anschliessen möchtest. Wenn Du alles über Ports realisierst, ist es Wurst. Ich hatte "8080" gewählt, daher meine Angabe. In welcher Sprache schreibst Du (ich nehme an C)? Und denke daran: das Display hat 3,3V ! Gruss Otto
Ich bin mir sicher das es ein Beispiel für die parallele Ansteuerung im erwähnten Beitrag gibt. Es ist nämlich von mir.
Hallo Haider, Du musst das Display initialisieren (siehe www.icplan.de) und einschalten, sonst tut sich da nichts !!!! Gruss Otto
Hallo Haider, die obere Grenze ist 15V - also OK. Wie hast Du das Display aktuell angschlossen und welche Betriebsart verwendest Du mittlerweile ? Beim "8080" Modus sind die Signale wie folgt zu beschalten: Reset für 200 ms low, dann high RD = 1 CS = 0 Daten schreiben: DC = 0 WR = 0 Zeichen schreiben: DC = 1 WR = 0 Die Display-Spannung sollte erst nach erfolgter Initialisierung zugeschaltet und auch vor dem Abschalten der Logik-Versorgung ausgeschaltet werden. Du solltest das Programmbeispiel von "icplan" 1:1 übernehmen und nur "sende_spi" durch eine direkte Portausgabe ersetzen - dann sollte es laufen (wenn Dein Display noch ok ist). Anschliessend kannst Du die Ansteuerung umstellen, wie Du möchtest. Gruss Otto
Was mir am Code auf dem ersten Blick auffällt ist die WriteCommand() Funktion. Da wird erst E getoggelt und dann die Daten geschrieben. Es müssen zuerst die Daten anliegen und mit einem Wackler an E werden die dann vom Display übernommen. Die Init-Sequenz sieht bei mir auch ganz anders aus.
Hallo Haider, nein, Du kannst die Portpins nicht einfach "offen" lassen, sondern musst diese aud definierte Pegel legen: D0-D7-------Port4 CS----------Port 6.2 kann fest auf Masse E(RD#)------Port 6.4 kann fest auf 3,3V R/W(WR#)----Port 6.5 auf "Low", nachdem Daten anliegen D/C---------Port 5.4 umschalten Kommando/Daten Res#--------Port 5.5 nach Einschalten low, dann 3,3V BS2---------Port 5.6 3,3V 8080 BS1---------Port 5.7 3,3V 8080 Mit "1:1" meinte ich natürlich nur die Ansteuerung und nicht die "includes". Dus solltest die Auswahl des Interface fest beschalten und nicht über Portpins. Gruss Otto
> P5SEL = 0xF0; // Port 5 > P5OUT = 0x40; // BS1 = 0, BS2 = 1 Wenn du P5 als I/O nutzen willst, muss da natürlich P5SEL = 0x00; stehen.
Wenn du den Motorola Mode benutzt ist dein WriteCommand() immer noch kaputt. Die Daten werden bei steigender Flanke an E übernommen. Zu diesem Zeitpunkt müssen die Daten stabil anliegen und dürfen nicht geändert werden solange E high ist. Die CS Leitung ist so wie ich das sehe ständig low. Damit hatte ich Probleme. Und hast du mal die Init-Sequenz aus meinem Code probiert? Ich habe es nicht Byte für Byte verglichen aber er sieht anders aus. Die von dir erwähnte AppNote sagt mir jetzt nichts, doch wenn es nicht genau für das 2.7" Display ist muß es nicht unbedingt funktionieren weil das OLED intern möglicherweise anders verdrahtet ist. Wie schnell läuft denn der MSP? Hälst du damit das Timing ein? Und was für eine Anzeige erwartest du?
> muss erstmal auch wissen wie druckt man die Schnelleigkeit einer Mc > aus?? In MHz. Was hast du denn für einen Quarz an XT2 hängen?
So, habe mal kurz das Datenblatt überflogen. Das Display verträgt offenbar max. 3Mhz an seinem Datenbus. Die übrigen Zeiten scheinen mir zu kurz als das ein MSP da zu schnell wäre. Das dort angegebene Busprotokoll für den Motorola Modus verwirrt mich etwas. Ich glaube nicht das ich mal versucht habe mit dem OLED auf diese Art zu reden. Ich kenne das so: 1. R/W und D/C je nach Bedarf setzen (naja, R/W gehört hier auf low) 2. Daten auf Port schreiben 3. CS low 4. E high 5. E low 6. CS high CS kann man auch ganz am Anfang setzen. Das hat aber den Nachteil das wenn R/W high ist, die Datenleitungen des Displays Ausgänge sind. Hat man um einen Byte zu schreiben vorher schon am µC umgeschaltet könnte man sich das Display zerschießen. Bei vielen Displays kann man CS auch ständig auf low lassen, was beim Pictiva bei mir aber nicht richtig funktioniert hat. Ach ja, das Display-RAM wird nach dem Einschalten wahrscheinlich irgendeinen Müll enthalten. Von daher sollte nach der Initialisierung irgendetwas zu sehen sein. Ist es aber gelöscht, siehst du nichts. Gar nichts. Nicht mal ein Glimmen. Ehrlich ;)
> Bei vielen Displays kann man CS auch ständig auf low lassen, was > beim Pictiva bei mir aber nicht richtig funktioniert hat. Bei meinem Pictiva ist CS fest auf low.
Wie gesagt weiss ich nicht wie es beim 128x64 ist, bei meinen 96x36 reicht es aus das Display-On CMD zu senden. Dann sollten schon zufällige Pixel angesteuert werden. Hast du mal versucht das Status Byte zu lesen?
Hallo, ja habe ich versucht status Byte zu lesen aber jedes mal hat er irgendine andere Wert geliefert. Wie ich den empfangene Byte richtig interpretiere habe ich nicht zu ganz koppiert. z.B. wenn ich 0xA0 empfange was heißt das. Muss ich nur der linke Nibble lesen (A), und jeder Bit hat da zwei Bedeutung (jenachdem ob 0 oder 1) sehe ich das so richtig? Gruß raza
Hallo, So die Platine ist repariert und ich konnte ohne Probleme Display einschalten. Jetzt versuche ich Character anzuzeigen und dazu habe ich folgende Fragen. Braucht man unbedingt ein Fontgenerator oder Font um diverse charachter anzuzeigen wenn ja dann welche kämmen in Frag für MSP430 und was muss ich bei der Auswahl einer Font beachten. Kann ich für Oled 128x64 2,7 Inch bit-mapped Fonts (5x7 matrix) benutzen? Hab auch versucht in eure Programme verwendete Fonts zu benutzen aber halt ohne Erfolg, sehr viele Compiler Fehler. danke Gruß
Hallo Haider, wenn Du Zeichen anzeigen willst, benötigst Du auch einen Zeichensatz. Nimm den von "ICPLAN" für Deinen Controller - der funktioniert. Setze Zeile und Startspalte, lade das erste Pixelmuster mit dem Offset des ASCII-Zeichens (x6) und beschreibe die Spalten nacheinander mit den Pixeln, die für ein bestimmtes Zeichen benötigt werden. Der Displaycontroller erhöht die Spaltennummer automatisch. Gruss Otto
Hallo, hab versucht Zeichensatz von Icplan zu benutzen aber leider auch ohne Erfolg, Ich früchte ich brauche bisschen Nachhilfe um das richtig benutzen zu könen. erstens kriege ich bei alle Zeichensätze diese folgende Compiler Fehlermeldung Error[Pe065]: expected a ";" an folgende stelle: const unsigned char z_code[]PROGMEM = { und zweitens in Code von ICPlan für normale Zeichenausgabe steht a = pgm_read_byte(&z_code[stelle]); Der MSP430 kennt diese pgm_Read_Byte nicht oder? Das ist doch um Flash zu lesen oder? Außerdem hast du geschrieben: "Setze Zeile und Startspalte, lade das erste Pixelmuster mit dem Offset des ASCII-Zeichens (x6) und beschreibe die Spalten nacheinander mit den Pixeln, die für ein bestimmtes Zeichen benötigt werden." hab leider das auch nicht so ganz koppiert was du hier gemeint hast. Könntest du bitte das nochmal erklären. Danke Gruß Raza
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.