mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI mit Start- und 2 Stoppbit zur ScreenKey Ansteuerung


Autor: Simon Schmid (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum

Mit einem AVR moechte ich mein ScreenKey 16.2 ansteuern.
Ein ScreenKey ist eine Taste mit integriertem 32x16Pixel LCD. Zur
Ansteuerung benoetigt es lediglich eine Daten ud Clockleitung. Ich
denke das sollte per SPI moeglich sein.

Nun zu meinen Fragen:
Das Protokoll besteht aus
• Start bit low SA
• Data bit low / high b0 - b7 (LSB first, MSB last)
• Parity bit low / high Pb
• 2 Stop bits high SE
Details im Datasheet im Anhang (167kB)

wie kann ich das realisieren?

Ich hoffe hier Interessenten zu finden, die mir bei den Einstellungen
am SPCR, der Generierung von Start und Stopbit sowie des Berechnens des
Paritybits helfen koennen - vielleicht sogar ein Beispiel ASM
programmieren...

Mir wurde auch geraten, den CLK und DAT selbst ueber einen I/O Port zu
realisieren. Ich selbst bin Einsteiger, konnte hier im Forum aber
nichts weiteres zu SPI und Stopbit erfahren und verwende den STK500
(programmiere im AVR Studio mit Assembler). Verwenden moechte ich einen
AT90S8515 oder AT90S3213 (habe ich gerade bei mir).

Besten Dank

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mir das pdf durchgelesen, sind ja sehr interessant!
Grundsaetzlich duerften beide Arten der Ansteuerung gehen.
Nur: das Clk-Signal muss immer anliegen, deshalb wuerde ich die
Frequenz moeglichst niedrig waehlen.
Wenn keine Daten gesendet werden, muss DATA high sein, also FFF
senden.
Schau mal nach, ob die SPI Deines Procs auf 12 Bit einstellbar ist.
Dann waere alles sehr einfach. Wenn die 12 bits raus sind, Interrupt
ausloesen und neue Bits senden, wenn nicht zu senden ist, FFF senden,
damit Takt dableibt.
Wenn nur 8 Bit moeglich, musst Du zwei 12 Bit-Werte auf 3 Bytes
verteilen.
Zu Start und Stop: einfach, da Start immer low und Stop immer high
sind, d.h. einfach Byte um drei nach links schieben, mit 0x7ff andieren
(kann evtl. entfallen)(Start) und mit 0x003 oderieren (stop).

Bei Parity wirds ein wenig aufwendiger: manche Procs haben ein
P(arity)-Flag im Status-Register.

oder Du setzt Parity-Bit auf 1 oder 0 je nach odd bzw even, schiebst
den Byte-Wert 8mal durch Carry und invertierst das Parity-Bit jedes mal
mit XOR 0x004, wenn Carry gesetzt war.

ODER
Du laesst einen Periodic-Timer-Interrupt laufen, der CLK toggelt und
Data ausgibt (2 Portpins). Hier hat der Proc schon bedeutend mehr zu
werkeln.

ODER
Du kannst den Timer auf einem Port ausgeben (CLK), dann sparst Du dir
das sw-toggeln, und wenn nichts auszugeben ist, kann sofort ein RETI
kommen, oder Du laesst gar keine Timer-IRQs zu.

Eingelesen wird immer auf die fallende Flanke von CLK (s.Drawing 6.2:
Timing diagram) doch die Tsu/Thold besagen, dass mindestens 40ns vorher
und 10ns nach dem Fallen von CLK die Daten anliegen muessen, also vorher
Data anlegen, dann CLK auf low legen, dann erst Daten aendern.

Bitte schreibe uns, wie es Dir erging und was die Taster kosten!

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das nicht eher was für die UART im synchronen Modus anstelle der
SPI?
Michael

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.