Hallo,
ich verwende ein AVR32UC3A mit LCD.
Es funktioniert zwar, doch beim Einschalten läuft das Display erst nach
mehrmaligem Einschalten mit anschließendem Reset an.
Könnte es an der falschen Initialisierung oder falscher Reihenfolge der
Initialisierung liegen?
So sieht der Code aus:
1 | //Definieren der PINS
|
2 | gpio_enable_gpio_pin(D0_PIN);
|
3 | gpio_enable_gpio_pin(D1_PIN);
|
4 | gpio_enable_gpio_pin(D2_PIN);
|
5 | gpio_enable_gpio_pin(D3_PIN);
|
6 | gpio_enable_gpio_pin(D4_PIN);
|
7 | gpio_enable_gpio_pin(D5_PIN);
|
8 | gpio_enable_gpio_pin(D6_PIN);
|
9 | gpio_enable_gpio_pin(D7_PIN);
|
10 |
|
11 | gpio_enable_gpio_pin(WR);
|
12 | gpio_enable_gpio_pin(RD);
|
13 | gpio_enable_gpio_pin(RS);
|
14 | gpio_enable_gpio_pin(BUSY);
|
15 | gpio_enable_gpio_pin(CSEL1);
|
16 |
|
17 | //Datenrichtung setzen
|
18 | AVR32_GPIO.port[1].gpers = 0xffff0000; // Activiert PB19-PB31
|
19 | AVR32_GPIO.port[1].oders = 0xffff0000; // setzt PB19-PB31 als Ausgang
|
20 |
|
21 | //LCD Init
|
22 | AVR32_GPIO.port[1].ovr = 0xffffffff;
|
23 | msecDelay(100);
|
24 | gpio_clr_gpio_pin(RD);
|
25 | gpio_clr_gpio_pin(WR);
|
26 | RS_COMMAND
|
27 | CSELECT
|
28 | msecDelay(100);
|
29 |
|
30 | STROBE_WR
|
31 | RDSEND
|
32 | CUNSELECT
|
33 | msecDelay(50);
|
34 |
|
35 |
|
36 | WriteCommand(0x01,0xF3);//system clock F3 schneller
|
37 | WriteCommand(0x02,0x02);//advance power setup register
|
38 | WriteCommand(0x03,0x80);//advance display setup register
|
39 | WriteCommand(0x10,0x38);//cursor control register 28
|
usw.