TLC5940 Dot Correction

OP #2820495
Lesenswert?
• ▲
▼
Hi,

Ich habe Probleme mitt der Dot Correction bei einem TLC5940:

der GS mode läuft ohne Probleme.
Das settzten des DC-Registers hat aber irgendwie keine sichtbaren 
Auswirkungen, außer das alle Ausgänge verlischen.
im dem nächsten GS-Cyklus ist keine Helligkeits-Änderung sichtbar.

hier der Init Code (neben der SPI init):
1
  TLC5949_CTRL_DDR |= ( 1<< TLC5949_CTRL_DCPRG)
2
                   |  ( 1<< TLC5949_CTRL_VPRG);
3
  TLC5949_CTRL_PORT &= ~( 1<< TLC5949_CTRL_VPRG);
4
  TLC5949_CTRL_PORT |=  ( 1<< TLC5949_CTRL_DCPRG);

Im Kontext der Mainloop werden dann die dc-werte gesetzt und sollten 
nach meinem Verständnis sofort Auswirkungen zeigen:
1
      cli();  // sichern, damit die GS-Interrupts nicht dazwischenfunken
2
      TLC5949_CTRL_PORT |=  ( 1<< TLC5949_CTRL_VPRG);  // DC register anwählen
3
      uint8_t d[] = { // 16*6bit = 96bit = 12Byte
4
        0b00000000, 0b00010000, 0b10000011,   
5
        0b00010000, 0b01010001, 0b10000111,   
6
        0b00100100, 0b11000100, 0b00010101,   
7
        0b01110010, 0b01001100, 0b00111111
8
      };
9
      for(i=0; i< sizeof(d);++i){
10
        spi_sendByte(d[i]);               // register füllen
11
      }
12
      TLC5940_SPI_PORT |=  (1<< TLC5940_XLAT); // Daten übernehmen
13
      TLC5940_SPI_PORT &= ~(1<< TLC5940_XLAT); //
14

15
      TLC5949_CTRL_PORT &=  ~( 1<< TLC5949_CTRL_VPRG);  // wieder GS-Regsiter anwählen
16
      sei();  // weiter wie bisher

Ich hab auch schon probiert direkt am Anfang einfach nur die PWMs mit 
0xFFF zu initialisieren und ihm ein paar GS-Clocks zu geben, damit die 
Ausgänge angehen und dann mittels Dot Correction die Helligkeit zu 
regulieren.

Dies wäre sogar meine favorisierte Methode, da in dem aktuellen Projekt 
die 6bit ausreichen, ich dafür aber die Hälfte der Bandbreite einspare.


Hat jemand einen Tip für mich, was ich übersehe?

Gruß
Vlad
Gast #2824105
Lesenswert?
• ▲
▼
Hallo Vlad,
ich glaube mich erinnern zu können, dass Du in jedem Fall 12Bit pro 
Kanal übergeben musst.

Das bedeutet, dass Deine Matrix nicht 16*6bit = 96bit = 12Byte sondern 
16*12bit = 192bit = 24Byte sein muss.

Gruß
Frank
Persönliche Seite #2824621
Lesenswert?
• ▲
▼
Vlad Tepesch schrieb:
> Simon K. schrieb:
>> Aber es löst nicht zufällig das Problem, oder? ;-)
>
> Häh? seit wann kümmern sich ICs darum, wie die Variablen im Code heißen,
> oder was willst du damit sagen?

Nö das nicht, aber weiß der Geier, was da in deinem Code vorgeht, wenn 
da mehrere defines mit leicht unterschiedlichem Namen existieren und man 
sich wundert, warum sich nix ändert, wenn man das TLC5940-define ändert 
und in Wirklichkeit das TLC5949-define verwendet wird...
OP #2824635
Lesenswert?
• ▲
▼
Simon K. schrieb:
> Nö das nicht, aber weiß der Geier, was da in deinem Code vorgeht, wenn
> da mehrere defines mit leicht unterschiedlichem Namen existieren und man
> sich wundert, warum sich nix ändert, wenn man das TLC5940-define ändert
> und in Wirklichkeit das TLC5949-define verwendet wird...

Du hast mich misverstanden.
ich hab nur vorher die defines global umbenannt um den Modulnamen 
voranzustellen. Dabei habe ich mich wohl vertippt (9 statt 0)
(Es gibt auch gar keinen TLC5949)
Persönliche Seite #2824639
Lesenswert?
• ▲
▼
Vlad Tepesch schrieb:
> Simon K. schrieb:
>> Nö das nicht, aber weiß der Geier, was da in deinem Code vorgeht, wenn
>> da mehrere defines mit leicht unterschiedlichem Namen existieren und man
>> sich wundert, warum sich nix ändert, wenn man das TLC5940-define ändert
>> und in Wirklichkeit das TLC5949-define verwendet wird...
>
> Du hast mich misverstanden.

Was heißt hier "missverstanden"? Du bist im Moment der Einzige, der 
deinen gesamten Code angucken kann.
Es war ja nur eine Vermutung.

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.