Pcitiva Oled 128x64

OP #769935
Lesenswert?

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
Gast #771614
Lesenswert?

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
Gast #771637
Lesenswert?

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
Gast #774975
Lesenswert?

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
Gast #774981
Lesenswert?

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.
Gast #775699
Lesenswert?

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
Gast #778039
Lesenswert?

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?
Gast #779152
Lesenswert?

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 ;)
Gast #781414
Lesenswert?

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?
Gast #782644
Lesenswert?

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
Gast #792626
Lesenswert?

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ß
Gast #792669
Lesenswert?

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
Gast #793916
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren