Etape 50 : Logiciel : Comment fonctionne le TLC5940
Chaque TLC5940 ajoute seize sorties PWM de 12 bits sur notre circuit qui nous combinons pour contrôler les gousses RVB et à contrôler les anneaux de LED et rondelles de boule. Le TLC5940 obtient ses données déplacées en série, donc nous avons besoin de contrôler les données, horloge et autres signaux de commande afin que le conducteur puisse fonctionner correctement. Broche 18 est le signal GSCLK qui doit un taux haute fréquence PWM pour garder les produits mis à jour, pour cela, nous sacrifierons le module PWM2 sur le microcontrôleur. Une ventilation des broches sont ci-dessous :
XLAT : Utilisé pour verrouiller les données dans de la TLC5940 après que toutes les données a été déplacée en.
Blanc : Marque la fin d’un cycle PWM. Quand haute tiré il désactivera toutes les sorties, quand tiré en bas il sera ré-activer les sorties et commencer un nouveau cycle PWM.
GSCLK : Contrôle la fréquence d’horloge pour le cycle PWM. Nous utilisons des PWM2 sur le microcontrôleur à ce jour à raison de 250KHz.
DCPRG : Sélectionne la source de la transaction actuelle de la limite. Il est utilisé en Mode de Correction de Dot.
GVRP : Utilisé pour sélectionner la limite actuelle de registres ou le cycle enregistre pour l’écriture.
XERR : Nous n’utilisons pas cette broche. Il vous permettra de savoir si la puce est en surchauffe ou a une LED de brûlé.
SCLK : Garde chaque puce synchronisé tout en déplaçant les données.
SIN: C’est où les données obtient déplacées dans la TLC5940.
SOUT : Il s’agit des données sérielles hors de la TLC5940. Ceci relié à SIN entrée de la prochaine cascade TLC5940, qui nous permet à la guirlande de multiples TLC5940 ensemble.
Dans mon code, j’ai emballé les données qui sont décalées dans la TLC5940 de telle sorte que nous pouvons utiliser un des modules SPI dans le microcontrôleur pour envoyer les données. C’est un énorme plus que SPI peut envoyer des données beaucoup plus rapides que si nous devions le faire dans le logiciel avec peu de frapper. Voici une ventilation sur la façon d’obtenir un TLC5940 configuré et opérationnel :
1) TLC5940_Init() courir à initialiser toutes les broches et les drapeaux.
2) activer PWM2 pour GSCLK cadencé à une fréquence de 250 KHz. Nous rafraîchir le TLC5940 à 60Hz (16384μs par actualisation) et chaque sortie a 4096 étapes (12 bits).
Taux de rafraîchissement GSCLK = (60 Hz * 4096 étapes) = 245760 Hz = ~ 250 KHz
3) activer toutes les interruptions de minuterie qui mettent à jour de la TLC5940s. Cela se fait en appelant Modules_Init().
4) la valeur de la correction de point pour chaque TLC5940 en appelant Dot_Correction(). Cela envoie 96-bits pour chaque TLC5940 et ajuste la quantité de courant qui provient de chaque sortie. Je viens d’utiliser les valeurs par défaut (0x3F).
5) définir les données initiales de niveaux de gris. Après cette routine, nous mettrons à jour les données en niveaux de gris automatiquement avec SPI2 par le biais de XLAT_Interrupt(), mais la première routine de données en niveaux de gris doit envoyer un supplément peu à chaque TLC5940. Étant donné que nous ne pouvons pas modifier le module SPI pour envoyer un appoint bit, nous faisons tout cela dans le logiciel en appelant Set_Initial_Grayscale().
6) après que l’échelle des gris initial a été fixé, nous pouvons mettre en place le deuxième module SPI et notre routine de XLAT_Interrupt() va commencer à envoyer des données avec le protocole SPI. Nous appelons SPI2_Init() à ce stade.
7) the TLC5940s sont maintenant complètement opérationnel et peuvent avoir des données écrites sur eux. Avant que je commence ma boucle principale du code je dirige également une fonction appelée Reset_All_Variables() qui réinitialise tous les drapeaux et les variables globales que nous utilisons pour la table de ping-pong de bière. De cette façon, nous savons quelles données est stockée dans toutes les variables au début vers le haut.
N’hésitez pas à regarder vers le haut de la feuille de données TLC5940 comme il va beaucoup plus en profondeur que je viens de faire. Comme je l’ai dit avant, il est bon de savoir comment fonctionne la puce mais il n’est pas crucial dans ce projet comme la transmission de données et les contrôles de signal sont gérés automatiquement dans les interruptions.