diff options
Diffstat (limited to 'quantum/light_ws2812.c')
| -rwxr-xr-x | quantum/light_ws2812.c | 20 | 
1 files changed, 12 insertions, 8 deletions
| diff --git a/quantum/light_ws2812.c b/quantum/light_ws2812.c index d38dac4c69..497543339b 100755 --- a/quantum/light_ws2812.c +++ b/quantum/light_ws2812.c @@ -152,11 +152,6 @@ void inline ws2812_setleds_pin(struct cRGB *ledarray, uint16_t leds, uint8_t pin  // Setleds for SK6812RGBW  void inline ws2812_setleds_rgbw(struct cRGBW *ledarray, uint16_t leds)  { -  // ws2812_DDRREG |= _BV(ws2812_pin); // Enable DDR -  // new universal format (DDR) -  _SFR_IO8((RGB_DI_PIN >> 4) + 1) |= _BV(RGB_DI_PIN & 0xF); - -  ws2812_sendarray_mask((uint8_t*)ledarray,leds<<2,_BV(RGB_DI_PIN & 0xF));    #ifdef RGBW_BB_TWI      cli(); @@ -169,14 +164,23 @@ void inline ws2812_setleds_rgbw(struct cRGBW *ledarray, uint16_t leds)      uint8_t * data = (uint8_t*)ledarray;      while (datlen--) {        curbyte=*data++; -      I2C_Write(curbyte % 0x10); +      I2C_Write(curbyte);      }      I2C_Stop();      sei(); +  #else +    _delay_us(80);    #endif -  _delay_us(80); +  // ws2812_DDRREG |= _BV(ws2812_pin); // Enable DDR +  // new universal format (DDR) +  _SFR_IO8((RGB_DI_PIN >> 4) + 1) |= _BV(RGB_DI_PIN & 0xF); + +  ws2812_sendarray_mask((uint8_t*)ledarray,leds<<2,_BV(RGB_DI_PIN & 0xF)); + + +  }  void ws2812_sendarray(uint8_t *data,uint16_t datlen) @@ -258,7 +262,7 @@ void inline ws2812_sendarray_mask(uint8_t *data,uint16_t datlen,uint8_t maskhi)    cli();    while (datlen--) { -    curbyte=(*data++) % 0x10; +    curbyte=(*data++);      asm volatile(      "       ldi   %0,8  \n\t" | 
