Ich arbeite an einem TLC5947-Chip, um 24 RGB-LEDs zu steuern und damit verschiedene Muster zu erstellen. Meine Sorge ist, dass ich dem SIN-, SCLK- und XLAT-Pin des Mikrocontrollers in jeder Schleife Befehle erteilen muss, damit sich mein Muster immer wieder wiederholt.
Mein Mikrocontroller erledigt auch andere Dinge, wie das Sprechen mit Sensoren, das Steuern externer Peripheriegeräte usw.
Wollte wissen, ob es einen Weg/Hack in der Hardware/Software gibt, mit dem ich die Sequenz mit dem LED-Treiber-IC wiederholen kann, während mein Mikrocontroller unbesetzt bleibt?
Der übliche Weg, mit solchen Dingen umzugehen, ist ein periodischer Timer-Interrupt. Angenommen, Ihre Schleife muss sich alle 50 ms wiederholen, einen Hardware-Timer einrichten, um den Prozessor zu unterbrechen, Ihre Anzeige aktualisieren und von der ISR (Interrupt Service Routine) zurückkehren. Wenn Ihr aktueller Codierungsstil das Verschwenden von Millionen von Zyklen in Verzögerungsschleifen beinhaltet, wird das beseitigt. Wahrscheinlich verwenden Sie ein schnelles Hardware-SPI, um mit dem Chip zu kommunizieren, sodass es nicht lange dauert, bis 72 Bit Ein/Aus-Daten ausgegeben werden, vielleicht < 100 us, sodass bei einem 50-ms-Interrupt immer noch 99,8 % Ihrer Prozessorbandbreite verfügbar sind (praktisch 'unbesetzt' aus praktischen Gründen)
Für die "anderen Dinge", die Sie tun, scheint Ihr Prozessor etwas (je nachdem, wie viel Zeit Ihr ISR benötigt) langsamer und etwas ruckeliger in seinem Betrieb zu sein (er geht manchmal ein bisschen weg). Es ist normalerweise nicht allzu schwierig, dafür zu codieren.
Ich habe den TLC5947 in Betracht gezogen, und sein Datenblatt behauptet, er habe eine "automatische Anzeigewiederholung", sodass die PWM ohne periodische Eingabe vom Mikrocontroller funktionieren sollte. Ich habe auch einen kurzen Blick auf die Arduino-Bibliothek von Adafruit für den TLC5947 geworfen und keine Interrupts usw. gesehen.
Aber am Ende habe ich den TLC5947 nicht verwendet, weil er "Flackerprobleme" hat, und stattdessen den TLC59711 verwendet, für den ich sogar eine Bibliothek geschrieben habe . Einzelheiten zum Flackern finden Sie in meinem Disqus-Beitrag .
Tut
Majenko
Venny
KyranF
Ulrich Stern