Mit PIC12F629 WS2812 NeoPixel ansteuern

OP #6567382
Lesenswert?

Hallo,
ich bin dabei eine kleine schaltung zu bauen mit einem PIC12F629 der 
Neopixel ansteuern soll. Die schaltung hat vier Eingänge und soll 
entsprechend wenn ein eingang HIGH ist, gewisse LEDs einschalten bzw die 
Farbe gewisser LEDs ändern. Nicht die ganze reihe, sondern nur einen 
kleinen Teil.

Die Eingänge habe ich bereits fertig, ich habe nur noch garkeine ahnung 
wie es mit dem ansteuern der NeoPixel aussieht.

Daher meine eigendliche frage: Wie steuere ich die Neopixel genau an? 
Das Datenblatt brachte mir bis dato nicht viel. (Ein Code-Beispiel wäre 
schön)

Danke im vorraus!
Gast #6567459
Lesenswert?

Na dann.... OHNE Gewähr und Munition!
1
    INTERRUPT_GlobalInterruptDisable();
2
    for (led_nr = 0; led_nr < LED_ANZAHL; led_nr++) {
3
        for (farbe = 0; farbe < 3; farbe++) {
4
            for (bit_nr = 7; bit_nr >= 0; bit_nr--) {
5
                if (rgb_Ar[led_nr][farbe] & (1 << bit_nr)) {
6
                    // Pin min. LowZeit < 0,1µs (?))
7
                    // Pin max. für 5µs(!) Low (erst ab v4 o. v5 sind es wirklich 50µs)
8
                    WS2812B_Pin_LAT = 1; // 1250ns !!! (900)
9
                    NOP();
10
                    NOP();
11
                    NOP();
12
                    NOP();
13
                    NOP();
14
                    NOP();
15
                    NOP();
16
                    NOP();
17
                    NOP();
18
                    NOP();
19
                    NOP();
20
                    WS2812B_Pin_LAT = 0;
21
                    //                    NOP();
22
                } else {
23
                    WS2812B_Pin_LAT = 1; // ~ 260ns (min200, max 350)
24
                    NOP();
25
                    NOP();
26
                    NOP();
27
                    NOP();
28
                    NOP();
29
                    WS2812B_Pin_LAT = 0;
30
                    //                    NOP();
31
                }
32
            }
33
        }
34
    }
35
    INTERRUPT_GlobalInterruptEnable();

Die Anzahl der NOPs hängt natürlich vom Taktfrequenz ab!
Hier im zB... kA :)
OP #6567490
Lesenswert?

Erich schrieb:
> Daniel S. schrieb:
>> Habe ich bereits gesehen.
>
> Nein, wohl doch nicht so ganz.
> Denn unter "Für PIC12, PIC16, PIC18..."
> ist dir der Link "Forenthread" entgangen!
>
> Beitrag "Re: [ASM & C] PIC12/PIC18/PIC24 WS2812 SPI Library"
>
> Da sehe ich reinen C code,
> allerdings für etwas moderneren Controller.
>
> Gruss

ich bekomme beim Kompelieren immer vier Fehlermeldungen:

line 21: Unable to open include file: XC.h
line 22: Unable to open include file: stdio.h
line 23: Unable to open include file: stdlib.h
line 24: Unable to open include file: stdint.h

Ich programmiere übrigends mit der SourceBoost IDE.
Gast #6571219
Lesenswert?

Daniel S. schrieb:
> Tut mir leid, aber ich habe noch nie mit einem PIC gearbeitet bzw auch
> noch nie mit der IDE.

ggf. mit einem anderen µC ??? oder noch gar nicht ???
Im letzteren Fall wäre die sprut-Seite ein guter Einstieg.

BTW: der PIC12F629 ist sowas von veraltet (knapp 20 Jahre alt), zudem 
noch ziemlich langsam, zum Einstieg bei sprut ok, aber nix für Dein 
Vorhaben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren