Skip to content

Commit 640dede

Browse files
committed
improve SAMx5x NeoPixel timings
1 parent 7be66a5 commit 640dede

File tree

1 file changed

+5
-5
lines changed
  • ports/atmel-samd/common-hal/neopixel_write

1 file changed

+5
-5
lines changed

ports/atmel-samd/common-hal/neopixel_write/__init__.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,17 @@ static void neopixel_send_buffer_core(volatile uint32_t *clraddr, uint32_t pinMa
6060
" movs r6, #3; d2: sub r6, #1; bne d2;" // delay 3
6161
#endif
6262
#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
6464
#endif
6565
" tst r4, r5;" // mask&r5
6666
" bne skipclr;"
6767
" str r1, [r0, #0];" // clr
6868
"skipclr:"
6969
#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
7171
#endif
7272
#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
7474
#endif
7575
" str r1, [r0, #0];" // clr (possibly again, doesn't matter)
7676
#ifdef SAMD21
@@ -85,12 +85,12 @@ static void neopixel_send_buffer_core(volatile uint32_t *clraddr, uint32_t pinMa
8585
" movs r6, #2; d1: sub r6, #1; bne d1;" // delay 2
8686
#endif
8787
#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
8989
#endif
9090
" b loopBit;"
9191
"nextbyte:"
9292
#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
9494
#endif
9595
" cmp r2, r3;"
9696
" bcs neopixel_stop;"

0 commit comments

Comments
 (0)