mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bytes an TLC5940 senden


Autor: Highii H. (highii)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein weiteres Problem, auf dessen Lösung ich leider nicht im 
Forum gekommen bin.

Für die dot correction und grayscale muss ich 96 bzw. 192 bit an den den 
TLC5940 senden. (Von einem Atmega8). Leider weiß ich nicht genau wie ich 
das anstelle. Ist es "ein Befehl" in AVR-GCC mit dem ich senden kann, 
also ähnlich dem Setzen eines Ports? Oder muss ich erst eine 
Schnittstelle zu dem TLC5940 einrichten?
Könnt ihr mir weiterhelfen bzw. gibt es ein gutes 
Beispielprogramm/Tutorial dazu?

Danke und Gruß

Autor: Karl H. (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
highii H. schrieb:

> Für die dot correction und grayscale muss ich 96 bzw. 192 bit an den den
> TLC5940 senden. (Von einem Atmega8). Leider weiß ich nicht genau wie ich
> das anstelle. Ist es "ein Befehl" in AVR-GCC mit dem ich senden kann,

Nein.

Du musst eine SPI implemetieren.
Entweder als Software-SPI oder die SPI Einheit des µC benutzen.

Im Grunde ist der 5940 auch nur ein Schieberegister. D.h. die Technik 
ist mehr oder weniger genau gleich, wie die Ansteuerung derselben.

Zb. wie hier
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister

oder wie in anderen unzähligen Threads im Forum, in denen 
Schieberegister angesteuert werden.

Oder aber, wie in anderen unzähligen Codebeispielen hier im Forum, in 
denen man sich den Code für einen 5940 ansehen  kann.

: Bearbeitet durch Moderator
Autor: Highii H. (highii)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
74HC595 habe ich schonmal erfolgreich angesteuert. :-)

So wie ich es dann verstehe, müsste ich - wenn ich z.B. 96 bit sende 
möchte - 0 oder 1 an den entsprechenden Port vom TLC5940 anlegen (SIN) 
und über z.B. eine steigende Flanke an einem anderen Port (SCLK) vom 
TLC5940 bestätigen. Oder?

: Bearbeitet durch User
Autor: Karl H. (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
highii H. schrieb:
> 74HC595 habe ich schonmal erfolgreich angesteuert. :-)

Na, dann kennst du ja die entsprechende Ansteuerung.

>
> So wie ich es dann verstehe, müsste ich - wenn ich z.B. 96 bit sende
> möchte - 0 oder 1 an den entsprechenden Port vom TLC5940 anlegen und
> über z.B. eine steigende Flanke an einem anderen Port vom TLC5940
> bestätigen. Weißt du was ich meine?

Ja. Genau so wirds gemacht.
Eine Daten-Leitung, eine Clock-Leitung und eintakten der entsprechenden 
Bits.

: Bearbeitet durch Moderator
Autor: Highii H. (highii)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz schrieb:
> Ja. Genau so wirds gemacht.

Na dann ist es ja leichter als gedacht. ;-)

Autor: Karl H. (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
highii H. schrieb:
> Karl Heinz schrieb:
>> Ja. Genau so wirds gemacht.
>
> Na dann ist es ja leichter als gedacht. ;-)

Steht doch alles im Datenblatt
http://www.ti.com/lit/ds/symlink/tlc5940.pdf

Kapitel "Serial Interface", Seite 12

Autor: Mw E. (Firma: fritzler-avr.de) (fritzler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ganz so einfach ist es dann leider doch ned :/

Da kommen dann noch die ominöse Grayscale Clock dazu sowie XLAT und 
BLANK.

Jetzt muss das so gemacht werden:
Die ganzen Bits mit SCLK und SIN reintakten.
Wenn alle Bits eingetaktet sind muss XLAT gesetzt werden damit die Daten 
übernommern werden.
Paralel dazu müssen immer 4096 Impulse an GSCLK gegeben werden und dann 
ein BLANK Impuls.
Jetzt kommt das schwierige:
XLAT darf nur HIGH werden wenn BLANK HIGH ist.
Sonst gibts nur Flackern.

Mit VPRG schaltet man ja zwischen Dotcorrection und Greyscale um.

Mit 3 Transistoren und paar Widerständen lässt sich der TLC allerdings 
SPI konform machen, dann geht das auch mit /CS, MOSI, CLK.
Im Bild lasse ich GSCLK und BLANK von nem kleinen Attiny erzeugen, kann 
ja auch sonstewo herkommen.

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin Wende schrieb:
> Mit 3 Transistoren und paar Widerständen lässt sich der TLC allerdings
> SPI konform machen, dann geht das auch mit /CS, MOSI, CLK.
> Im Bild lasse ich GSCLK und BLANK von nem kleinen Attiny erzeugen, kann
> ja auch sonstewo herkommen.

Verstehe ich das richtig, dass du 2 Controller verwendest? Ist ein 
schlechte Idee. Der TLC lässt sich (hab ich selber schon gemacht) ohne 
Extras per SPI ansteuern. Generelles vorgehen:
1. Daten senden
2. BLANK high
3. Ein paar ns warten (siehe Datenblatt)
4. Pulse auf XLATCH
5. BLANK low

GSCLK erzeugst du per Timer oder noch besser, falls es dein Controller 
unterstützt, kannst du den CPU Takt auf einem Pin ausgeben lassen 
(CLKOUT).

BLANK muss alle 4096 GSCLK Zyklen betätigt werden (siehe Datenblatt), 
damit der interne PWM Zähler wieder auf 0 geht. Daher sollte alles über 
einen Controller laufen damit es synchron bleibt. Wenn du den CLKOUT 
deines Controllers verwendest geht das sehr einfach per Timer und lässt 
sich mit der Ausgabe der Daten verbinden.

Autor: Mw E. (Firma: fritzler-avr.de) (fritzler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab ich ja geschrieben, dass ich das so mache.
Hintergrund: Alle Timer und Pins vom Hauptprozessor benutzt.
Daher sollte sich der TLC nicht anders verhalten als jedes andere SPI 
Gerät.

Autor: Highii H. (highii)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin Wende schrieb:
> Ganz so einfach ist es dann leider doch ned :/
>
> Da kommen dann noch die ominöse Grayscale Clock dazu sowie XLAT und
> BLANK.


Warum schaltest du nicht die Anoden der LEDs an den TLC5940 sondern die 
Kathode? Muss man es so machen?

Autor: Mw E. (Firma: fritzler-avr.de) (fritzler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Warum schaltest du nicht die Anoden der LEDs an den TLC5940 sondern die
> Kathode? Muss man es so machen?

Les doch einfach mal das Datenblatt...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.