mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik OLED-Applikationen mit SSD0323-Familie


Autor: Frank Bär (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

nachdem ich jetzt hier schon einige Zeit mitlese, aber bisher noch 
nichts passendes gefunden habe, schreibe ich dann auch mal selbst was.

Ich habe hier ein 1,5"-OLED mit SSD1328-Controller/Driver liegen. 
Ursprünglich versuchte ich die Ansteuerung über eine ... nicht ganz 
billige Treiberbibliothek eines namhaften Herstellers, was auf dem 
Testaufbau mit SSD0323 auch wunderbar funktioniert, doch auf dem SSD1328 
tat es keinen sinnvollen Dienst. Mittlerweile bin ich also wieder bei 
den Assembler-Befehlen eingebettet in C-Code angelangt.

Die Verdrahtung ist korrekt, die Spannungen stimmen auch, VDD und VCC 
werden gleichzeitig zu- und abgeschalten. Die Darstellung auf dem 
Display ist allerdings stark verrauscht, das was ich eigentlich 
darstellen will, erscheint gar nicht. Kontrastregelung etc. 
funktioniert.

Die Ansteuerung läuft über 3-Wire-SPI an einem AT91SAM7A3-EK.

send-Funktion:
void send(char address, char data) 
{
  int nn;

  if (address) AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, OLED_DC); /* Command */
  else AT91F_PIO_SetOutput(AT91C_BASE_PIOA, OLED_DC); /* Data */
  
  for(nn=0;nn<20;nn++);
  AT91F_SPI_PutChar(AT91C_BASE_SPI1,data,0);

}

set_pixel:

void set_pixel(int xcord, int ycord, int greysc)
{
  send(1,0x15);
  send(1,xcord);
  send(1,127);
  send(1,0x75);
  send(1,ycord);
  send(1,95);
  send(0,greysc);
}

Ich sende dem Controller nach der Initialisierung ein 0xAF 
(einschalten), danach 0xA4 (Modus Normal), Kontrast auf Maximum und dann 
gehts los.
Als Debug-Ausgabe erstmal eine diskrete Kontrastregelung, dann sollte 
per
for(i=0;i<96;i++)              
  {
    for(j=0;i<64;i++)        
    {
      set_pixel(i,j,0xFF);      
      delay_ms(10);  
                }      
  }

eigentlich erstmal das ganze Display geschrieben werden, aber leider 
geht das Display vorher wieder aus. Ich konnte auch beobachten, dass am 
Ende der Kontrastregelung (5 komplette Durchläufe mittels while() ) das 
Display immer schwarz wird.

Habt ihr irgendwelche Ideen dazu?

Autor: Frank Bär (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal,

keine Ideen? Wäre wirklich froh, wenn ihr mir ein wenig Hilfestellung 
geben könntet.

Gruß, Frank

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.