Forum: Mikrocontroller und Digitale Elektronik uC mit frei einstellbarer SPI-Wortbreite


von Student (Gast)


Lesenswert?

Kennt jemand von euch einen uC mit frei einstellbarer SPI-Wortbreite 
und durchgehendem SPI-Transfer?

Die meisten uCs, auch viele ARMs unterstützten nur jew. 8 oder 16 Bit 
Transfers. Bisher sind mir nur die Infineon XC16x uCs aus dem Studium 
bekannt, welche z.b. auch nur 6 Bit rausshiften können und deren 
SPI(SSC) lückenlose Transfers mit double-buffering unterstützt.

Denn 6 Bit sind ideal um einen 5x7-Font-Video-Zeichengenerator zu 
realisieren und durch den lückenlosen Transfer gibt es keine Abstände, 
es sei denn sie sind im Zeichensatz definiert, ausserdem können auch 
kleine grafische Logos ausgegeben werden.

Eventuell kann man bei manchen uCs die SPI mit zyklengenauen ASM-Code 
nach dem 6. Bit "abwürgen", das nächste Bitmuster laden und einschalten 
- was aber dennoch eine kleine Lücke entstehen lässt.

Weiss da jemand Vertreter abseits von Infineon?

von D. V. (mazze69)


Lesenswert?

Student schrieb:
> Die meisten uCs, auch viele ARMs unterstützten nur jew. 8 oder 16 Bit

Teil deine Messages in diese Größen, handle diese und frage, wenn du 
weiteres nicht verstanden hast, nachdem du dich über "Granularität" 
informiert hast.

von Max D. (max_d)


Lesenswert?

Also bei den AVR Tinys kann man indem man das Zähler-reg vorlädt mit dem 
USI weniger als 8 Bit senden. Bei den Mega geht das dann mittels USART 
indem man die Frame-Länge entsprechend einstellt (ich glaub im 
synchronen Modus senden die dann auch keine Startbits, schwören kann ich 
das aber nicht, würde aber wohl wenig Sinn machen sonst)...

von Falk B. (falk)


Lesenswert?

PICCOLO von TI. Aber ist das wirklich SOOOO wichtig? Mit etwas Grips 
kann man die Daten in ein passendes Array schreiben und mit 8/16 Bit 
Transfers leben.

von Max D. (max_d)


Lesenswert?

http://www.elektor.de/jahrgang/2009/juli-047-august/cc2-basic-computer.988390.lynkx 
Elektor hat mit ihrem ATM18 (basiert auf einem AVR, mega8 glaub ich) 
einen Basic-Emulator gebaut, hol dir den Code, lass dich inspirieren :D

von Student (Gast)


Lesenswert?

D. V. schrieb:
> Student schrieb:
>> Die meisten uCs, auch viele ARMs unterstützten nur jew. 8 oder 16 Bit
>
> Teil deine Messages in diese Größen, handle diese und frage, wenn du
> weiteres nicht verstanden hast, nachdem du dich über "Granularität"
> informiert hast.

Das Problem ist, dass meine Messages keine Daten sind, sondern weisse 
und schwarze Pixel auf einem analogen Video-Signal (Clock-Leitung spielt 
keine Rolle).

Mir ist schon klar, dass ich jetzt einen Puffer im RAM anlegen kann und 
mittels Logik, ähnlich wie bei Smooth-Scrolling, diese 6-Bit-Worte in 
ein Array aus 8-Bit Worten packen kann.  Doch das kostet zusätzlich 
Zyklen und ist nicht so elegant wie ein SPI-Port, der auch 6 Bit senden 
kann.  Denn dazu müsste ich ganze 8 Pixel-Zeilen im RAM vorpuffern, denn 
sonst bleibt keine Zeit, um diese 6-to-8 Conversion zu machen.

Es ginge drum, ein bereits fertiges Video-Inserter Projekt von einem 
Infineon XC164 auf was anders zu portieren, was auch in der Hobbyszene 
verwendet wird.

Max D. schrieb:
> Also bei den AVR Tinys kann man indem man das Zähler-reg vorlädt
> mit dem
> USI weniger als 8 Bit senden. Bei den Mega geht das dann mittels USART
> indem man die Frame-Länge entsprechend einstellt (ich glaub im
> synchronen Modus senden die dann auch keine Startbits, schwören kann ich
> das aber nicht, würde aber wohl wenig Sinn machen sonst)...

Das klingt interessant, dann schaue ich mir mal das Datenblatt an.  Den 
USART kann man natürlich meistens auch als Video-Shifter "missbrauchen".

Falk Brunner schrieb:
> PICCOLO von TI. Aber ist das wirklich SOOOO wichtig? Mit etwas
> Grips
> kann man die Daten in ein passendes Array schreiben und mit 8/16 Bit
> Transfers leben.

Ja, wenn's nicht anders geht, mach ich's ja so oder steige auf einen 
anderen Font um. Dachte mir nur, ich kann da gleich einen passenden uC 
finden.   PICCOLO ist genauso "exotisch" wie der XC164 den ich ersetzen 
wollte, aber danke trotzdem.

Max D. schrieb:
> http://www.elektor.de/jahrgang/2009/juli-047-augus...
> Elektor hat mit ihrem ATM18 (basiert auf einem AVR, mega8 glaub ich)
> einen Basic-Emulator gebaut, hol dir den Code, lass dich inspirieren :D

Danke. Hat der einen 5x7 Font ?  (kanns im Moment nicht runterladen ohne 
Account)

von c-hater (Gast)


Lesenswert?

Student schrieb:
> Kennt jemand von euch einen uC mit frei einstellbarer SPI-Wortbreite
> und durchgehendem SPI-Transfer?

> Denn 6 Bit sind ideal um einen 5x7-Font-Video-Zeichengenerator zu
> realisieren und durch den lückenlosen Transfer gibt es keine Abstände,

> Eventuell kann man bei manchen uCs die SPI mit zyklengenauen ASM-Code
> nach dem 6. Bit "abwürgen", das nächste Bitmuster laden und einschalten
> - was aber dennoch eine kleine Lücke entstehen lässt.

Lückenlose Ausgabe und Double-Buffering bieten alle neueren AVRs (UART 
im SPI-Mode). Die Datenregisterbreite ist natürlich 8 Bits, wenn du nur 
6 pro Zeichen ausgeben willst, dann mußt du halt einfach mal ein wenig 
programmieren.

Zwei Zeichensatzbytes lesen, schieben und verodern ist ja nun wirklich 
keine große Kunst. Das geht mit einem ATMega selbst bei maximaler 
SPI-Ausgabefrequenz noch sehr schmerzarm umzusetzen.

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.