mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Vom HD44780 lesen


Autor: Tobias Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

schreiben auf dem Display klappt super, nur das zurücklesen der Daten 
aus dem RAM des Display will nicht. Verkabelt ist folgendermaßen an 
PORTC

rsbit=0
rwbit=1
enablebit=2
daten=4-7

Diese Routing soll nun lesen und das ganze nach lcd_data schreiben

lcd_read_data:
    ; 4-7 (Daten als Eingang), Rest als Ausgang
    ldi temp, 0b00001111
    out DDRC, temp

    ; RS und RW setzen
    ldi temp, 0b00000011
    out PORTC, temp

    ; Kurz enablen und danach warten
    rcall lcd_enable
    rcall delay50us

    ; Erstes nibble nach lcd_data
    in   lcd_data, PINC

    ; Hintere Teil kicken
    andi lcd_data, 0b11110000

    ; RS/RW wieder setzen
    ldi temp, 0b00000011
    out PORTC, temp

    ; kurz enabled + warten
    rcall lcd_enable
    rcall delay50us

    ; Diesmal nach temp lesen
    in   temp, PINC
    ; aufräumen
    andi temp, 0b11110000
    ; nibble tauschen
    swap temp

    ; nun noch beide nibble zusammen bringen
    or lcd_data, temp

    ; wieder alles als Ausgang setzen (damit man wieder schreiben kann)
    ldi temp, 0xFF
    out DDRC, temp

    ret

Grüße
  Tobias

Autor: edi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

u r 2 fast!
.
der HD44780 ist nicht so schnell wie Du

ciao

Autor: Tobias Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm... wenn ich das Datenblatt richtig verstehe, braucht er doch nie 
50us, oder? Oder bin ich ganz woanders zu schnell?

Grüße

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie sieht denn dein lcd_enable-UP aus?

Autor: Tobias Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lcd_enable:
  sbi PORTC, lcd_enablebit
  nop
  nop
  nop
  cbi PORTC, lcd_enablebit
  ret

Funktioniert beim schreiben damit gut. CPU ist ein ATS908583 mit 8 MHz

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du mußt während des Lesens den Enable auf High halten. Die Daten liegen 
nur so lange am Bus an, wie Enable high ist.

Autor: Tobias Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt scheint es zu funktionieren, dank thkaises's Tipp. Danke!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.