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.