Hallo,
ich versuche gerade das OLED Display 128x64 (SSD106 Controller) über SPI
mit einem ATMega88 in Betrieb zu nehmen.
Dafür verwende ich die Library u8glib:
https://code.google.com/p/u8glib/wiki/avr
mit dem Beispielcode:
Die Libraries habe ich wie beschrieben in Atmel Studio 6 eingebunden.
Kompilierung klappt, aber das Display bleibt finster. Ich habe hier die
SW-SPI und die HW-SPI probiert, leider ohne Erfolg.
Anbei meine Beschaltung der Pins zwischen UC und Display.
Auf dem Displaymodul ist ein Spannungswandler. Manchmal muss man den per
befehl an den Displaycontroller erst über einen seiner GPIOs
einschalten. Schaltplan Displaymodul hilft.
Flip B. schrieb:> Auf dem Displaymodul ist ein Spannungswandler. Manchmal muss man den per> befehl an den Displaycontroller erst über einen seiner GPIOs> einschalten. Schaltplan Displaymodul hilft.
Schaltplan vom Displaymodul habe ich leider keinen. Auch schon gesucht,
aber nichts gefunden.
spess53 schrieb:> Hi>>>&u8g_dev_st7565_dogm132_sw_spi>> Woher kommt diese Angabe? Du hast weder einen ST7565 Displaycontroller> noch ein 132x32 Display.>> MfG Spess
Hmmmm, das stimmt. Ich habe den Code aus dem Hello World Example
übernommen.
m. g. schrieb:> spess53 schrieb:>> Hi>>>>>&u8g_dev_st7565_dogm132_sw_spi>>>> Woher kommt diese Angabe? Du hast weder einen ST7565 Displaycontroller>> noch ein 132x32 Display.>>>> MfG Spess
Ich habe die Funktion nun angepasst und mit SW-SPI und HW-SPI getestet.
SW-SPI:
Hi
Passt denn deine Beschaltung? Das hier
> CS: PORTB, Bit 2 --> PN(1,2)> A0: PORTB, Bit 1 --> PN(1,1)
stimmt für das DOG-Display. Du hast aber RESET und D/C.
>Kompilierung OK, Display noch dunkel.
Da ich weder Display noch Library kenne, kann ich da auch nicht weiter
helfen.
MfG Spess
So ein ähnliches Display habe ich hier auch schon seit ein paar Wochen
liegen, meines kommt von Waveshare und es gibt Doku dazu:
http://www.waveshare.com/wiki/1.3inch_OLED_%28B%29
Ähnlich, aber nicht gleich, acht Anschlüsse statt sechs.
Dafür enthält die Doku den Schaltplan und sogar Code-Beispiele.
Ach so, für den Anfang sowieso - pfeiff auf irgendwelche Libraries!
Das Teil zu initialisieren und gezielt mal ein paar Pixel zu setzen
sollte ja nicht so schwer sein.
m. g. schrieb:> Den ATMega88 habe ich mit dem Display wie folgt verbunden:
Nochmal die Frage von vorhin:
>>>> Hast du ein Oszilloskop oder einen Logic-Analyzer?
Ohne ein solches Messgerät ist das Debuggen von Hardware wie wenn du im
Auto die Augen zu machst und "nach Gehör" fährst: äusserst schwierig...
Lothar M. schrieb:>>>>> Hast du ein Oszilloskop oder einen Logic-Analyzer?
Ja, hab ich:
Ich habe gerade die SPI-Schnittstelle aufgenommen.
Das sieht grundsätzlich (was die Kommunikation betrifft) ja gut aus
finde ich. Also der ATMega88 sendet zumindest etwas raus!
Hallo,
ich bin jetzt nicht sicher, aber ein Bekannter hat ein 0,96" OLED, das
startete meist garnicht, es wollte unbedingt eine passenden Reset-Impuls
nach PowerOn.
Gruß aus Berlin
Michael
m. g. schrieb:> Ich habe nun die 1. Initialisierungssequenz mit den HEX-Codes nach dem> Einschalten des UC mitgeschnitten:
Die Bilder sind hübsch bunt, nur leider erkennt man nix.
Wie zum Beispiel die Lage von Clock zu Daten.
Michael U. schrieb:> Hallo,>> ich bin jetzt nicht sicher, aber ein Bekannter hat ein 0,96" OLED, das> startete meist garnicht, es wollte unbedingt eine passenden Reset-Impuls> nach PowerOn.
Michaels Hinweis war ein Treffer! Das Display funktioniert!
Lt. Datenblatt verlangt das Display einen Resetpuls (>10us) nach dem
Power ON. Mit dem Portpin PB0 ziehe ich den RST kurz auf GND und schon
funktioniert das Display!
Hier der angepasste Code (HW-SPI und SW-SPI wurde getestet) aus der
u8g_lib von olikraus.
1
/*
2
main.c
3
4
Hello World for ATMEGA Controller
5
6
Universal 8bit Graphics Library
7
8
Copyright (c) 2012, olikraus@gmail.com
9
All rights reserved.
10
11
Redistribution and use in source and binary forms, with or without modification,
12
are permitted provided that the following conditions are met:
13
14
* Redistributions of source code must retain the above copyright notice, this list
15
of conditions and the following disclaimer.
16
17
* Redistributions in binary form must reproduce the above copyright notice, this
18
list of conditions and the following disclaimer in the documentation and/or other
19
materials provided with the distribution.
20
21
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
22
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
23
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
24
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
26
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
28
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
31
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
m. g. schrieb:> Noch eine Frage zu dieser Übergabe des Adressparameters. Ich verstehe> hier diese Funktion nicht. Kann mir das bitte jemand erklären?
Was verstehst Du nicht ? Das "&" Zeichen vor der Variable ?
Dabei wird nicht der Wert selber der Variable in der Funktion übergeben,
sondern nur die Adress auf die Variable.
Siehe auch "function parameter by value" oder "function parameter by
reference" in den C-Büchern. Sorry, weiss die genaue Uebersetzung in
Deutsch gerade nicht :-)