Ich verwende zum ersten mal ein DOG display von Electronic Assembly und zwar das EA DOGXL160B-7 (STN neg. blau transmissiv) mit blauer backlight. nur schauts nach der init komisch aus kann mir wer sagen ob es defekt ist ? bilder hab ich angehängt. oder mir vlt tipps geben welche einstellungen ich ausprobieren soll beim uc1610 -- nutzloser Anhang entfernt, da Inhalt weiter unten erneut gepostet. -rufus
Was soll der MIst mit den gezippten Bildern? Wie sollen wir dir ohne Quellcode helfen? Wie sollen wir dir ohne Schaltplan helfen? Sollen wir raten?
Sorry, ich für meine Person bin zu faul n zip zu entpacken um mir Bilder an zu sehen. ka wies andren geht!?
Wenn die Bilder etwas schärfer wären, könnte man bestimmt mehr sagen. So sieht es für mich aus wie ein mit Zufallsdaten vollgeschriebenes Grafik Display.
Verbindungen display zu µC: Display: atmega8L: BM0 <--> GND D6 <--> 3.3V SDA <--> PB3 SCK <--> PB5 CD <--> PB0 CS <--> GND RST <--> 3.3V kondensatoren sind wie laut datenblatt angeschlossen und gleiche kapazität ich freu mich auf jede antwort ;)
> PORTB |= (1<<PB2) + (1<<CD) + (1<<CS); > //SS PULLUP active for safe master operation ;CD+CS HIGH PEGEL SS muss nicht auf High, sondern auf Ausgang stehen. mfg.
ich kann diese library irgendwie nicht so verwenden wie der , der sie geschrieben hat , der autor verwendet ja den SPI 4-wire mode. wenn ich aber CD und CS anschliesse funktioniert die init nicht(keine spannung VLCD). deswegen hab ichs mit 3-wire probiert. ich glaub der fehler liegt in diesem code stück:
1 | //-----------------------------------------------------------------------------
|
2 | // sendet einen Befehl an das Display
|
3 | //-----------------------------------------------------------------------------
|
4 | void UC1610_send(UC1610_CMD_t mode, unsigned char wert) { // interne Funktion |
5 | if((mode==UC1610_CMD1) || (mode==UC1610_CMD2)) { |
6 | // mode auf control
|
7 | UC1610_PORT&=~UC1610_A0; |
8 | }
|
9 | else { |
10 | // mode auf data
|
11 | UC1610_PORT|=UC1610_A0; |
12 | UC1610_LCD.akt_col_adr+=1; |
13 | }
|
14 | |
15 | // Chip-Select auf Lo
|
16 | UC1610_PORT&=~UC1610_CS; |
17 | |
18 | //---------------------------------------------------
|
19 | //---- Byte per SPI schreiben
|
20 | //---------------------------------------------------
|
21 | SPI_SEND (wert); |
22 | |
23 | |
24 | // Chip-Select auf Hi
|
25 | if((mode==UC1610_CMD1) || (mode==UC1610_DATA)) { |
26 | // nur wenn kein mehrbyte befehl
|
27 | UC1610_PORT|=UC1610_CS; |
28 | }
|
29 | }
|
laut datenblatt: "3 WIRE, 8-BIT SPI-MODE Jede Änderung des Pegels am Pin CD setzt den internen Bit-Zähler zu- rück (CS0 kann fest auf LO liegen). Danach werden die 8-Bit in das Dis- play getaktet (MSB zuerst). Der Pe- gel am Pin CD entscheidet ob Da- ten oder Befehle übertragen werden. Der Pegel darf sich während der Übertragung der 8-Bits am Pin CD nicht ändern. Die Taktrate der CLK Leitung kann je nach Versorgungs- spannung und Leitungs- eigenschaften bis zu 8 MHz betragen." versteh ich das richtig es muss CD nach dem befehl/daten togglen UND der richtige pegel anliegen? vlt kann ich so wie der code jetzt ist nur befehle senden aber keine daten ?
Thomas Eckmann schrieb: >> PORTB |= (1<<PB2) + (1<<CD) + (1<<CS); >> //SS PULLUP active for safe master operation ;CD+CS HIGH PEGEL > > SS muss nicht auf High, sondern auf Ausgang stehen. > > mfg. wieso SPI funktioniert einwandfrei
chris __ schrieb: > wieso SPI funktioniert einwandfrei Dann muss das Display ja auch funktionieren. Dass SS auf Ausgang steht, ist kein MUSS. Stellt aber 100%ig sicher, dass das SPI auf Master steht und auch bleibt. > versteh ich das richtig es muss CD nach dem befehl/daten togglen UND der > richtige pegel anliegen? Ja sicher. Aber nicht toggeln. Toggeln ist Umschalten, ohne zu wissen, was vorher war. Damit lässt man Leds blinken. Hier muss explizit 0 oder 1 ausgegeben werden. > vlt kann ich so wie der code jetzt ist nur befehle senden aber keine > daten ? Wie sieht der Pin denn aus, wenn geschrieben wird? Dein Display sieht jedenfalls recht uninitialisiert aus. Nach der Initialisierung solltest du ein leeres Display mit einer vernünftigen Kontrasteinstellung haben. Hinten im Datenblatt ist ein Initialisierungsbeispiel drin. Damit läuft das auch. Programmier das selbst und nimm nicht irgendein Programm, von dem du nur glaubst, dass es läuft. So schwer ist das nicht. Wenn du einen Punkt auf das Display bekommst, geht auch der Rest. Dann kannst du dir immer noch das andere Programm vornehmen. mfg.
hab mal was geändert //---------------------------------------------------------------------- ------- // sendet einen Befehl an das Display //---------------------------------------------------------------------- ------- void UC1610_send(UC1610_CMD_t mode, unsigned char wert) { // interne Funktion if((mode==UC1610_CMD1) || (mode==UC1610_CMD2)) { // mode auf control UC1610_PORT&=~(1<<UC1610_A0); } else { // mode auf data UC1610_PORT|=(1<<UC1610_A0); UC1610_LCD.akt_col_adr+=1; } // Chip-Select auf Lo UC1610_PORT&=~UC1610_CS; //--------------------------------------------------- //---- Byte per SPI schreiben //--------------------------------------------------- SPI_SEND (wert); // CD TOGGLEN FÜR BIT ZÄHLER zurücksetzen if((mode==UC1610_CMD1) || (mode==UC1610_DATA)) { // nur wenn kein mehrbyte befehl UC1610_PORT^=(1<<UC1610_A0); } } jetzt ist das display komplett weiß (keine freien stellen mehr)
chris __ schrieb: > passt oder? Wenn oben CD und unten Takt - OK. Wie sieht es bei den Daten daten aus? Geht CD auf High? Ein Display kann einen auch in den Wahnsinn treiben, wenn es zwar alles richtig anzeigt, man aber nichts sieht, weil der Kontrast nicht stimmt. Lässt sich das mit deinem Programm einstellen? mfg.
hab den fehler gefunden denk ich aufjedenfall ist der kontrast jetzt schöner . es lag am Double-byte-command. im datenblatt des UC1610 hab ich dazu nichts gefunden aber aus der library von dem typen entnehme ich das CD NICHT togglen darf wenn der double-byte-command gesendet wird. sso sieht das display mit diesem code aus "Ein Display kann einen auch in den Wahnsinn treiben, wenn es zwar alles richtig anzeigt, man aber nichts sieht, weil der Kontrast nicht stimmt." stimmt :-)
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.