tlc5947 controlador LED sin ocupar constantemente los pines uC

1

Estoy trabajando en el chip TLC5947 para controlar 24 Leds RGB para crear diferentes patrones con ellos. Mi preocupación es que tengo que seguir dando órdenes al SIN, SCLK, XLAT pin del microcontrolador cada bucle para que mi patrón se repita una y otra vez.

Mi microcontrolador también está haciendo otras cosas, como hablar con sensores, controlar periféricos externos, etc.

¿Quería saber si hay alguna forma / piratería en el hardware / software mediante el cual pueda repetir la secuencia usando el controlador de LED IC mientras mantiene mi microcontrolador desocupado?

    
pregunta Pudi

2 respuestas

3

La forma habitual de manejar este tipo de cosas es con una interrupción periódica del temporizador. Diga que su ciclo debe repetirse cada 50 ms, configurar un temporizador de hardware para interrumpir el procesador, actualizar su pantalla y regresar desde la ISR (Rutina de servicio de interrupción). Si su estilo de codificación actual incluye perder millones de ciclos en ciclos de retardo, se deshace de eso. Es probable que esté utilizando un SPI de hardware rápido para hablar con el chip, por lo que el arranque de 72 bits de datos de encendido / apagado no tomará mucho tiempo, tal vez < 100useg, así que con una interrupción de 50 ms, el 99.8% del ancho de banda de su procesador todavía está disponible (virtualmente "desocupado" para propósitos prácticos)

Para las "otras cosas" que está haciendo, su procesador parece ser algo (dependiendo de cuánto tiempo demore su ISR) más lento y un poco más brusco en su funcionamiento (desaparece un poco a veces). Por lo general, no es demasiado difícil de codificar para eso.

    
respondido por el Spehro Pefhany
0

Estaba considerando el TLC5947 y su hoja de datos dice que tiene "repetición automática de pantalla , "por lo que el PWM debería funcionar sin entrada periódica del microcontrolador. También eché un vistazo rápido a la biblioteca Arduino de Adafruit para el TLC5947, y no vi ninguna interrupción, etc.

Pero terminé no usando el TLC5947 porque tiene "problemas de parpadeo" y en su lugar usé el TLC59711, para el que incluso escribí un biblioteca . Para obtener detalles sobre el parpadeo, consulte mi Disqus post .

    
respondido por el Ulrich Stern

Lea otras preguntas en las etiquetas