AVR32 LCD Init Problem

Gast #1310838
Lesenswert?

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.
Persönliche Seite #1316840
Lesenswert?

Michael schrieb:

> 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?

Welche Wartezeit gibst du dem LCD nach einem Power-ON? Die Controller 
auf solchen LCDs machen da genaue Mindestvorgaben im paar 10 ms Bereich. 
Füge mal die gesund lange Warteschleife als ersten Befehl im main() 
ein.

2. Tipp:

Die Befehle

RS_COMMAND
CSELECT
STROBE_WR
RDSEND
CUNSELECT

kann man mangels Sourcecode und Angaben zum LCD Controller nicht 
überprüfen.
Gast #1317549
Lesenswert?

Hallo,

die Wartezeit habe ich probiert bis 1000ms leider keine Veränderung.

Die Defines sehen so aus:
1
#define  CSELECT      gpio_clr_gpio_pin(CSEL1);
2
#define  CUNSELECT      gpio_set_gpio_pin(CSEL1);
3
#define   STROBE_WR      gpio_clr_gpio_pin(WR);gpio_set_gpio_pin(WR);
4
#define  RS_COMMAND      gpio_clr_gpio_pin(RS);
5
#define  RS_DATA      gpio_set_gpio_pin(RS);
6
#define   RDSEND        gpio_set_gpio_pin(RD);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren