Bueno, finalmente me decidí por hacer el procesamiento de los Sprite en la PC, obtener las secuencias de imágenes, pasarlas a Polar y finalmente el resultado almacenarlo en alguna memoria. De ese modo lo unico que debería hacer el micro es leer la memoria y llenar la barra de leds en cada momento.
Para los LED vamos a utilizar registros de desplazamiento manejados por el SPI (solo la salida del bus y la señal de CLK se usarán).
Haciendo un poco de números:
La barra de LEDs tiene una longitud de 250mm, los led son de 3mm (3.2mm), por lo que si suponemos un espaciado de 3.5mm entre ellos podríamos meter 71 LED. Tomemos como punto de partida 64LEDs. Con esa tira, al girar podremos hacer una imagen de 128x128 pixeles.
El perímetro del círculo descripto por el led mas alejado del centro es pi * 500 = 1570mm. Si quisieramos que poder tener un pitch de 3.5mm en el extremo deberíamos poder hacer todo el procesamiento en lo que tarda en girar 3.5mm * 360° / 1570mm = 0.8°
El motor gira a mas o menos 1300RPM (queria un motor de 1450 pero no consegui) o sea 21.66 rev por segundo. Por lo que una vuelta completa le tomará 46mseg. Si queremos poder distinguir 0.8°, el tiempo entre cada pixel será 46mseg * 0.8°/360° = 102useg.
Como uC estoy pensando en un LPC1114 (ARM Cortex M0 a 50MHz), un LPC1347 (ARM Cortex M3 a 72MHz) o algún 18F a 48MHz. Creo que ninguno tiene dma en el spi, va, en realidad no sé si hay algun 18f con dma. Tengo eso micros porque no he usado nunca un 24f o un 33f o dspic.
Para manejar los led usaremos 8 74hc595 los que pueden funcionar a 20MHz, creo, sin problemas. Nunca trabaje a esa frecuencia, es conseguible sin problemas?
Si tomamos esa velocidad, entonces llenar los registros nos tomará 0.05useg x 64 = 3.2 useg. Si suponemos que no llegamos a 20 y trabajamos a 5MHz necesitaremos 12.8useg. Con ese tiempo nos quedan 90useg para cálculos... creo que sería suficiente ya que no hay mucho que calcular ya que las imagenes estaran en memoria. Si estuviesen en una memoria externa entnces habria que hacer bien los cálculos ya que se nos agrega el tiempo de lectura de las mismas...
En principio parecería que puede funcionar de esta forma...
Saludos!