AVR mit Noritake VFD

Gast #4590079
Lesenswert?

Hallo,

ich versuche derzeit das Noritake VFD Display aus dem Anhang per ATMega 
32 anzusteuern. Den Testmodus des Displays habe ich schon ausprobiert, 
dieser funktioniert und das Display spielt seine Testsequenz ab. 
Versuche ich nun aber den Buchstabe "A" auf dem Display auszugeben 
passiert einfach nichts. Ich verwende dafür aktuell folgenden Code:
1
  DDRA = 0xff;                            //PORTA als Ausgang
2
  DDRD |= (1 << DDD5) | (1 << DDD4) | (1 << DDD3);          //PC3,4,5 als Ausgang
3
  
4
  PORTD |= (1<<PD4);                          //RESET auf High
5
  PORTD |= (1<<PD3);                          //WR AUF HIGH
6
  _delay_ms(1);
7
  
8
  PORTA = 0b00000001;                          //Header ausgeben
9
  _delay_us(10);                            //Warten
10
  PORTD &= ~(1<<PD3);                          //WR toggeln
11
  _delay_us(80);                            //Warten
12
  
13
  PORTD |= (1<<PD3);                          //WR wieder auf 1
14
  PORTA = 0b01000011;                          //OP Code 0x43 ausgeben
15
  _delay_us(10);                            //Warten
16
  PORTD &= ~(1<<PD3);                          //WR toggeln
17
  _delay_us(80);                            //Warten
18
  
19
  PORTD |= (1<<PD3);                          //WR wieder auf 1
20
  PORTA = 0b00000000;                          //Start Adresse 0x00 ausgeben
21
  _delay_us(10);                            //Warten
22
  PORTD &= ~(1<<PD3);                          //WR toggeln
23
  _delay_us(80);                            //Warten
24
  
25
  PORTD |= (1<<PD3);                          //WR wieder auf 1
26
  PORTA = 0b00000100;                          //länge ausgeben 0x04
27
  _delay_us(10);                            //Warten
28
  PORTD &= ~(1<<PD3);                          //WR toggeln
29
  _delay_us(80);                            //Warten
30
  
31
  PORTD |= (1<<PD3);                          //WR wieder auf 1
32
  PORTA = 0b01000001;                          //Write Mode wählen 0x41
33
  _delay_us(10);                            //Warten  
34
  PORTD &= ~(1<<PD3);                          //WR toggeln
35
  _delay_us(80);                            //Warten
36
  
37
  PORTD |= (1<<PD3);                          //WR wieder auf 1
38
  PORTA = 0b10000010;                          // 'A' auf dem Display ausgeben
39
  _delay_us(10);                            //Warten
40
  PORTD &= ~(1<<PD3);                          //WR toggeln

Habe ich in meiner Interpretation des Datenblattes einen Fehler gemacht, 
bzw. hat das Programm einen Fehler? Leider konnte ich kein bestehendes 
Programm zu diesem Display finden, indem ich hätte nachgucken können, da 
die ganzen "neueren" VFDs alle I2C, RS232 oder SPI haben.

Vielen Dank für eure Hilfe!

Gruß, Daniel
Angehängte Dateien:
Gast #4590149
Lesenswert?

daniel schrieb:

>   PORTD |= (1<<PD4);                          //RESET auf High
>   PORTD |= (1<<PD3);                          //WR AUF HIGH
>   _delay_ms(1);
>
>   PORTA = 0b00000001;                          //Header ausgeben

Du resettest das Display nicht explizit (möglicherweise aber per 
Pulldown, kann man mangels Schaltplan nicht entscheiden).

Für beide Fälle ist der Code aber Mist, denn du hast keinerlei Vorsorge 
dafür getroffen, das Reset-Timing einzuhalten. Vgl. DB, Abschnitt 11.2.

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