Hey,
als heute endlich mein EADOG-LCD kam konnte ich es kaum erwarten. Doch
Stunden später geht immer noch nichts (abgesehen von der
Hintergrundbeleuchtung)..
Ich betreibe das Display gemäß der Schaltskizze "Low Power", mit einer
Einschränkung: 1µF habe ich nicht auf Lager, deswegen nehme ich dafür
jeweils 2x470nF parallel. Laute meinem Multimeter liegen diese
Kondensatoren allerdings deutlich unter ihrem Nennwert (meist unter
400). Ist das schon der Knackpunkt?! Ich kann es im Moment nicht
beurteilen, habe keine besseren da. Aus dem Bauch raus würde ich eher
sagen dass diese C's unkritisch sind... CS1B_ habe ich fest auf Masse
gelegt. A0 bedient P1.0 des MSP, der Reset liegt an P1.1. Gemessen
liegen 3,2 V Vdd an.
Hier ist mein Code, ich habe mich an das Initalisierungsbeispiel
gehalten und wollte dann einfach mal das ganze Display leuchten sehen,
daher folgt der Befehl "Display all Points" (0xA5). Habe auch schon
versucht in den Display RAM zu schreiben, tut sich auch nichts.
1 | #include <msp430g2302.h>
|
2 | #include <intrinsics.h>
|
3 |
|
4 | void main (void)
|
5 | {
|
6 | unsigned long i = 0;
|
7 |
|
8 | P1DIR |= BIT0 + BIT1;
|
9 |
|
10 |
|
11 | WDTCTL = WDTPW + WDTHOLD;
|
12 |
|
13 | USICTL0 |= USIPE7 + USIPE6 + USIPE5 + USIMST + USIOE;
|
14 | USICKCTL = USIDIV_4 + USISSEL_2 + USICKPL; // /16 SMCLK
|
15 | USICTL1 |= USICKPH;
|
16 | USICTL0 &= ~USISWRST; // USI released for operation
|
17 |
|
18 | P1OUT = 0; // LCD zuruecksetzen
|
19 | P1OUT = BIT1;
|
20 |
|
21 | for(i=0; i < 200000; ++i){} // Dem LCD etwas Zeit geben
|
22 |
|
23 | USISRL = 0x40;
|
24 | USICNT = 8;
|
25 |
|
26 | USISRL = 0xA1;
|
27 | USICNT = 8;
|
28 |
|
29 | USISRL = 0xC0;
|
30 | USICNT = 8;
|
31 |
|
32 | USISRL = 0xA6;
|
33 | USICNT = 8;
|
34 |
|
35 | USISRL = 0xA2;
|
36 | USICNT = 8;
|
37 |
|
38 | USISRL = 0x2F;
|
39 | USICNT = 8;
|
40 |
|
41 | USISRL = 0xF8;
|
42 | USICNT = 8;
|
43 |
|
44 | USISRL = 0x00;
|
45 | USICNT = 8;
|
46 |
|
47 | USISRL = 0x27;
|
48 | USICNT = 8;
|
49 |
|
50 | USISRL = 0x81;
|
51 | USICNT = 8;
|
52 |
|
53 | USISRL = 0x10;
|
54 | USICNT = 8;
|
55 |
|
56 | USISRL = 0xAC;
|
57 | USICNT = 8;
|
58 |
|
59 | USISRL = 0x00;
|
60 | USICNT = 8;
|
61 |
|
62 | USISRL = 0xAF;
|
63 | USICNT = 8;
|
64 |
|
65 | USISRL = 0xA5;
|
66 | USICNT = 8;
|
67 |
|
68 | for(;;){}
|
69 | }
|
Noch eine Überlegung von mir war, dass der SPI-Modus nicht passt (CKPL,
CKPH). Laut dem Datenblatt müsste CKPL gesetzt werden, denn der Takt
iddlet dort auf High. CKPH setze ich auch, denn es scheint als wird auf
steigender Flanke gelesen (so interpretiere ich zumindest die Skizze auf
Seite 5 im Datenblatt). Habe aber hier eigentlich alles ausprobiert,
ohne das es was genutzt hätte. Vielleicht gibt es auch irgendwie Ärger
mit der Bitfolge (msb first). Wer weiß Rat?