aboutsummaryrefslogtreecommitdiff
path: root/platforms/avr/drivers/ws2812.c
diff options
context:
space:
mode:
Diffstat (limited to 'platforms/avr/drivers/ws2812.c')
-rw-r--r--platforms/avr/drivers/ws2812.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/platforms/avr/drivers/ws2812.c b/platforms/avr/drivers/ws2812.c
index 77c492cd4..9150b3c52 100644
--- a/platforms/avr/drivers/ws2812.c
+++ b/platforms/avr/drivers/ws2812.c
@@ -52,20 +52,15 @@ void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds) {
52 using the fast 800kHz clockless WS2811/2812 protocol. 52 using the fast 800kHz clockless WS2811/2812 protocol.
53*/ 53*/
54 54
55// Timing in ns
56#define w_zeropulse 350
57#define w_onepulse 900
58#define w_totalperiod 1250
59
60// Fixed cycles used by the inner loop 55// Fixed cycles used by the inner loop
61#define w_fixedlow 2 56#define w_fixedlow 2
62#define w_fixedhigh 4 57#define w_fixedhigh 4
63#define w_fixedtotal 8 58#define w_fixedtotal 8
64 59
65// Insert NOPs to match the timing, if possible 60// Insert NOPs to match the timing, if possible
66#define w_zerocycles (((F_CPU / 1000) * w_zeropulse) / 1000000) 61#define w_zerocycles (((F_CPU / 1000) * WS2812_T0H) / 1000000)
67#define w_onecycles (((F_CPU / 1000) * w_onepulse + 500000) / 1000000) 62#define w_onecycles (((F_CPU / 1000) * WS2812_T1H + 500000) / 1000000)
68#define w_totalcycles (((F_CPU / 1000) * w_totalperiod + 500000) / 1000000) 63#define w_totalcycles (((F_CPU / 1000) * WS2812_TIMING + 500000) / 1000000)
69 64
70// w1_nops - nops between rising edge and falling edge - low 65// w1_nops - nops between rising edge and falling edge - low
71#if w_zerocycles >= w_fixedlow 66#if w_zerocycles >= w_fixedlow