So, ich bin nochmal in mich gegangen und habe eine (etwas hackige) Lösung für mein Problem gefunden - ohne ARM... ![]()
Und zwar habe ich mir einen Arduino Mega2560 zugelegt um die drei der vier USARTs für die SPI Transfers zu nutzen. Durch den Send-Buffer ist ein ununterbrochener Datenstrom gewährleistet und wenn man die TLCs nach Farben auftrennt ist auch das raustakten der Daten sehr gut parallelisierbar.
Leider hat das Board aber die XCKn Pins der USARTs nicht auf die Pin-Header rausgeführt...
(Warum eigentlich nicht? Ist doch eh schon eine eigene Pfostenleiste für die USARTs vorhanden, die vier Pins mehr hätten den Kohl nicht fett gemacht... -.-)
Kurz überlegt, Lötkolben rausgeholt und drei Kleckse Lötzinn später hatte ich die XCK1-XCK3 Signale dort wo ich sie brauche: Auf den Pinheadern. Und zwar auf den Pins 6, 38 und 39.
Im Austausch dafür kann ich die OC4A, T0 und ALE Funktionalitäten nicht mehr nutzen, oder zumindest nicht gleichzeitig mit den USARTs. Für dieses Projekt ein annehmbarer Tausch...
Tests mit dem Oszilloskop zeigen, dass es kein Problem ist die drei Datenströme parallel und unterbrechungsfrei zu senden.
Somit brauche ich für einen Ebenenrefresh des Cubes nun rechnerisch nur noch knappe 1600 Takte - das ist denke ich absolut akzeptabel und lässt selbst auf einem ATMega noch mehr als genug Rechenzeit auch für komplexere Animationen.
Im Anhang noch ein Bild von der Operation. Schön isses nicht, aber es funktioniert... ![]()
Grüße,
Shuzz
