-         

Ergebnis 1 bis 3 von 3

Thema: LCD ver***t mich...

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987

    LCD ver***t mich...

    Anzeige

    Moin.

    Nachdem ich ja vor einiger Zeit mal ein Problem mit einem LCD hatte, hab ich gestern mal da wieder weitergemacht.

    Nochmal kurz was war:
    Ein altes Display (HD44780, 40x2) soll an einem AVR betrieben werden. Angesteckt, LCD-Befehle von Bascom verwendet: Display bleibt "Aus" (also eigene LCD-Initialisierung, nur die erste Zeile ist aktiv). Ein anderes, max. 2 Jahre altes Display angesteckt: Funktioniert fehlerfrei.
    Beide Displays an der USB-Ansteuerung ULA200 (ELV) angeschlossen: Beide funktionieren fehlerfrei.

    Nun hab ich mir gestern mal mit einem Logik-Analyzer die Init-Sequenz der USB-Ansteuerung angeschaut und 1:1 auf den AVR übertragen, d.h. die Datenpins & Enable werden genau so und auf 5 µs genau ein/ausgeschaltet... Trotzdem bleibt das Display im 1-Zeilen-Modus.

    Also wenn der AVR das gleiche Signal liefert, sollte das Display doch dann mal initialisieren oder nicht?

    Der folgende Code bildet das Signal der USB-Ansteuerung nach. Nach dieser Signalfolge ist das Display an der Ansteuerung korrekt im 2-Zeilen-Modus. Am AVR jedoch nicht.

    Code:
    '*******************************************************************************
    'Header
    '*******************************************************************************
    
    $regfile = "m8def.dat"
    $crystal = 8000000
    $hwstack = 32       'default 32
    $swstack = 10       'default 10
    $framesize = 40       'default 40
    $baud = 19200
    
    '*******************************************************************************
    'Ports
    '*******************************************************************************
       Config Pinb.0 = Output : DB0 Alias Portb.0
       Config Pinb.1 = Output : DB1 Alias Portb.1
       Config Pinb.2 = Output : DB2 Alias Portb.2
       Config Pinb.3 = Output : DB3 Alias Portb.3
       Config Pinb.4 = Output : DB4 Alias Portb.4
       Config Pinb.5 = Output : DB5 Alias Portb.5
       Config Pinb.6 = Output : DB6 Alias Portb.6
       Config Pinb.7 = Output : DB7 Alias Portb.7
       Config Pind.2 = Output : EN Alias Portd.2
       Config Pind.3 = Output : RegS Alias Portd.3
    
    DB0 = 0 : DB1 = 0 : DB2 = 0 : DB3 = 0 : DB4 = 0 : DB5 = 0 : DB6 = 0 : DB7 = 0 : RegS = 0
    
    Waitms 10
    
    EN = 1 : Waitus 630 : EN = 0 : Waitus 770
       DB0 = 0 : DB1 = 1 : DB2 = 1 : DB3 = 0 : DB4 = 0 : DB5 = 0 : DB6 = 0 : DB7 = 0 : RegS = 0
          Waitus 260
    EN = 1 : Waitus 630 : EN = 0 : Waitus 770
       DB0 = 0 : DB1 = 0 : DB2 = 1 : DB3 = 1 : DB4 = 0 : DB5 = 0 : DB6 = 0 : DB7 = 0 : RegS = 0
          Waitus 260
    EN = 1 : Waitus 630 : EN = 0 : Waitus 770
       DB0 = 0 : DB1 = 0 : DB2 = 0 : DB3 = 0 : DB4 = 1 : DB5 = 0 : DB6 = 0 : DB7 = 0 : RegS = 0
          Waitus 260
    EN = 1 : Waitus 630 : EN = 0 : Waitus 770
       DB0 = 0 : DB1 = 0 : DB2 = 0 : DB3 = 1 : DB4 = 1 : DB5 = 1 : DB6 = 0 : DB7 = 0 : RegS = 0
          Waitus 260
    EN = 1 : Waitus 630 : EN = 0 : Waitus 770
       DB0 = 1 : DB1 = 0 : DB2 = 0 : DB3 = 0 : DB4 = 0 : DB5 = 0 : DB6 = 0 : DB7 = 0 : RegS = 0
          Waitus 260
    EN = 1 : Waitus 630 : EN = 0 : Waitus 770
       DB0 = 1 : DB1 = 0 : DB2 = 0 : DB3 = 0 : DB4 = 0 : DB5 = 0 : DB6 = 0 : DB7 = 0 : RegS = 0
          Waitus 260
    
    Do:Loop
    
    End
    Powerdown

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    So wie du es beschreibst sollte es nur ein Timing-problem sein. Vergrössere die Wartezeiten.
    Hubert

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Hab ich auch schon probiert... also mal um den Faktor 8 (AVR von 8 auf 1 MHz runtergesetzt), dann auch mal die waitus durch waitms ersetzt, versch. werte dazwischen... nix...

    Und ich hab das Timing ja 1:1 von der USB-Ansteuerung kopiert; an dieser geht das Display ja dann auch mit den angegebenen Werten im µs-Bereich.

    Also 2 "identische" Signale, nur bei einem gehts aber...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •