|
|
|
|
@ -21,7 +21,7 @@ void setColor(uint8_t color, uint8_t *buf,uint32_t mask){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void setColorRGB(Color c, uint8_t *buf, uint32_t mask){
|
|
|
|
|
void setColorRGB(Color c, uint8_t *buf, uint32_t mask) {
|
|
|
|
|
setColor(c.G,buf, mask);
|
|
|
|
|
setColor(c.R,buf+8, mask);
|
|
|
|
|
setColor(c.B,buf+16, mask);
|
|
|
|
|
@ -49,6 +49,10 @@ void ledDriverInit(int leds, stm32_gpio_t *port, uint32_t mask, uint8_t **o_fb)
|
|
|
|
|
sMask=mask;
|
|
|
|
|
palSetGroupMode(port, sMask, 0, PAL_MODE_OUTPUT_PUSHPULL|PAL_STM32_OSPEED_HIGHEST|PAL_STM32_PUPDR_FLOATING);
|
|
|
|
|
|
|
|
|
|
// maybe don't do whole port?
|
|
|
|
|
// palSetPadMode(port, 8, PAL_MODE_OUTPUT_PUSHPULL|PAL_STM32_OSPEED_HIGHEST|PAL_STM32_PUPDR_FLOATING);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// configure pwm timers -
|
|
|
|
|
// timer 2 as master, active for data transmission and inactive to disable transmission during reset period (50uS)
|
|
|
|
|
// timer 3 as slave, during active time creates a 1.25 uS signal, with duty cycle controlled by frame buffer values
|
|
|
|
|
@ -151,9 +155,15 @@ void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds) {
|
|
|
|
|
// ws2812_write_led(i, ledarray[i].r, ledarray[i].g, ledarray[i].b);
|
|
|
|
|
// i++;
|
|
|
|
|
// }
|
|
|
|
|
uint8_t i = 0;
|
|
|
|
|
while (i < number_of_leds) {
|
|
|
|
|
setColor(ledarray[i].g, (fb+24*i), sMask);
|
|
|
|
|
setColor(ledarray[i].r, (fb+24*i)+8, sMask);
|
|
|
|
|
setColor(ledarray[i].b, (fb+24*i)+16, sMask);
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ws2812_setleds_rgbw(LED_TYPE *ledarray, uint16_t number_of_leds) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|