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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.