Forum: Mikrocontroller und Digitale Elektronik Mit PIC12F629 WS2812 NeoPixel ansteuern


von Daniel S. (lucky_001)


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!

von Teo (Gast)


Lesenswert?


von Daniel S. (lucky_001)


Lesenswert?

Habe ich bereits gesehen. Aber das hilft mir nicht so wirklich weiter. 
Zudem kann ich klein Assambler.

von Teo (Gast)


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 :)

von Erich (Gast)


Lesenswert?

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

von Daniel S. (lucky_001)


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.

von Erich (Gast)


Lesenswert?

Daniel S. schrieb:
> SourceBoost IDE

Es steht doch im Text, daß Compiler XC8 zu verwenden ist.

https://www.microchip.com/mplab/compilers/8

Und braucht bestimmt auch
https://www.microchip.com/en-us/development-tools-tools-and-software/mplab-x-ide

Gruss

von Daniel S. (lucky_001)


Lesenswert?

Leider funktioniert es ach nicht mit dem MPLAB bzw XC Compiler.

Außerdem ist das garnicht für den PIC12F629 sondern für den PIC12F1840. 
Sprich, es funktioniert nicht.

von Teo (Gast)


Lesenswert?

Das Ganze ist halt doch um einiges komplexer als LEGO-Steine zusammen zu 
stecken!
Da wirst du wohl o. übel, um einiges mehr an Eigenleistung (Lernen) rein 
stecken müssen.
Hmmm... ARDUINO soll (?) so ähnlich sein wie LEGO spielen!?
Falls du mit den PICs (und anderen "echten" µCs) weiter arbeiten willst, 
lies dir das mal durch:
https://www.sprut.de/electronic/pic/index.htm

von Daniel S. (lucky_001)


Lesenswert?

Tut mir leid, aber ich habe noch nie mit einem PIC gearbeitet bzw auch 
noch nie mit der IDE. Und wenn ich alles wüsste würde ich ja wohl kaum 
hier Fragen, Oder!?

: Bearbeitet durch User
von bingo (Gast)


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.

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.