diff options
author | Daniel Garcia <danielgarcia@gmail.com> | 2014-10-02 05:34:24 +0400 |
---|---|---|
committer | Daniel Garcia <danielgarcia@gmail.com> | 2014-10-02 05:34:24 +0400 |
commit | f3191249c73eae66975bfb3a3ba7c4921bc375d3 (patch) | |
tree | 133806487990b7f176daf82e675ecfed296998fc | |
parent | c4f3db5deb09e20702b0d16460efebc6f3a31119 (diff) |
Tweaking WS2811 timings
-rw-r--r-- | chipsets.h | 2 | ||||
-rw-r--r-- | clockless_trinket.h | 6 |
2 files changed, 7 insertions, 1 deletions
@@ -374,7 +374,7 @@ class LPD1886Controller1250Khz : public ClocklessController<DATA_PIN, 2 * FMUL, // WS2811@800khz 2 clocks, 5 clocks, 3 clocks template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB> -class WS2811Controller800Khz : public ClocklessController<DATA_PIN, 2 * FMUL, 5 * FMUL, 3 * FMUL, RGB_ORDER> {}; +class WS2811Controller800Khz : public ClocklessController<DATA_PIN, 3 * FMUL, 4 * FMUL, 3 * FMUL, RGB_ORDER> {}; template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB> class WS2811Controller400Khz : public ClocklessController<DATA_PIN, 4 * FMUL, 10 * FMUL, 6 * FMUL, RGB_ORDER> {}; diff --git a/clockless_trinket.h b/clockless_trinket.h index 4d93d091..4f7b7db3 100644 --- a/clockless_trinket.h +++ b/clockless_trinket.h @@ -32,6 +32,12 @@ template<int _LOOP, int PAD> inline void _dc_AVR(register uint8_t & loopvar) { template<int CYCLES> __attribute__((always_inline)) inline void _dc(register uint8_t & loopvar) { _dc_AVR<CYCLES/6,CYCLES%6>(loopvar); } +template<> __attribute__((always_inline)) inline void _dc<-6>(register uint8_t & loopvar) {} +template<> __attribute__((always_inline)) inline void _dc<-5>(register uint8_t & loopvar) {} +template<> __attribute__((always_inline)) inline void _dc<-4>(register uint8_t & loopvar) {} +template<> __attribute__((always_inline)) inline void _dc<-3>(register uint8_t & loopvar) {} +template<> __attribute__((always_inline)) inline void _dc<-2>(register uint8_t & loopvar) {} +template<> __attribute__((always_inline)) inline void _dc<-1>(register uint8_t & loopvar) {} template<> __attribute__((always_inline)) inline void _dc<0>(register uint8_t & loopvar) {} template<> __attribute__((always_inline)) inline void _dc<1>(register uint8_t & loopvar) {asm __volatile__("mov r0,r0":::);} template<> __attribute__((always_inline)) inline void _dc<2>(register uint8_t & loopvar) {asm __volatile__("rjmp .+0":::);} |