Forum: Mikrocontroller und Digitale Elektronik RGB LED 3x3x3


von Ulrich (Gast)


Lesenswert?

Hallo zusammen,
habe ein Problem mit meinem RGB LED Cube.
angesteuert wird er mit einem Atmega168 und 4 Schieberegistern des typen 
TLC5916.
Nun ist es so, dass sich gleich das erste Schieberegister aufhaengt.
Takt kommt an, SDI kommt auch an, OE ist auf LOW und LE ist auf HIGH.

Habe zum Fehler finden einen Taster angebracht, mit dem ich manuell eine 
Taktflanke weitergehe.

Siehe da nach dem 2x mal druecken, haengt sich das Register irgendiwe 
auf.

Viele Gruesse

von Thomas D. (thomasderbastler)


Lesenswert?

Na dann bin mal gespannt ob jemand ohne Code und Schaltplan helfen kann.

von Dirk K. (dekoepi)


Lesenswert?

Bestimmt!

Abblockkondensatoren 100nF zwischen Vcc und GND der einzelnen Bausteine 
sitzen? ;)

von Thomas D. (thomasderbastler)


Lesenswert?

oder..wir glauben daß das Problem ist bei R42 zu suchen ist oder im Code 
Zeile 28 ?

Aber klar, wenn nix geht 100nF

: Bearbeitet durch User
von Dennis X. (Gast)


Lesenswert?

Ulrich schrieb:
> Habe zum Fehler finden einen Taster angebracht, mit dem ich manuell eine
> Taktflanke weitergehe.

Bist du dir sicher _EINEN Takt weiterzuschalten? Das ist ein Taster, 
Taster prellen. Aber ohne weitere Infos wird man echt sehr schwer helfen 
können.

von Ulrich (Gast)


Lesenswert?

Hallo, danke schonmal.

Es funktioniert leider immer noch nicht.
Habe Spasseshalber anstelle des uC die wichtigen Ausgaenge mit 
Silberdraht auf dem Sockel nachgebaut und die CLK per Hand nachgestellt.

Siehe da, funktioniert so wie es soll...

Also muss es denk ich an der Kommunikation des uC und der 
Schieberegister liegen.

Hier mein Code, vll ist es ja ein einfacher Softwarefehler den ich nicht 
sehe..

Danke (;
1
/****************************************************************/
2
/** INCLUDES **/
3
/****************************************************************/
4
#include <avr/io.h>
5
#include <util/delay.h>
6
7
/****************************************************************/
8
/** FUNKTIONS-HEADER **/
9
/****************************************************************/
10
11
/****************************************************************/
12
/** MAIN-FUNKTION **/
13
/****************************************************************/
14
#define SET_BIT(PORT, BITNUM)    ((PORT) |=  (1<<(BITNUM)))
15
#define CLEAR_BIT(PORT, BITNUM)  ((PORT) &= ~(1<<(BITNUM)))
16
#define TOOGLE_BIT(PORT, BITNUM) ((PORT) ^=  (1<<(BITNUM)))
17
18
int main(void)
19
20
{
21
/** Konfigurationen **/
22
23
DDRC = 0b00001111;
24
DDRB = 0b00000110;
25
DDRD = 0b00000010;
26
27
CLEAR_BIT(PORTB,2);  //Output Enable 
28
SET_BIT(PORTC,3);  //SDI
29
30
//Ebenen
31
SET_BIT(PORTC,2);
32
SET_BIT(PORTC,1);
33
CLEAR_BIT(PORTC,0);
34
35
36
/** Hauptschleife **/
37
  while(true)
38
  {
39
          //CLK
40
CLEAR_BIT(PORTB,1);
41
          _delay_ms(1000);
42
          SET_BIT(PORTB,1);
43
          _delay_ms(1000);
44
          
45
  
46
  
47
  }
48
49
}

von Ulrich (Gast)


Lesenswert?

Achso, ja Taster wurde entprellt ;D und Kondensatoren auch vorhanden 
(:...

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Ulrich schrieb:
> SET_BIT(PORTC,3);  //SDI

 Und ?

 Die LEDs sind aus, was willst du da sehen ?

von Ulrich (Gast)


Lesenswert?

Nein, ich seh sie ja leuchten, mit dem clearen wuerde ich sie 
ausschalten

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.