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
Mach den Takt auf 8MHz runter. Dann sollte es gehen.
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
:
Bearbeitet durch User
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 .
Klar, gerne. Im Anhang das Anschlussfoto und dazu die Anschlusstabelle die das 4-Bit Pinout. Pin 5 (R/W) habe ich auf GND gelegt. Gruß Christoph
Sorry, hatte die Bilder vergessen. Hier sind sie nun.
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
:
Bearbeitet durch User
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
SL schrieb: > Die EA Displays sind zickig was die Initialisierung angeht. Das ist Bödsinn. Die Doku passt. Cheffe
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
:
Bearbeitet durch User
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
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.