AVR32 LCD Init Problem

Gast #1310838
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
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 #1316876
Ich hab mit dem AVR noch nicht gearbeitet, aber auf den ersten Blick hat 
der uC einen externen Speicherbus. Ist es nicht einfacher, das Display 
an den Speicherbus anzuschließen?
Gast #1317549
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.