Forum: Projekte & Code TLC5940 (6x kaskadiert) – LED blinkt nur kurz beim Einschalten, danach keine Funktion


von Karanvir (karan)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe das "4 Gewinnt" Spiel versucht auf einer Platine mit LEDs zu 
realiseren. Dazu wurde ein LED-Raster aus 6x7 bicolor LEDs (Gelb und 
rot) gewählt. Das ganze wird über ein Atmega328P angesteuert. Die LEDs 
werden mithilfe von TLC5940 angesteuert. Es gibt 3 Taster, mit denen man 
die Spalte quasi auswählt (also links oder rechts) und eine "OK" Taste 
zum Bestätigen. Unter dem Raster ist noch eine LED Reihe, mit der man 
die Spalte auswählt.
Ich habe die Schaltpläne anhehängt.

Aufbau:
Mikrocontroller: ATmega328P (16 MHz Quarz)
LED-Raster: 6x7 Bicolor LEDs (rot/gelb, gemeinsame Anode an 5V)
Ansteuerung: 6× TLC5940 (kaskadiert)
LED-Strom: ca. 18 mA (IREF = 2 kΩ)
Versorgung: 5V (USB)

Verkabelung TLC ↔ ATmega:
GSCLK → PD3 (Arduino D3)
BLANK → PB1 (D9)
XLAT → PB2 (D10)
SIN → PB3 (D11)
SCLK → PB5 (D13)
VPRG → GND
DCPRG → GND
XERR → nicht verwendet

Testaufbau:
Aktuell ist nur eine Bicolor-LED angelötet (OUT11/OUT12 des ersten TLC)
Rest der Schaltung vollständig bestückt

Nun zum Problem:
Ich habe die Platine bestellt und fast alle Bauteile aufgelötet. Zum 
Testen habe ich nur eine bicolor LED angelötet und sonst sind alle 
Bauteile angelötet.
Den Atmega habe ich via Arduino programmiert, dabei blitzt die eine LED 
nur kurz auf beim Einschalten und blinkt nicht.

Bereits getestet:
Einzelner TLC auf Breakout + Arduino → funktioniert einwandfrei
GSCLK manuell getoggelt → LED reagiert
BLANK testweise LOW → keine Änderung
Spannung am OUT-Pin gemessen (~0.4V)
Verhalten beim Einschalten sporadisch (kein deterministisches Verhalten)

Der Code:
#include <Tlc5940.h>

void setup() {
  Tlc.init();
  Tlc.clear();
  Tlc.update();
}

void loop() {

  //LEDs ein
  Tlc.set(7, 0);
  Tlc.set(8, 0);
  Tlc.set(9, 0);
  Tlc.set(10, 0);
  Tlc.set(11, 0);
  Tlc.set(12, 0);
  Tlc.set(13, 0);
  Tlc.set(14, 0);
  Tlc.set(15, 0);
  Tlc.set(16, 0);
  Tlc.update();
  delay(1000);

  //LEDs aus
  Tlc.set(7, 4095);
  Tlc.set(8, 4095);
  Tlc.set(9, 4095);
  Tlc.set(10, 4095);
  Tlc.set(11, 4095);
  Tlc.set(12, 4095);
  Tlc.set(13, 4095);
  Tlc.set(14, 4095);
  Tlc.set(15, 4095);
  Tlc.set(16, 4095);
  Tlc.update();
  delay(1000);
}

Hat jemand eine Idee, woran es liegen könnte?
Insbesondere ob es ein Problem mit GSCLK Signal (Signalqualität 
/Verteilung) oder BLANK / XLAT Timing
oder der Kaskadierung der TLCs sein könnte?

Vielen Dank!
Lg Karan

von Harald K. (kirnbichler)


Lesenswert?

Hier könnt ihr Projekte, Schaltungen oder Codeschnipsel vorstellen. 
Projekte bitte nur mit Code oder Schaltplan posten (falls ihr nur Fotos 
vorstellen möchtet, bitte in "Zeigt her eure Kunstwerke").
Bitte hier keine Fragen posten

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.