LCD mit SPI steuern

Gast #41695
Lesenswert?

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
Angehängte Dateien:
Gast #41696
Lesenswert?

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) ?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren