Hallo!
Eine Weile versuche ich jetzt schon einen WS2803 LED Treiber im SOP28
Treiber ans laufen zu bekommen, eigentlich sollte das kein Problem sein.
Hab ich doch schon wesentlich umständlicheres Programmiert bekommen.
Zum einen gibt es das Problem das das Datenblatt zwei verschiedene
Pinbelegungen angibt.
Damit meine ich ausdrücklich NICHT die unterschiede zwischen dem DIP
und SMD Package.
Seite drei "Fig2.a SOP28package" gibt IREF mit Pin3 an aber Seite 4 "Pin
Description SOP28" sagt IREF ist pin 2.
Nachdem ich ursprünglich PIN3 als IREF verwendet habe habe ich
zuguterletzt einfach einmal PIN2 ausprobiert aber da passiert auch
nichts.
1 | // led stuff
|
2 | #define LEDDDR DDRC
|
3 | #define LEDPORT PORTC
|
4 | #define LEDCKI 1
|
5 | #define LEDSDI 0
|
6 |
|
7 | // init LEDs
|
8 | void led_init(void) {
|
9 |
|
10 | // set pins as output
|
11 | LEDDDR = 0xFF;
|
12 | // set pins high
|
13 | LEDPORT = 0xFF;
|
14 |
|
15 | LEDPORT &= ~(1<<LEDCKI);
|
16 | _delay_ms(10);
|
17 |
|
18 | for(int i = 0; i < 145; i++){
|
19 | LEDPORT |= (1<<LEDCKI);
|
20 | _delay_us(1);
|
21 | LEDPORT &= ~(1<<LEDCKI);
|
22 |
|
23 | }
|
24 |
|
25 | LEDPORT &= ~(1<<LEDSDI);
|
26 | LEDPORT &= ~(1<<LEDCKI);
|
27 | _delay_ms(10);
|
28 | }
|
SDI ist auch munter High wenn ich nachmesse und CKI wackelt munter vor
sich hin. Nach datenblatt liegen die Signale auch an den richtigen Pins
an, wenn ich CKI und SDI vertausche ändert das nichts.
Es fängt aber nichts an zu leuchten, wo habe ich den offentlichtlichen
Fehler eingebaut? :)
Grüße,
Peter