Paso 50: Software: Cómo funciona el TLC5940
Cada TLC5940 agrega dieciséis salidas PWM de 12 bits a nuestro circuito que combinamos para controlar las vainas RGB y para controlar los anillos de LED y las arandelas de la bola. El TLC5940 obtiene sus datos cambiados de puesto en serie por lo que necesitamos para el control de datos, reloj y otras señales de control en el orden del controlador funcione correctamente. PIN 18 es la señal GSCLK que necesita una tasa PWM de alta frecuencia para mantener las salidas actualizada, para ello sacrificamos el módulo PWM2 en el microcontrolador. Un desglose de los pasadores están a continuación:
XLAT: Utilizado para enganchar los datos en el TLC5940 después todos los datos ha sido cambiado de puesto en.
En blanco: Marca el final de un ciclo PWM. Cuando tiró alto deshabilitará todas las salidas, cuando tiró bajo volver a activar las salidas y comenzar un nuevo ciclo PWM.
GSCLK: Controla la velocidad de reloj para el ciclo PWM. Utilizamos PWM2 en el microcontrolador para actualizar esto a una velocidad de 250KHz.
DCPRG: Selecciona la fuente del registro de límite actual. Se utiliza en modo de corrección de punto.
VPRG: Utilizado seleccionar el límite de corriente registra o registra el ciclo de trabajo de escritura.
XERR: No utilice esta clavija. Le permitirá saber si el chip es un sobrecalentamiento o un quemado a LED.
SCLK: Mantiene cada chip sincronizado mientras cambio de datos.
Pecado: Esto es donde los datos consiguen cambiado de puesto en el TLC5940.
Sur: Se trata de los datos en serie a partir del TLC5940. Esto conecta a la entrada de pecado del TLC5940 en cascada próxima que nos permite encadenar varios TLC5940 juntos.
En mi código, he llena los datos que se desplaza en el TLC5940 de tal manera que podemos utilizar uno de los módulos SPI del microcontrolador para enviar los datos. Esto es un gran plus como SPI puede enviar datos mucho más rápidos que si tuviéramos que hacerlo en software con poco golpes. Aquí está un desglose sobre cómo conseguir un TLC5940 configurado y ya está en marcha:
1) TLC5940_Init() ejecutar para initalize todos los pernos y banderas.
2) PWM2 permiten de GSCLK funcionando a una frecuencia de 250 KHz. Refrescamos el TLC5940 a 60Hz (16384μs por actualización) y cada salida tiene 4096 pasos (12 bits).
Frecuencia de barrido de GSCLK = (60 Hz * 4096 pasos) = 245760 Hz = ~ 250 KHz
3) habilitar todas las interrupciones de temporizador que actualización el TLC5940s. Esto se hace llamando al Modules_Init().
4) establecer la corrección de puntos para cada TLC5940 llamando Dot_Correction(). Esto envía a 96 bits para cada TLC5940 y ajusta la cantidad de corriente que viene de cada salida. Yo sólo uso los valores por defecto (0x3F).
5) establecer los datos iniciales en escala de grises. Después de esta rutina, vamos a actualizar los datos en escala de grises automáticamente con SPI2 a través de XLAT_Interrupt(), pero la primera rutina de datos en escala de grises tiene que enviar uno extra de bits a cada TLC5940. Puesto que no podemos modificar el módulo SPI para enviar uno extra poco, hacemos todo esto en software llamando al Set_Initial_Grayscale().
6) después de la inicial escala de grises se ha establecido, podemos fijar el segundo módulo SPI y nuestra rutina XLAT_Interrupt() comenzará a enviar datos con el protocolo SPI. En este punto llamamos SPI2_Init().
7) TLC5940s el ahora están completamente operativas y pueden haber datos escrito a ellos. Antes de empezar mi bucle principal del código también ejecutar una función llamada Reset_All_Variables() que restablece todos los parámetros y variables globales que utilizamos para la mesa de pong de la cerveza. Así sabemos qué datos se almacena en todas las variables al inicio.
No dude en consultar la hoja de datos del TLC5940 ya que va mucho más en profundidad de lo que acabo de hacer. Como dije antes, es bueno saber cómo funciona el chip pero no es crucial en este proyecto como la transmisión de datos y señal de control se controlan automáticamente las interrupciones.