Forum: Mikrocontroller und Digitale Elektronik Vom HD44780 lesen


von Tobias Müller (Gast)


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

von edi (Gast)


Lesenswert?

hi,

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

ciao

von Tobias Müller (Gast)


Lesenswert?

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

Grüße

von crazy horse (Gast)


Lesenswert?

wie sieht denn dein lcd_enable-UP aus?

von Tobias Müller (Gast)


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

von thkaiser (Gast)


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.

von Tobias Müller (Gast)


Lesenswert?

Jetzt scheint es zu funktionieren, dank thkaises's Tipp. Danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.