Forum: Projekte & Code LCD mit SPI steuern


von S.Hofmann (Gast)


Angehängte Dateien:

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

von hORST (Gast)


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

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.