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ß
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 User
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
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 User
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
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.
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.
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.
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?
> 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...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.