Hallo zusammen,
ich bin neu hier und habe im Rahmen eines Projekts im Studium Probleme
mit der Ansteuerung des TLC5940 mit dem Mikrocontroller RL78 von
Renesas:
Ziel ist es einen 4x4x4 RGB-LED-Würfel anzusteuern, wie ihr ihn sicher
kennt. (RGB-Kathoden in Säulen verbunden, Common Anode in Ebenen
zusammengefasst, Ebenen über Transistoren nacheinander durchschalten mit
entsprechendem Muster an TLCs für die 3x16 LEDs (Rot, Grün, Blau) der
jeweiligen Ebene).
Das Durchschalten der Ebenen funktioniert einwandfrei. Nur haben wir
Probleme mit den Ausgängen des TLCs.
Wir betreiben diesen im DC-Mode (Dot Correction):
VPRG = High
BLANK = LOW
DCPRG = High
GSCLK = Low
2kOhm als Referenz-Widerstand
100nF-Kondensator zwischen VCC und GND
Da wir später 3 TLC in Reihe schalten wollen, schieben wir dort 3x96
Bits (also 36 Bytes) über SIN in den Treiber. Schnittstelle haben wir
selbst geschrieben über Timer-Interrupt (aber auch mit CSI-Modul)
ausprobiert.
Auf dem Oszilloskop stimmen die Signale samt XLAT zur Übernahme mit dem
Timing Chart im Datenblatt überein.
Senden wir nur Nullen sind die LEDs auch aus.
Aber senden wir nur Einsen (also alle Ausgänge sollen LEDs schalten mit
maximalem Strom) sind immer wieder verschiedene LEDs ein bzw. aus. Mal
alle, mal nur zwei, oft etwa die Hälfte.
Bei nur Nullen nie Probleme.
Haben schon einiges ausprobiert:
- anderen Referenzwiderstand
- andere Frequenz
- anderes TLC
- andere Kondensatoren
- andere Verdrahtung
- anderes Bitmuster
- andere Anzahl von Bytes (1, 12 nur für einen TLC etc.)
Betreiben den TLC mittlerweile minimal. Was geht haben wir
festverdrahtet, keine Transistoren auf dem Steckbrett oder weitere TLCs.
Leider keine Verbesserung.
Zu sagen ist, dass wir ein Demostration Kit von Renesas nutzen, auf dem
an den Pins weitere Peripherie festangeschlossen ist. Das ist nicht
optimal, aber die Signale sind wie gesagt glasklar auf dem Oszilloskop.
Man wundert sich, dass bei konstantem Low-Pegel auf SIN die LEDs dunkel
bleiben, aber bei konstantem High-Pegel die Leds zufällig leuchten oder
aben nicht.
Falls darauf jemand einen Rat weiß bzw. sieht, was wir falsch machen,
wäre ich für einen Hinweis sehr dankbar.
Habe den Quellcode angehängt, falls es jemanden interessiert.
Vielen Dank im Voraus
Michael