tlc5940 GSCLK frage

Gast #2489812
Lesenswert?

hallo,

Ich habe mir eine kleine LED-Steuerung mit dem tlc5940 (+atmega16) 
zusammengebastelt und eine fertige lib dazu verwendet. Es funktioniert 
alles tadellos. Doch wenn ich schon eine vorgefertigte Lib verwende, 
schau ich mir den code natürlich an möchte auch verstehen was da alles 
gemacht wird und was für ein sinn dahinter steckt.

In diesem Programming-Flow-Chart zum TLC5940 bei "Grayscale Data Input 
Cycle":
http://www.ti.com/lit/sw/slvc106/slvc106.pdf

Es sind 16 Channels á 12Bit Grayscale Data also = 192 Bits, nur wird 
aber GSCLK immer bis 4096 Gepulsed bzw. gezählt. Wieso? Hängt das mit 
dem vernetzten mehrere tlc's zusammen?

gruß
timo91
#2490031
Lesenswert?

@  timo91 (Gast)

>Es sind 16 Channels á 12Bit Grayscale Data also = 192 Bits, nur wird
>aber GSCLK immer bis 4096 Gepulsed bzw. gezählt. Wieso?

12 Bit = 4096 = PWM-Zähler. Der zählt von 0-4095 und bleibt dann stehen.

> Hängt das mit
>dem vernetzten mehrere tlc's zusammen?

nein.

MfG
Falk
Gast #2490149
Lesenswert?

Guten Tag,

Danke für die Antwort. In einen Dokument über "TLC5940's Grayscale PWM 
dimming".
http://www.ti.com/lit/an/slyt238/slyt238.pdf

Dort wird geschrieben ". Each
LED stays on until the PWM grayscale
counter goes above the LED’s programmed
PWM value."

Da heißt aber auch das ich an den TLC5940 zwangsmäßig die GS-Daten immer 
in einem bestimmten Zeitabstand zu senden damit die leds nach dem 
einlesen der daten nicht einfach ausgehen.
Oder wie muss ich das verstehen?
Gast #2490266
Lesenswert?

Hallo nochmal, (Sorry für doppelpost. Hab mich schon angemeldet, nur 
warte ich noch auf die email).

Zu meinem letzten Beitrag:
Reicht es, wenn ich die grayscale-Daten einmal sende und dann den GSCLK 
über einen timer-interrupt 4095 Pulse?
#2490473
Lesenswert?

@  timo91 (Gast)

>Reicht es, wenn ich die grayscale-Daten einmal sende

Ja,

>und dann den GSCLK über einen timer-interrupt 4095 Pulse?

Besser ist es, den GCLK per Output Compare Funktion zu erzeugen, damit 
ist die CPU nicht sinnlos beschäftigt. Man muss dann nur per Timer 
nach einiger Zeit einen Interrupt erzeugen, wo man mal kurz BLANK 
auf HIGH setzen muss, dann geht ein neuer PWM-Zyklus los. Steht alles 
direkt im Datenblatt unter "GRAYSCALE PWM OPERATION"

MfG
Falk
Gast #2491158
Lesenswert?

Guten Morgen,

Danke bis hierhin schonmal. Sehr hilfreiches Forum muss ich sagen :).

Im Datenblatt hab ich jetzt noch etwas hierzu entdeckt:
1
When the counter reaches a count of FFFh, the counter
2
stops counting and all outputs turn off. Pulling BLANK high before the counter reaches FFFh immediately resets
3
the counter to zero.

(Rede ist vom Grayscale PWM Counter bzw. GSCLK)

Sobald der Counter 4095 erreicht hat, muss Blank kurzzeitig auf high 
gesetzt werden was über eine ISR gemacht wird.

Also
- CTC-Timer ohne Interrupt für die GSCLK Takterzeugung am OC1A ausgang
- CTC-Timer mit Interrupt um nach (~?)4095 GSCLK-Takten Blank zu Pulsen.

Wie genau muss das passieren? Muss der Blank-Puls genau gegeben werden 
wenn der Counter 4095 erreicht hat oder macht es nichts aus wenn er z.b. 
bis 4400 zählt und dann erst den Blank-Puls bekommt? Laut datenblatt 
kann er bis 0xFFF zählen doch hat es auswirkungen das das PWM ja nur 
12bit lang ist.

gruß
Timo91
Gast #2491684
Lesenswert?

Hallo Frank,

Ich verwende die Lib von Matthew T. Pandina. 
https://sites.google.com/site/artcfox/demystifying-the-tlc5940 (Es gibt 
ein Nettes eBook dazu)

Die Lib an sich funktioniert gut. Nur  möchte ich diese ein wenig 
abändern.
Die Lib verwendet einen CTC-Timer der nach 4096 Takten einen Interrupt 
auslöst indem der Blank-Pin getoggelt wird und wenn das update-Flag 
gesetzt ist sendet er die GS daten auch noch mit.
Der GSCLK-Pin ist dann einfach am Takt des µC angeschlossen.

Ich hab mir gedacht dies mit 2 CTC-Timern zu realisieren um den Takt am 
GSCLK zu halbieren (F_CPU/2) oder gar zu vierteln (wenn möglich) um die 
CPU-Belastung zu reduzieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren