@@ -60,17 +60,17 @@ static void neopixel_send_buffer_core(volatile uint32_t *clraddr, uint32_t pinMa
60
60
" movs r6, #3; d2: sub r6, #1; bne d2;" // delay 3
61
61
#endif
62
62
#ifdef SAM_D5X_E5X
63
- " movs r6, #16 ; d2: subs r6, #1; bne d2;" // delay 3
63
+ " movs r6, #15 ; d2: subs r6, #1; bne d2;" // short low or high
64
64
#endif
65
65
" tst r4, r5;" // mask&r5
66
66
" bne skipclr;"
67
67
" str r1, [r0, #0];" // clr
68
68
"skipclr:"
69
69
#ifdef SAMD21
70
- " movs r6, #6; d0: sub r6, #1; bne d0;" // delay 6
70
+ " movs r6, #6; d0: sub r6, #1; bne d0;" // long low or high
71
71
#endif
72
72
#ifdef SAM_D5X_E5X
73
- " movs r6, #16 ; d0: subs r6, #1; bne d0;" // delay 6
73
+ " movs r6, #17 ; d0: subs r6, #1; bne d0;" // 834 ns
74
74
#endif
75
75
" str r1, [r0, #0];" // clr (possibly again, doesn't matter)
76
76
#ifdef SAMD21
@@ -85,12 +85,12 @@ static void neopixel_send_buffer_core(volatile uint32_t *clraddr, uint32_t pinMa
85
85
" movs r6, #2; d1: sub r6, #1; bne d1;" // delay 2
86
86
#endif
87
87
#ifdef SAM_D5X_E5X
88
- " movs r6, #15 ; d1: subs r6, #1; bne d1;" // delay 2
88
+ " movs r6, #14 ; d1: subs r6, #1; bne d1;" // finish low
89
89
#endif
90
90
" b loopBit;"
91
91
"nextbyte:"
92
92
#ifdef SAM_D5X_E5X
93
- " movs r6, #12 ; d3: subs r6, #1; bne d3;" // delay 2
93
+ " movs r6, #14 ; d3: subs r6, #1; bne d3;" // finish low
94
94
#endif
95
95
" cmp r2, r3;"
96
96
" bcs neopixel_stop;"
0 commit comments