Forum: Mikrocontroller und Digitale Elektronik Probleme mit OLED Display EA W202-XLG


von Hannes H. (mui)


Lesenswert?

Hallo Zusammen,
ich habe ein 2*20 Zeichen Oled-Textdisplay von EA um damit ein 
44780-kompatibles LCD zu ersetzen. Das Display ist an einem 
PSOC5-Eval-Board von Cypress angeschlossen, die Entwicklungsumgebung ist 
PSOC-Creator. Ich verwende die dort vorhandene LCD-Routine.
Der Controller des OLED ist ein WS0070 und bereitet mir dabei ein paar 
Probleme. Wenn ich das LCD einfach durch das OLED ersetze kriege ich 
zwar einen Text, allerdings läuft dieser durch und die zweite Zeile kann 
nicht angesprochen werden.
Wenn ich die Startadresse des DDRAMS in der Routine auf das OLED 
anpasse, erhalte ich gar keine Anzeige, die Routine bleibt bei der 
Abfrage des Busy-Flags hängen...

Lange Rede, kurze Frage:
Hat jemand dieses Display schonmal erfolgreich in Betrieb genommen? Oder 
Erfahrungen mit der LCD-Routine von Cypress? Vielleicht muss ich dort 
noch mehr anpassen? Oder hat jemand noch einen guten Tipp, nach was ich 
noch schauen könnte?

Viele Grüße,
Hannes

von Olaf R. (gruser)


Lesenswert?

Hallo Hannes,

bist du eventuell schon alleine weitergekommen?

Ich habe nämlich genau das gleiche Problem mit einem EA W162-X9LG von 
Electronic Assembly.

Das Ding bleibt schon in der Initalisierungs-Routine stecken - und zwar 
auch bei der Abfrage des Busy-Flags. Schon beim Start habe ich hier eine 
"1" und es geht bei mir nie auf "0" (nicht busy).

Wenn Du neue Erkenntnisse haben solltest wäre ich dankbar einen Tipp zu 
bekommen.

Grüße
gruser




Hier zur Info meine Prozeduren:


void WriteIns (char instruction)
  {
  TRISB = 0b.0000.0000;  // Dataport als Ausgang
  RS = 0;
  RW = 0;
  PORTB = instruction;
  EN = 1;
  pause (10);
  EN = 0;

  CheckBusy();
  }


void CheckBusy (void)
  {
  bit busy_f;

  busy_f = 1;

  TRISB = 0b.1000.0000; // BUSYPIN als Eingang setzen
  RS = 0;
  RW = 1;
  do
    {
    EN = 1;

    pause (10);

    busy_f = BUSYPIN;
    EN = 0;

    pause (10);
    }
  while(busy_f);

  Check = 1;    // Hier bleibt Programm hängen, Check wird nicht "1"

  }

von Hannes H. (mui)


Lesenswert?

Hi,

bin selber auch noch nicht weiter gekommen, habe mich jetzt allerdings 
auch nicht mehr intensver damit auseinandergesetzt (Zeit hat gefehlt).

Ich habe auch schon mit dem Support von EA telefoniert, dort hat man mir 
versichert, dass der Quellcode, der dem Datenblatt beiliegt, tatsächlich 
aus einem funktionierenden Programm rauskopiert wurde...

Weitere Tips waren Pegel, Leitungslängen, Pausenzeiten, etc... passt 
soweit alles bei mir.

Als Tipp sagte er noch, dass man statt des Software-Resets einen 
Hardware-Reset machen soll (Power on/off). Das konnte ich bisher noch 
nicht probieren, da auf dem Board, die Spanungsversorgung fest ist.

Probiert habe ich ausch schon das Busy-Flag gar nicht auszulesen, 
sondern einfach zu warten - ohne Erfolg bisher.

Aber ich gucke mir da jetzt mal wieder an und werde dich auf dem 
Laufenden halten. Falls Du auch noch was rausfindest, würde ich mich 
über eine Info freuen.

VG,
Hannes

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
Noch kein Account? Hier anmelden.