www.mikrocontroller.net

Forum: Compiler & IDEs Nur 6bits mit SPI übertragen


Autor: Charles Handler (scientificum)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe diese Funktion, die mir auf einem Atmega128 8 Bits (also 1 
Byte) über die Hardware-SPI einwandfrei überträgt.
void SPI_MasterTransmit(uint8_t data) { 
  /* Start transmission */ 
  SPDR = data; 
  /* Wait for transmission complete */ 
  while (!(SPSR & (1<<SPIF))) {} 
}

Nun will ich aber nur 6 Bits übertragen und weiß nicht, wie ich es 
machen soll. Könnte mir bitte jemand helfen, stehe etwas auf dem 
Schlauch...

Danke

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Hardware-SPI kann nur 8 Bits (oder Vielfache davon) übertragen.
Du musst dein Bitbanging in Software machen.

Autor: Charles Handler (scientificum)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, habe ich mir fast gedacht... Dann bringst's nichts, es in Hardware 
zu machen :(

Ok, vielen Dank für die rasche Antwort,

Hari

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum müssen es denn genau 6 Bit sein? Ich wette, dein Vorhaben lässt 
sich auch mit 8 Bit hinkriegen.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Nun will ich aber nur 6 Bits übertragen und weiß nicht, wie ich es
>machen soll. Könnte mir bitte jemand helfen, stehe etwas auf dem
>Schlauch...


Warum? Sorge einfach dafür, dass deine 6Bits die letzten sechs sind, die 
rausgeschoben werden. Und fertig.

Autor: Charles Handler (scientificum)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht um einen LED-Treiber TLC5940 von ti, es müssen für die Dot 
Correction 16 x 6 Bit und für die PWM nochmal 16 x 12 Bit in das 
Register geschoben werden. Natürlich könnte man die 96 Bits für DC in 12 
x 8 und 192 als 24 x 8 für GS aufteilen... Bringt aber die letzten 3 
Stunden Arbeit wieder auf 0. Man lernt ja auch was dabei :)

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn ich solche SPI-Geschichten in Angriff nehme, ist mein erster Blick 
im Datenblatt immer, ob Vielfache von 8 irgendwie möglich sind.
Nur wenn da kein Weg geht (einige alte Radio-PLL-ICs z.B.) wird "zu Fuß" 
geschoben.

Allerdings kostet auch Software-SPI nur sehr wenig Programmieraufwand.

Gruß aus Berlin
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.