Startschwierigkeiten TLC5940

OP Persönliche Seite #1960297
Lesenswert?
• ▲
▼
Hallo,
ich hab nun die erste Platine mit einem TLC5940, nur leider will das 
ganze noch nicht so ganz funktionieren...

Hier mal ein kurzer Schaltplan:

TLC5940 - Potential
   VPRG - GND
   XLAT - VCC
  BLANK - VCC (über 10kΩ und an PB2)
  DCPRG - GND

    SIN - MOSI (SPI)
   SCLK - SCK  (SPI)
  GSLCK - 204,8 kHz Rechteck-Signal

Verbindungen habe ich schon alle überprüft. Mit einem DSO sind alle 
Signal-Pegel auch sauber. Nur leider tut sich nichts an den Ausgängen 
des TLC5940.
Hier mal mein "Code-Schnipsel":
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3

4
#define sleep() asm volatile ("nop")
5

6
// TLC5940_BLANK     PB2
7

8
volatile uint8_t data[10];
9

10
int main(void)
11
{
12
    // 204,8 kHz initalisieren
13
    TCCR1A = (1<<COM1A1) | (1<<WGM11);
14
    TCCR1B = (1<<WGM13) | (1<<WGM12) | (1<<CS10);
15
    ICR1 = 77;
16
    OCR1A = 38;
17

18
    // SPI initalisieren
19
    DDRB = (1<<PB3)|(1<<PB5)|(1<<PB1)|(1<<PB2);
20
    SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
21

22
    sei();
23

24
    PORTB |= (1<<PB2); // HIGH
25

26
        SPDR = 96;
27
        while (!(SPSR & (1<<SPIF)));
28
        SPDR = 96;
29
        while (!(SPSR & (1<<SPIF)));
30
        SPDR = 96;
31
        while (!(SPSR & (1<<SPIF)));
32
        SPDR = 96;
33
        while (!(SPSR & (1<<SPIF)));
34
        SPDR = 96;
35
        while (!(SPSR & (1<<SPIF)));
36
        SPDR = 96;
37
        while (!(SPSR & (1<<SPIF)));
38
        SPDR = 96;
39
        while (!(SPSR & (1<<SPIF)));
40
        SPDR = 96;
41
        while (!(SPSR & (1<<SPIF)));
42
        SPDR = 96;
43
        while (!(SPSR & (1<<SPIF)));
44
        SPDR = 96;
45
        while (!(SPSR & (1<<SPIF)));
46
        SPDR = 96;
47
        while (!(SPSR & (1<<SPIF)));
48
        SPDR = 96;
49
        while (!(SPSR & (1<<SPIF)));
50
        SPDR = 96;
51
        while (!(SPSR & (1<<SPIF)));
52
        SPDR = 96;
53
        while (!(SPSR & (1<<SPIF)));
54
        SPDR = 96;
55
        while (!(SPSR & (1<<SPIF)));
56
        SPDR = 96;
57
        while (!(SPSR & (1<<SPIF)));
58
        SPDR = 96;
59
        while (!(SPSR & (1<<SPIF)));
60
        SPDR = 96;
61
        while (!(SPSR & (1<<SPIF)));
62
        SPDR = 96;
63
        while (!(SPSR & (1<<SPIF)));
64
        SPDR = 96;
65
        while (!(SPSR & (1<<SPIF)));
66
        SPDR = 96;
67
        while (!(SPSR & (1<<SPIF)));
68
        SPDR = 96;
69
        while (!(SPSR & (1<<SPIF)));
70
        SPDR = 96;
71
        while (!(SPSR & (1<<SPIF)));
72
        SPDR = 96;
73
        while (!(SPSR & (1<<SPIF)));
74

75
    PORTB &= ~(1<<PB2); // LOW
76

77
    while(1){};
78
    return 0;
79
}

Kann leider keinen Fehler finden. Eigentlich müsste man doch zumindest 
was an den Ausgängen des TLC "zappeln" sehen, nur dummerweise zeigt das 
Oszi konstant 0V an :/

PWM-Takt ist vorhanden, 24 Bytes werden mittels SPI übetragen und Blank 
wird nach dem senden auf GND gezogen (nachgemessen). Weiß leider 
momentan nicht weiter.

Hoffe, ihr könnt mir etwas helfen :)

Viele Grüße
Julian

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.