Bitte um Hilfe. Das Ansprechen von OLED 1306 (SSD1306) funktioniert bei mir nicht.
Was ist geschehen
a) Zwei OLED 1306 gekauft (hier)
...... Bild hier
b) Stromaufnahme nahe Null.
Erstmal Saft dran (dummerweise 5V vom 5V-Ausgang des nanoclones). Hatte nix geleuchtet, Stromaufnahme blieb unerheblich. Auch spätere Stromversorgung 3,3V direkt vom Labornetzteil ans Steckbrett brachte die Stromanzeige nur auf 0,001 A
c) Software - erfolglos
Verschiedene, arduinospezifische Software durchgegangen, um mir eine Vorlage für Ingangsetzten vom AVR direkt zu erarbeiten. Erfolglos. Auch die Suche nach einem *.hex-file für den verbreiteten mega328 war ohne Erfolg.
d) USB-I²C-Adapter von ELV (den) als Testgerät
......Bild hier
hergenommen und ans Steckbrett (mit Labornetzteilversorgung) angeschlossen: GND, SCL, SDA.
e) I2C antwortet nicht.
Ansprechen des OLED mit Adresse 0x78 geprobt. Not-Acknowledge ist die einzige Antwort.
d) Leichte Verweiflung insbesondere deswegen, weil keinerlei Reaktion und keine Stromaufnahme erkennbar ist.
Nun bitte ich darum, dass mir jemand über die ersten Schritte hilft. Oder der mir versichert, dass ich die Dinge mit den 5V schon geschossen hätte.
Was könnte ich tun, um wenigstens einen Hauch Leben in das (aus dem) Display zu bringen. Leider spricht das Teilchen nur I²C - eine Fremdsprache die ich mit Mühe und nur teilweise kann/kenne. Anfangs reicht mir Textdarstellung konstanter Größe aber variabel hoher Text und Grafik wäre natürlich gigantisch.
Danke im Voraus und schöne Feiertage.
Nachtrag: I²C mit Takt 400 kHz und 100 kHz
Nachtrag am 23. Apr. 2017, 17h26: Abschließende Zusammenfassung zu meiner knappen Erfahrung mit OLED1306
Geändert von oberallgeier (23.04.2017 um 17:33 Uhr) Grund: Kurzer Hinweis auf kleinen Erfahrungsbericht
Ciao sagt der JoeamBerg
Hallo,
in den Rezensionen steht etwas von einer anderen I2C-Adresse (0x3C) und es werden viele Beispiele verlinkt. In den schlechten Bewertungen ist auch die Rede von falsch gelieferten Displays usw.
Sind auch Pullup-Widerstände verbaut?
Braucht das Display noch Abblockkondensatoren?
Grüße, Bernhard
"Im Leben geht es nicht darum, gute Karten zu haben, sondern auch mit einem schlechten Blatt gut zu spielen." R.L. Stevenson
Erstmal vielen Dank für Eure Antworten.
Sieht leider ganz so aus. Hmmm, bei 1.7 V Überspannung ein Totalschaden - hmmm. Das is ja nix für mich!.. Das Ding verträgt nur 3,3V als Stromversorgung und Eingänge. Könnte ein Totalschaden sein ..
Danke. 0x3C hatte ich auch schon getestet (gehabt), Pullups sind dran - 4k7 und zwischen GND und Vcc hängt ein 10 µF/100V.
Tja, die werde ich wohl abschreiben müssen. Schade.
Ciao sagt der JoeamBerg
Hast du nen Arduino zur Hand?
Dann teste das Ding doch einfach mal- am besten mit der Lib. von Adafruit.
Die, die ich davon so im Umlauf hab, vertragen sämtlich auch 5V und können per I2C problemlos angesprochen werden.
Dann weisst du jedenfalls ob das Ding läuft.
Und auch die Adresse kannst du so easy rausfinden: es gibt ein Progrämmchen namens I2C-Scanner. Das liefert brav alle, am Bus gefundenen, Adressen in die Konsole.
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Habe mal versucht die Daten zu finden. Gibt ja kaum ein anständiges Datenblatt dazu. Scheinbar verträgt das Oled 3,3V und 5V. Die Stromaufnahme sollte bei max. 10mA liegen. Es bestehen moch Chansen das geht. Mit dem USB / I2C von ELV habe ich leider keine guten Erfahrungen gemacht. Ist sehr eigenwillig und kompliziert. Bevorzuge was anderes. Versuche es zu testen, dann kann ich mehr sagen
achim
Danke Rabenauge, danke Achim.S.
Libs für Arduino - na ja, ich kann KEIN "arduinolanguage", kenne auch nicht die arduino-IDE und hab sie nicht installiert. Danke für den Tip mit dem Scanner - den habe ich in (fast) allen meinen I²C-Masterplatinen. Beim Archie z.B. sucht der Zentralrechner nach seiner Peripherie (nur die I²C-Slaves) und meldet die auf die Startseite (und reagiert auch intern drauf). Also - Adressbereich softwaremässig umgestellt.. teste das Ding .. mit der Lib. von Adafruit .. Und auch die Adresse kannst du so easy rausfinden: .. I2C-Scanner ..und siehe da, der Test bringt ein glaubhaftes Ergebnis (copy&past vom Terminal) :Code:// ============================================================================= = void i2clook (void) // Welche I²C-Devices existieren? Liste ? { // Aufruf main => // Teste I²C-Schreibadressen von 0x70hex bis 0xAC, 112 - 254 (früher bis 0xFC) // ##>> Testbereich evtl. neu definieren // Erfolgsmeldung(en) ausgeben mit Adresse dez und hex, Fehlsuche mit "-" uint8_t jaflag = 0; // Ja-Flag u8 aktptr = 0; // Aktuelle I²C-Adresse // - - - - - - - - - - - - - - -
Cxxx arno_x00 328/20 16 Apr 2017 09:28
UART0_64 110 k
Suche I²C-Devices im Bereich 0x00/_0dez - 0xFC/252dez
Jedes '-' bedeutet: Slave/s nicht vorhanden oder defekt
------------------------------------------------------------
Slave addr 120 dez = 0x78
------------------------------------------------------------------
I²C-Slaves gesucht bis (dez) 252
Meins verträgt wohl die 5V - denn der Scan läuft mit 3,3 V und 5V - jeweils als Versorgung und Signalpegel... Gibt ja kaum ein anständiges Datenblatt dazu. Scheinbar verträgt das Oled 3,3V und 5V ..
Ok, der erste Schritt ist also getan: das Ding reagiert auf Zuruf. Sozusagen noch immer. Jetzt kommt der schwierige(re) Teil, die softwareseitige Implementierung des Dings. Da hoffe ich, dass das nicht sooo lange dauert :-/ -- leider habe ich KEIN einziges einfaches, kurzes, verständliches Beispiel in AVR8/C gefunden :-/
Danke allen Helfern für Ihre Mitarbeit!
@Achim.S: das ELV Ding ist recht schick, wenn man sich mal dran gewöhnt hat. Beispiel (zufällig):Läuft aber leider nur über das (eher gewöhnungsbedürftige HTerm)Code:- - - - - - - - - - - - - - - - - - - - - - - - - - - - Fahre Servo 1 auf PWM 400 - und lies sofort Daten zurück v----- Dies ist der Befehl zum Adressieren des Targets v v--- Stopbefehl v v v-- Dies ist die Adresse, ab der geschrieben wird s 84 p w 64 01 01 90 01 00 00 00 00 00 01 p s8460p r10p < < Nur EIN Befehlsstring :-) hex-Adresse 64 65 66 67 68 69 6A 6B 6C 6D dez-Adresse 100 101 102 103 104 105 106 107 108 109 =======================================================
Geändert von oberallgeier (16.04.2017 um 11:05 Uhr) Grund: Text zurechtgerückt - war missverständlich
Ciao sagt der JoeamBerg
HTerm - ist leider "sehr" alt und seit gefühlten 10 Jahren nicht gepflegt. Besser gesagt, vergessen worden (kein Intresse mehr dran).
Mache alles mit dem "normalen C" und bin sehr zufrieden damit. Das einzigste was fehlt ist ein gute Anbindung an den PC. Suche noch nach einer guten Lösung.
Kennst du was dazu? oder Nachfolger von HTerm? So was vielleicht wie WLAN mit I2C Bus?
An einem Beispiel der Einbindung vom Oled an den Bus bin ich auch interessiert. Falls du was findest.
achim
So, die chose ist geritzt. Einfach das Atmel Studio 7.? am Desktop installiert (gabs bisher nur am Notebook) und das verdaut auch die Beispiele im Netz mit den *.cpp´s. Und das Terminal zeigt schon die ersten, selbst kreierten Bitfelder (8.x.8 ) bzw. Buchstaben - mal sehen was draus wird und was man mit den selbst verwalteten 128x64 Bitfeldern anfangen kann. Seltsam sind die zwei Farben bei meinem Displays: oben ein Streifen weiß, die Hautpsache aber blau.
@achim:Alt ist ja nun kein Synonym für schlecht. Na ja, mit fast 5 MB ist es etwas sehr groß, aber zusammen mit dem ELV-USB-I²C ist es bei mir ein sehr praktisches Werkzeug. Terminal geht zum Beispiel bei br@ys Terminal auch mit knapp 300 k, für mich die beste Lösung. Ich benutze das Terminal von br@y (das 2004er) seit "Jahren" für "alles" was über UART reinkommt oder reinkommen soll. Als Adapter dazu den schicken AVR-USB von Pololu (item#: 1300) - der hat auch gleich noch ein minimalistisches 5V-DSOszilloskop.HTerm - ist leider "sehr" alt .. Mache alles mit dem "normalen C" .. was fehlt ist ein gute Anbindung an den PC. Suche .. Lösung ..
- - - Aktualisiert - - -
Ein Problemchen bleibt, eine Frage.
Beim Compilieren (des past´n´copy Codes) bekomme ich Warnungen - alledings wird (wie gewohnt bei NUR Warnung) ein lauffähiger code erstellt. Die Warnung ist wech, wenn ich den Codeteil "int i = 0" ändere gegen "unsigned int i ..".
Fehlerbeschreibung:
Warning comparison between signed and unsigned integer expressions [-Wsign-compare]
bei Code:
for (int i = 0; i < sizeof(bitmap2); ++i) {
mit "sizeof" = highligthed
Frage: Klar, "int" ist vorzeichenbehaftet. Aber wo(her) bekomme ich das Vorzeichen von sizeof ? Das sollte ja sinnvollerweise ein vorzeichenloser Wert sein ! ?
Ich habe Hinweise gefunden, dass "sizeof" in der stddef.h des WinAVR-20100110 liegt, dort finde ich aber nur den Kommentar /* Unsigned type of `sizeof' something. */
Danke für die Hilfe
- - - Aktualisiert - - -
Nachtrag: das "Problemchen" mit dem sign von "sizeof"
Ciao sagt der JoeamBerg
hi,
schön dass es noch funktioniert, wie es sich anhört.
einen 3EUR Arduino würde ich mir zwar an deiner Stelle auch mal anschaffen (ist praktisch zum schnell mal austesten), aber Libs für "richtiges C" habe ich hier auch, ebenfalls auf der Basis für Adafruit Libs, aber für gcc/Linux. Vlt hilft es ja trotzdem!
http://www.mindstormsforum.de/viewto...p=69371#p69370
sizeof ist egal ob Datentyp Vorzeichenbehaftet ist oder nicht, es ist immer eine Ganzzahl >= +1:
sizeof(unsigned char) == sizeof(signed char) == 1
sizeof(unsigned int) == sizeof(signed int) == 2 (bei 8bit-AVRs)
Geändert von HaWe (18.04.2017 um 11:43 Uhr)
Lesezeichen