Estoy construyendo un Persistencia de la visión proyecto con 120 leds RGB (=360 líneas totales a controlar). Nos hemos decantado por el TLC5940 para conducir los LEDs (y podría estar abierto a cambiar esto), sin embargo, ahora tenemos un problema para conseguir los datos lo suficientemente rápido a los chips del controlador de LED. Actualmente estamos utilizando chips de la clase ATmega328/ATmega128 que alcanzan un máximo de 20Mhz, y no somos capaces de procesar los datos que se cargan en los TLC5940 lo suficientemente rápido. ¿Deberíamos considerar otro uC? Los desiderata son:
- Bajo coste/uC
- Bajos costes de puesta en marcha (por ejemplo, los CPLD requieren una cierta inversión inicial para empezar)
- 3.0-5.0V
- Idealmente disponible en un paquete DIP para facilitar la creación de prototipos
- Más de 30 líneas GPIO (para cargar los controladores LED en paralelo)
Esta pregunta puede ser un primo pobre intelectual de esta pregunta Sin embargo, creo que nuestros requisitos son algo diferentes.
Detalles: por qué el ATmega328 no es lo suficientemente rápido (hasta ahora)
En el mundo ideal, deberíamos ser capaces de cargar los datos para todos los LEDs en menos de 746uS (esos son los requerimientos del proyecto), y de nuevo, en teoría, si hacemos un bitbang a 2clocks/bit deberíamos ser capaces de hacerlo en 108uS @20Mhz, sin embargo, todo el cambio de bits para decidir qué intensidad enviar a cada LED ahora mismo nos da 1536uS de tiempo de carga. Esto es con avr-gcc OPTLEVEL=2
o OPTLEVEL=3
, todo tipo de bucles desenrollados manualmente, la carga en paralelo de todos los controladores LED, y todas las técnicas de ahorro de tiempo que se nos ocurran.