Buenas compañero Xootraoox, me ha llamado la atención tu post porque yo estoy liado con un proyecto muy parecido por no decir igual...!
En mi caso he construido 3 tiras de leds con 15 leds RGB cada una de ellas para colocarlas en una pequeña "discoteca" que tengo montada en el sótano de mi casa. Al igual que tu, mi idea es la de controlar los leds con el TLC5940 y este a su vez por DMX.
Por lo que veo, llevas el tema bastante controlado, no obstante será un placer ayudarte en lo que sea.
Te comento lo que yo llevo hecho:
He montado en una protoboard 6 leds RGB, el TLC5940, un pic 16F876 y un MAX232 para comunicacion con el PC. Antes de adjuntarle el control por DMX he querido probar el integrado TLC5940 por si solo.
Los 6 leds estan conectados en paralelo cada uno con su correspondiente color, es decir, todos los rojos juntos por un lado, todos los verdes por otro y los azules por otro. Para atacar esta combinación y no sobrecargar el integrado, lo hago mediante un transistor PNP al cual le ataco la base con un pin de salida del TLC5940. De esta forma del TLC5940 solo uso 3 salidas. No obstante el programa que le cargo al pic permite el control de las 16.
Para cambiar los distintos parámetros utilizo el puerto serie y el "siow" o hyperterminal.
A dia de hoy consigo controlar el GrayScale (GS) y el DotCorrection(DC) de cada una de las 16 salidas. También he hecho una pequeña rutina que actúa sobre las 3 salidas que atacan a los transistores para que vaya haciendo transiciones de color a una velocidad ajustable y según un patrón tambien seleccionable (entre 12).
Los principales problemas que he tenido han sido de parpadeo cuando la intensidad de los leds es muy debil. La frecuencia de la señal GSCLK es determinante en esto. Yo tengo el pic corriendo a 12 Mhz y por lo que la máxima frecuencia que le puedo inyectar es de 3 MHz (a instrucciones de 4 ciclos). Estuve probando distintas velocidades y vi que a partir de una frecuencia alta (1 MHz mas o menos) el parpadeo apenas mejora, sin embargo la luminosidad de los leds a plena potencia disminuye. Esto se puede corregir cambiando la resistencia de seteo de corriente pero bueno, no veo la ventaja.
Según mis experiencias lo que mejora el parpadeo de los leds, es que cuentes exactamente 4096 flancos de GSCLK antes de la señal de BLANK ,o a lo sumo menos, es decir, que no te pases, es preferible activar BLANK uno o dos flancos antes que pasarse.
Otra cosa buena es aprovechar el periodo de BLANK activo para actualizar los datos de colores. Me explico, los nuevos valores de GrayScale o DotCorrection se pueden enviar al TLC5940 cuando mejor venga, estos se quedarán almacenados en un buffer, sin embargo no se actualizan hasta que no exista un flanco de bajada de XLAT.
Este flanco de bajada de XLAT interesa hacerlo mediante el periodo inactivo de GSCLK, para que no se note el corte y se produzca parpadeo. Esto me ocurria sobretodo en transiciones contínuas de color, para colores fijos que cambian de vez en cuando no es necesaria esta precaución.
Quizás ya sepas todo esto que te comento (incluso puede que tengas terminado el proyecto!!) pero quizás pueda ayudar a otros compañeros.
Si alguien lo solicita cuelgo el código, tengo que buscarlo..
Un saludo compañeros.