Hallo,
ich habe einen LED-Stripe (WS2818 mit integriertem controller).
Jetzt habe ich immer gedacht, ich könnte die Adafruit-Neopixel library
benutzen. Aber diese ist ja nur für Arduinos. Zumindest wird Adruino.h
bzw. pins-arduino.h/WProgramm.h benötigt.
Ich habe zwar auch einen Atmega 328p, aber einzeln (also nicht als
Arduino)
Kennt jemand eine library, die ich sonst noch dafür verwenden kann?
Tobias
Der Großteil der Ansteuerung ist in der Lib m.W. als Inline-ASM gelöst,
um das Timing hinzubekommen.
Falls du nicht's passendes ohne Ardiuno findest, kopier dir halt den
Block raus, der geht auch ohne C++, pinMode und digitalWrite.
Horst schrieb:> Die funktioniert:> https://github.com/cpldcpu/light_ws2812
mhh, muss man da noch etwas berücksichtigen?
Habe PB2 auf Data (ist in der ws2818_config.h), 5V und Gnd mit dem
LED-Stripe verbunden. Aber ich bekomme keine Farbe auf den LEDs. Diese
sind immer weiss.
Tobias
im speziellen geht es um die pin-konfiguration und maskhi bzw. masklo
in einer config-header steht
1
#define ws2812_port B // Data port
2
#define ws2812_pin 2 // Data out pin
Im hauptcode wird die Funktion ws2818_sendarray aufgerufen. In dieser
Funktion wird der define ws2818_pin verwendet ( _BV(ws2818_pin) -> (1 <<
ws2818_pin) oder?)
mit diesem makro wird dann die Funktion ws2812_sendarray_mask
aufgerufen.
In dieser Funktion wird erst der Daten-Pin deklariert.
dazu wird
ws2812_DDRREG |= maskhi;
maskhi ist aus der vorigen Funktion übergeben worden. Dort war es aber
ws2818_pin. Müsste aber nciht eigentlich der Port genommen werden?`woher
weiss man jetzt, dass Port B gemeint ist? (Passt zwar, da B auch 2 ist,
aber das ist ja eher zufall).
In den nächsten zwei Zeilen kommt dann
masklo =~maskhi&ws2812_PORTREG;
maskhi |= ws2812_PORTREG;
da weiss ich leider gar nicht, was da passiert
masklo und maskhi werden dann erst wieder in einer der letzten Zeilen
versendet (assembler-code)
: "r" (curbyte), "I" (_SFR_IO_ADDR(ws2812_PORTREG)), "r" (maskhi),
"r" (masklo)
was macht diese Zeile?
Meine Frage:
kann jemand erläutern, wie genau der Datenpin deklariert und
initialisiert wird? und wofür masklo und maskhi genau sind?
Gruß
Tobias
Tobias schrieb:> Meine Frage:> kann jemand erläutern, wie genau der Datenpin deklariert und> initialisiert wird? und wofür masklo und maskhi genau sind?
Der Datenpin wird im Configfile deklariert. Genauer: Die Defines werden
im Headerfile zusammengesetzt.