Estoy creando un proyecto Persistence of Vision con 120 leds RGB (= 360 líneas totales para controlar). Nos hemos decidido por el TLC5940 para controlar los LED (y podríamos estar abiertos a cambiar esto), sin embargo, ahora tenemos un Problema para obtener los datos lo suficientemente rápido para los chips de controlador de LED. Actualmente estamos utilizando chips de clase ATmega328 / ATmega128 que superan los 20Mhz, y no podemos procesar los datos que se cargarán en los TLC5940 con la rapidez suficiente. ¿Debemos considerar otro uC? Los desiderata son:
- bajo costo / uC
- Bajos costos de inicio (por ejemplo, los CPLD requieren una cierta inversión inicial para comenzar)
- 3.0-5.0V
- Idealmente disponible en un paquete DIP para un prototipado fácil
- 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 nuestra Los requisitos son algo diferentes.
Detalles: por qué ATmega328 no es lo suficientemente rápido (hasta ahora)
En el mundo ideal, deberíamos poder cargar los datos para todos los LED en menos de 746uS (esos son los requisitos del proyecto), y nuevamente, en teoría, si hacemos bitbang en 2clocks / bit deberíamos poder hacerlo en 108uS @ 20Mhz, sin embargo, todo el cambio de bit para decidir qué intensidad enviar a cada LED en este momento nos da 1536uS tiempos de carga. Esto es con avr-gcc OPTLEVEL=2
o OPTLEVEL=3
, todo tipo de bucles que se desenrollan manualmente, carga paralela de todos los controladores de LED y cada técnica de ahorro de tiempo que podemos imaginar.