Hallo,
ich habe mir ein OLED-Display von electronic Assembly gekauft.
Die Anschlüsse sollen kompatibel zu den Displays mit Controllern wie
z.B. LSI KS0070B (1 x 16 Zeichen) sein.
Das OLED Display habe ich in ein Bascom-Testprogramm eingebunden.
Es reagiert jedoch mit div. Fehlern:
1. der gesamte Bildschirm ist durcheiander mit wirren zeichen
oder
2. alle Zeilen sind gleichmässig verrutscht (nach oben oder unten)
oder
3. alle Spalten um mehrere Stellen verschoben
Hatte mit electr. Assembly gesprochen, die mir 2 Tabellen zugeschickt
haben.
Bei diesem OLED-Display gibt es anscheinend Funktionsänderungen der Pins
(zB. Return Home).
Hardware: ARDUINO 2560 R3 mit 16MHz Takt
Frage: hat jemand Erfahrung mit diesem Display oder schon mal damit
gearbeitet?
Bild 1: Zeilen verschoben
Bild 2: Bild mit wirren Zeichen nach HW-Reset
Bild 3: Compiler-Einstellung in Bascom
Für Hilfe hierzu wäre ich dankbar.
Mit besten Grüßen
C. Maass
Das klingt so als wäre die Initialisierung nicht korrekt. Hast du es mal
mit einem anderen Programm/Bibliothek probiert? Oder eine eigene
Initialisierung ans Display geschickt?
Soweit ich weiß kann man bei Bascom da leider kaum eingreifen. Ich würde
es also einfach mit Arduino oder der Bibliothek aus unserem Wiki
probieren.
Sieht in der Tat nach Init- oder Timing-Problemen aus.
Was spricht nochmal genau dagegen,
das Datenblatt zu konsultieren und SELBST eine vernünftige
Initialisierung zu machen? Mit kleinen Taktraten anfangen und erst wenn
es klappt langsam steigern.
Anstatt permanent dem LIB-WAHN zu frönen...
Die EA Displays sind zickig was die Initialisierung angeht.
Ich hab das damals in den Griff bekommen nachdem ich mir das Datenblatt
nochmal genauer zu Gemüte gezogen habe.
Dabei kam diese Befehle zur richtigen Initialisierung raus.
1
lcd.command(0x28);
2
lcd.command(0x08);
3
lcd.command(0x06);
4
lcd.command(0x17);
5
lcd.command(0x01);
6
lcd.command(0x02);
7
lcd.command(0x0C);
(Arduino IDE)
nette Grüße , nen Versuch is es Wert.
Danke für den Tip.
Habe Deine Befehle in mein Programm eingebaut. Leider erfolglos.
(Unknown Statement)
Habe dann die Befehle abgeändert in LCD Hex(xx).
Das ließ der Compiler zu, allerdings hat sich auf dem Display nicht viel
geändert....
Müssen die Befehle vielleicht anders geschrieben werden ?
Läuft das OLED-Display überhaupt mit Bascom...?
Gruß
C.Maass
Die Taktrate liegt bei 16MHZ ist aus seinem Code ersichtlich.
Was ist mit dem R/W Pin , der sollte auf GND liegen , ist dem so ?
auf dem Bildern sieht das nicht so aus.
Wenn der Pin offen ist , ist das die Lösung , R/W auf GND legen.
nete Grüße
Hallo und besten Dank für die Antworten.
SL (Gast):
Guter Hinweis. Danke !
Habe PinA.2 auf Low gelegt. ---> keine Änderung
Stefan (Gast):
Die Taktrate verändern möchte ich nicht. Dann setze ich lieber ein
anderes
Display ein. Benötige die Taktrate für ein größeres Programm.
Hab die Taktrate probehalber auf 8MHz gesetzt ---> keine Ännderung
Ich glaub das wird nix mit diesem Display....
Danke an Alle für die Hinweise!
C.Maass
Hi,
schau mal:
Beitrag "Re: KS0070B_V0 kompatibel zu HD44780?"
Die Pausen zwischen den Befehlen der Initialisierungsroutine müssen
mindestens so lang sein, dass sie mit dem Datenblatt übereistimmen.
Das war bei meinen LCD-Initialisierungsversuchen immer das Hauptproblem.
ciao
gustav
P.S.:
Die Routine im asm-Dateianhang ist sehr aufgeblasen. Das war aber die
erste, durchaus verbesserungsbedürftig. OK. Nur als Beispiel
Das Prob hier ist wohl eine geänderte Spec.
Das Pinout überprüfen.
https://cdn-reichelt.de/documents/datenblatt/A400/DS_OLED_EA.pdf
kannst du mal ein bild posten wie du die Leitungen eingelötet hast ,
also die Displayplatine von hinten , mich lässt die Vermutung nicht lost
das was an deinem Anschluss falsch ist .
Antwort an Karl B. (gustav):
Hatte es mit 5ms pro Befehl probiert ---> erfolglos.
Der CLS-Befehl benötigt min. 3ms, ich habe ihm 10ms gegeben --->
erfolglos
Das Know How für Assembler besitze ich (leider) nicht.
Habe daher in Bascom die Pausen (5ms) hinter jeden einzelnen Befehl
gepackt.
Bisher alles vergebens ---> electronic Assembly hatte dazu (extrem)
wenig zu sagen und der Support von dort = 0 (Schade)
Trotzdem Danke für den Hinweis.
Habe mir jetzt ein anderes Display besorgt: DEM20486 (von Reichelt)
Läuft auf Anhieb und ist sehr gut abzulesen.
Trotzdem gebe ich das OLED noch nicht ganz auf ;-)
Gruß
Christoph
Christoph Maass schrieb:> Trotzdem gebe ich das OLED noch nicht ganz auf ;-)
Hi @Chr.,
sieht so aus, als ob an den SMD Widerständen ( Null Ohm) schon einmal
gelötet worden wäre.
Was das Datenblatt dazu sagt, ist einkopiert.
Also, wie die Impulse aussehen sollen. Welcher Modus etc.
ciao
gustav
Ich glaub, ich hab's.
Das Oled Display (wie auch andere LCD's) benötigen noch den Befehl
"INITLCD".
Ich hab die Anweisung nach dem Config gesetzt und es funktioniert.
Noch ein Hinweis dazu: ich hab den Arduino nur am USB (wg.
5V-Versorgung) angeschlossen gehabt. Nach einer extra Versorgung
(Klinkenstecker) lief das Teil einwandfrei. Ob über den PC irgendwelche
Störsignale den Programmstart gefährden...?
Es läuft wie gesagt einwandfrei (auch nach einem HW-Reset).
Das Oled hat nicht nur ein beeindruckendes Bild, es benötigt auch keine
extra LED-Versorgung für eine Hintergrundbeleuchtung.
Danke nochmals an Alle, die zu diesem Thread etwas beigetragen haben !!!
C. Maass
Zitat:
https://halvar.at/elektronik/kleiner_bascom_avr_kurs/lcd_textanzeige/
INITLCD
Dieser Befehl initialisiert das Display. INITLCD braucht man im
Normalfall nicht, da Bascom das Display automatisch beim Start
initialisiert. Aber INITLCD bietet sich an, um zwischendurch das Display
zurück zu setzen, falls etwas (z.B. ein Relais) die Displayausgabe
gestört hat.... Wenn Störungen öfter auftreten, dann solltest du dir
vielleicht lieber Gedanken über eine bessere Entstörung der Schaltung
machen.
Die Hilfe zu diesem Befehl findet man hier:
http://avrhelp.mcselec.com/index.html?initlcd.htm
/Zitat
Christoph M. schrieb:> Noch ein Hinweis dazu: ich hab den Arduino nur am USB (wg.> 5V-Versorgung) angeschlossen gehabt. Nach einer extra Versorgung> (Klinkenstecker) lief das Teil einwandfrei. Ob über den PC irgendwelche> Störsignale den Programmstart gefährden...?
Sieht so aus, dass die 5V vom PC via USB der Übeltäter ist.
Es gibt vielleicht allerdings noch ein Prob. mit dem Backpowering der
MCU dann.
Also allzu lange sollten beide Vccs nicht eine von beiden abgeschaltet
sein.
Dann brauchen die meisten LCDs einen mehr oder weniger definierten
Anstieg der Vcc, um den Power on Reset auszulösen. Im Extremfalle
springt ein LCD mit vorgeschaltetem 10000 µF Elko nicht an.
ciao
gustav
To Karl B. (gustav):
Besten Dank für die Tips.
Diese Maßnahmen habe ich durchgeführt:
1. DB 0-3 vom Display auf GND legen.
2. Eine externe Betriebsspannung (ca. 7-19V) über Klinkenstecker
vorsehen.
3. zwischen Pin 15 + 16 einen 4,7uF Kondensator setzen
(wenn Hintergrundbeleuchtung erforderlich ist - NICHT beim OLED!)
4. zwischen pin 1 + 2 (Vdd-Vss) einen 100nF einbinden um Störungen zu
vermeiden
Damit läuft das Display einwandfrei (auch nach einem RESET).
Gruß
Christoph