mikrocontroller.net

Forum: Projekte & Code LCD mit SPI steuern


Autor: S.Hofmann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: hORST (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.