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
Bestimmt! Abblockkondensatoren 100nF zwischen Vcc und GND der einzelnen Bausteine sitzen? ;)
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
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.
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 | }
|
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.