This library lets you control the addressable RGB LED strips from Pololu Robotics. Forked to add selectable colour order (Support RGB or GRB Leds)
Fork of PololuLedStrip by
Diff: led_strip_write_color.s
- Revision:
- 6:9d0530b7dae2
- Parent:
- 5:690fdfb595de
- Child:
- 7:9a088f042ee0
--- a/led_strip_write_color.s Fri Mar 01 00:05:26 2013 +0000 +++ b/led_strip_write_color.s Fri Mar 01 00:31:24 2013 +0000 @@ -1,5 +1,6 @@ AREA asm_func, CODE, READONLY EXPORT led_strip_write_color + IMPORT led_strip_write_delays led_strip_write_color ; Register usage: @@ -10,12 +11,13 @@ ; R3: pin mask ; Additionally, we use these registers: ; R4: temporary register + ; R5: temporary register ; R7: the number of bits we still need to send ; R12: shift register that holds the 24-bit color ; R13: Link Register, holds return addresses. - push {r4, r12, r7, lr} + push {r4, r5, r12, r7, lr} ldr r12, [r0] ; Read the next color. rbit r12, r12 ; Reverse the order of the bits. @@ -26,8 +28,11 @@ str r3, [r1] ; Drive the line high. rrxs r12, r12 ; Rotate right through carry. + ldr r5, =led_strip_write_delays + ldrb r5, [r5, #0] + lsl r5, r5, #1 ldr r4, =delay_region_end - sub r4, r4, #59*2 + sub r4, r4, r5 blx r4 it cc ; If the bit to send it 0... @@ -44,11 +49,11 @@ add r4, r4, #68 blx r4 - subs r7, r7, #1 ; Decrement the loop counter. + subs r7, r7, #1 ; Decrement the loop counter. bne send_led_strip_bit ; Send another bit if we have not reached zero. led_strip_asm_end - pop {r4, r12, r7, lr} + pop {r4, r5, r12, r7, lr} bx lr