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
Hmm... wenn ich das Datenblatt richtig verstehe, braucht er doch nie 50us, oder? Oder bin ich ganz woanders zu schnell? Grüße
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.