AVR mit Noritake VFD

Gast #4590079
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
Ich würde das so sehen:

0x01 -> Header
0x43 -> "C" Op Code für char write
0x00 -> Start Adr 0
0x01 -> Länge / ein Zeichen
0x53 -> "S" / Zeichen in RAM
0x41 -> "A" ausgeben
Gast
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

Eine eigene Frage? Dieser Thread ist über 10 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.