SSD1289 Portrait/Landscape Mode Frage

OP (Firma: µGFX) #2691620
Lesenswert?
• ▲
▼
Hallo Leute,

Ich habe auf der Seite 43 im Datenblatt (link unten) des SSD1289 Display 
Controllers gesehen, dass ich über die drei Bits ID[1:0] sowie AM ganz 
einfach die Orientierung (Portrait/Landscape) ändern kann, um somit 
nicht meine Library Softwareseitig zum "Schreiben auf der Seite" bringen 
erweitern muss.
Da dachte ich, mache ich das mal so:
1
    void lcdSetOrientation(uint8_t orientation) {
2
        uint16_t temp;
3
     
4
        temp = lcdReadReg(0x0011);
5
     
6
        switch(orientation) {
7
            case 0:
8
                lcdWriteReg(0x0011, temp | 0x0038); // Portrait (default)
9
                break;
10
            case 1:
11
                lcdWriteReg(0x0011, temp | 0x0030); // Landscape
12
                break;
13
            case 2:
14
                lcdWriteReg(0x0011, temp | 0x0000);
15
                break;
16
            case 3:
17
                lcdWriteReg(0x0011, temp | 0x0000);
18
                break;
19
        }
20
    }

Leider passiert da nicht viel, im Gegenteil: selbst wenn ich 2 oder 3 
als Paramter übergebe, wird ein Zeichnen auf dem LCD unmöglich.

Hat jemand von euch Erfahrung damit? Muss ich noch etwas anderes machen, 
als die drei Bits zu manipulieren? Etwas neu Initialisieren?


Danke für euere Hilfe!

~ Tectu


Datenblatt: 
http://www.google.ch/url?sa=t&rct=j&q=ssd1289%20datasheet&source=web&cd=1&ved=0CGQQFjAA&url=http%3A%2F%2Fwww.gpegint.com%2Ffiles%2Flibrary%2Ffiles%2Fsupportpdf%2FDriver%2520IC%2520SSD1289.pdf&ei=hVvBT7W5C8WD8gPd7LG8Cg&usg=AFQjCNGDEAcVE6pHj-K7APljFkYfrCSxWw&cad=rja
OP (Firma: µGFX) #2691624
Lesenswert?
• ▲
▼
Danke für deine Antwort, doch ich kann dir nicht ganz folgen.

Wo ist das Problem?


Zudem:
1
lcdWriteReg(0x0011, temp | 0x0000);

das sollte ja wohl ganz einfach dass, was über lcdReadReg ausgelesen 
wird, wieder zurück schreiben -> keine Änderung.
Warum sollte da also etwas nicht mehr gehen?
Gast #3240395
Lesenswert?
• ▲
▼
doch sicher haben hier schon einige mit dem display gearbeitet, aber 
entweder haben sie den thread nicht gelesen, oder sind zu eingebildet, 
dir ne ordentliche antwort zu geben, siehe Autor: g457.

was dein problem angeht: wenn wirklich garnichts passiert, wo doch mit 
sicherheit etwas passieren müsste, wird das register vielleicht an 
anderer, späterer stelle nochmals überschrieben. so wars bei mir :)
#3240486
Lesenswert?
• ▲
▼
Im default sind bits gesetzt, die es in den anderen Modi nicht sein 
sollen. Du liest also das Register und erhälst etwas, das 0x0038 
enthält. Nun VERODERST du das mit etwas, um diese Bits zu löschen. Dafür 
müsstest du aber eine andere logische Operation nehmen, zum besipiel & 
(and). Wenn du das register schreibst, ist 0x0038 immernoch enthalten!!

Beispiel : 0101 //was du gelesen hast
        OR 0011 // was du schreiben willst
        _____
           0111 //was dabei herauskommt

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.