Hallo Eine kleine Schaltung und ein bischen Code reichen aus, um ein LCD-Display mit HD44780 über SPI zu betreiben. Die Schaltung kommt mit einem CD4094 aus. Kleinere Controller ( 2313 ) können auch benutzt werden. Ich habe dafür eine extra Routine geschrieben. Der max. Clock ist derzeit 1MHz. Viel Spass. Steffen
Hallo Steffen
dein Code ist einer der wenigen zum Thema, der in ASM geschrieben ist.
Mir gehts hier um das SPI.
Habe dort eine Frage zur Unterfunktion out_4094:
;--------------------------------------------------
; Ausgabe über SPI
;--------------------------------------------------
out_4094:
push data_4094
cbi LCD_PORT,Strobe ; Strobe auf Low
out SPDR, data_4094
spil:
sbis SPSR, SPIF
rjmp spil ; jump wenn nicht fertig
sbi LCD_PORT,Strobe ; Strobe High
nop
cbi LCD_PORT,Strobe ; Strobe Low Daten OK
pop data_4094
ret ; return
dein Strobe ist wohl das /SS Pin.
Ich gehe mit bis nach der SPIF-Flag -Abfrage.
Danach setzt du das /SS Pin High (also SPI-Übertragung fertig).
Sollte davor nicht noch das SPDR ausgelesen werden, damit das SPIF-lag
wieder gelöscht wird?
Ich habe die SPI-Zugriffe immer so geschrieben:
cbi PortB, 4 ;/SS low
ldi temp, 0xF0 ; irgendwas zum senden
rcall spiout ; an SPI übergeben
sbi PortB, 4 ;/SS high
; ========================= SPI Transmit ==============
spiout:
out SPDR, temp
wait_spi:
sbis SPSR,SPIF ; Transmission complete?
rjmp wait_spi
; SPIF is set
in temp2, SPDR ; release SPIF by reading Register
ret ; back to programm..
Muss man denn das SPIF Flag nicht rücksetzen (indem man das SPDR
ausliesst) ?
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.