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 David Grayson

Committer:
DavidEGrayson
Date:
Fri Mar 01 00:05:26 2013 +0000
Revision:
5:690fdfb595de
Parent:
4:d3b60bd43811
Child:
6:9d0530b7dae2
It looks like the code is transmitting the right number of bits now.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DavidEGrayson 0:06475317f283 1 AREA asm_func, CODE, READONLY
DavidEGrayson 0:06475317f283 2 EXPORT led_strip_write_color
DavidEGrayson 0:06475317f283 3
DavidEGrayson 0:06475317f283 4 led_strip_write_color
DavidEGrayson 5:690fdfb595de 5 ; Register usage:
DavidEGrayson 5:690fdfb595de 6 ; These are the first 4 arguments to the method:
DavidEGrayson 5:690fdfb595de 7 ; R0: pointer to the color to send
DavidEGrayson 5:690fdfb595de 8 ; R1: pointer to the register for setting the pin
DavidEGrayson 5:690fdfb595de 9 ; R2: pointer to the register for clearing the pin
DavidEGrayson 5:690fdfb595de 10 ; R3: pin mask
DavidEGrayson 5:690fdfb595de 11 ; Additionally, we use these registers:
DavidEGrayson 5:690fdfb595de 12 ; R4: temporary register
DavidEGrayson 5:690fdfb595de 13 ; R7: the number of bits we still need to send
DavidEGrayson 5:690fdfb595de 14 ; R12: shift register that holds the 24-bit color
DavidEGrayson 5:690fdfb595de 15 ; R13: Link Register, holds return addresses.
DavidEGrayson 5:690fdfb595de 16
DavidEGrayson 5:690fdfb595de 17
DavidEGrayson 5:690fdfb595de 18 push {r4, r12, r7, lr}
DavidEGrayson 0:06475317f283 19
DavidEGrayson 0:06475317f283 20 ldr r12, [r0] ; Read the next color.
DavidEGrayson 0:06475317f283 21 rbit r12, r12 ; Reverse the order of the bits.
DavidEGrayson 0:06475317f283 22 rev r12, r12 ; Reverse the order of the bytes.
DavidEGrayson 0:06475317f283 23 mov r7, #24 ; Initialize the loop counter register.
DavidEGrayson 0:06475317f283 24
DavidEGrayson 0:06475317f283 25 send_led_strip_bit
DavidEGrayson 0:06475317f283 26 str r3, [r1] ; Drive the line high.
DavidEGrayson 0:06475317f283 27 rrxs r12, r12 ; Rotate right through carry.
DavidEGrayson 0:06475317f283 28
DavidEGrayson 5:690fdfb595de 29 ldr r4, =delay_region_end
DavidEGrayson 5:690fdfb595de 30 sub r4, r4, #59*2
DavidEGrayson 5:690fdfb595de 31 blx r4
DavidEGrayson 0:06475317f283 32
DavidEGrayson 0:06475317f283 33 it cc ; If the bit to send it 0...
DavidEGrayson 0:06475317f283 34 strcc r3, [r2] ; Drive the line low.
DavidEGrayson 0:06475317f283 35
DavidEGrayson 5:690fdfb595de 36 ldr r4, =delay_region_end
DavidEGrayson 5:690fdfb595de 37 sub r4, r4, #59*2
DavidEGrayson 5:690fdfb595de 38 blx r4
DavidEGrayson 0:06475317f283 39
DavidEGrayson 0:06475317f283 40 it cs ; If the bit to send is 1...
DavidEGrayson 0:06475317f283 41 strcs r3, [r2] ; Drive the line low.
DavidEGrayson 0:06475317f283 42
DavidEGrayson 4:d3b60bd43811 43 ldr r4, =delay_region
DavidEGrayson 5:690fdfb595de 44 add r4, r4, #68
DavidEGrayson 4:d3b60bd43811 45 blx r4
DavidEGrayson 4:d3b60bd43811 46
DavidEGrayson 5:690fdfb595de 47 subs r7, r7, #1 ; Decrement the loop counter.
DavidEGrayson 5:690fdfb595de 48 bne send_led_strip_bit ; Send another bit if we have not reached zero.
DavidEGrayson 4:d3b60bd43811 49
DavidEGrayson 4:d3b60bd43811 50 led_strip_asm_end
DavidEGrayson 5:690fdfb595de 51 pop {r4, r12, r7, lr}
DavidEGrayson 4:d3b60bd43811 52 bx lr
DavidEGrayson 4:d3b60bd43811 53
DavidEGrayson 4:d3b60bd43811 54
DavidEGrayson 4:d3b60bd43811 55 delay_region
DavidEGrayson 5:690fdfb595de 56 ; The following is 128 nops.
DavidEGrayson 0:06475317f283 57 nop
DavidEGrayson 0:06475317f283 58 nop
DavidEGrayson 0:06475317f283 59 nop
DavidEGrayson 0:06475317f283 60 nop
DavidEGrayson 0:06475317f283 61 nop
DavidEGrayson 0:06475317f283 62 nop
DavidEGrayson 0:06475317f283 63 nop
DavidEGrayson 0:06475317f283 64 nop
DavidEGrayson 0:06475317f283 65 nop
DavidEGrayson 0:06475317f283 66 nop
DavidEGrayson 0:06475317f283 67 nop
DavidEGrayson 0:06475317f283 68 nop
DavidEGrayson 0:06475317f283 69 nop
DavidEGrayson 4:d3b60bd43811 70 nop
DavidEGrayson 4:d3b60bd43811 71 nop
DavidEGrayson 4:d3b60bd43811 72 nop
DavidEGrayson 4:d3b60bd43811 73
DavidEGrayson 0:06475317f283 74 nop
DavidEGrayson 0:06475317f283 75 nop
DavidEGrayson 0:06475317f283 76 nop
DavidEGrayson 0:06475317f283 77 nop
DavidEGrayson 0:06475317f283 78 nop
DavidEGrayson 0:06475317f283 79 nop
DavidEGrayson 0:06475317f283 80 nop
DavidEGrayson 0:06475317f283 81 nop
DavidEGrayson 0:06475317f283 82 nop
DavidEGrayson 0:06475317f283 83 nop
DavidEGrayson 0:06475317f283 84 nop
DavidEGrayson 0:06475317f283 85 nop
DavidEGrayson 0:06475317f283 86 nop
DavidEGrayson 0:06475317f283 87 nop
DavidEGrayson 0:06475317f283 88 nop
DavidEGrayson 0:06475317f283 89 nop
DavidEGrayson 4:d3b60bd43811 90
DavidEGrayson 0:06475317f283 91 nop
DavidEGrayson 0:06475317f283 92 nop
DavidEGrayson 0:06475317f283 93 nop
DavidEGrayson 0:06475317f283 94 nop
DavidEGrayson 4:d3b60bd43811 95 nop
DavidEGrayson 4:d3b60bd43811 96 nop
DavidEGrayson 0:06475317f283 97 nop
DavidEGrayson 0:06475317f283 98 nop
DavidEGrayson 0:06475317f283 99 nop
DavidEGrayson 0:06475317f283 100 nop
DavidEGrayson 0:06475317f283 101 nop
DavidEGrayson 0:06475317f283 102 nop
DavidEGrayson 0:06475317f283 103 nop
DavidEGrayson 0:06475317f283 104 nop
DavidEGrayson 0:06475317f283 105 nop
DavidEGrayson 0:06475317f283 106 nop
DavidEGrayson 0:06475317f283 107
DavidEGrayson 0:06475317f283 108 nop
DavidEGrayson 0:06475317f283 109 nop
DavidEGrayson 0:06475317f283 110 nop
DavidEGrayson 0:06475317f283 111 nop
DavidEGrayson 0:06475317f283 112 nop
DavidEGrayson 0:06475317f283 113 nop
DavidEGrayson 0:06475317f283 114 nop
DavidEGrayson 0:06475317f283 115 nop
DavidEGrayson 0:06475317f283 116 nop
DavidEGrayson 0:06475317f283 117 nop
DavidEGrayson 4:d3b60bd43811 118 nop
DavidEGrayson 4:d3b60bd43811 119 nop
DavidEGrayson 4:d3b60bd43811 120 nop
DavidEGrayson 4:d3b60bd43811 121 nop
DavidEGrayson 4:d3b60bd43811 122 nop
DavidEGrayson 4:d3b60bd43811 123 nop
DavidEGrayson 0:06475317f283 124
DavidEGrayson 0:06475317f283 125 nop
DavidEGrayson 0:06475317f283 126 nop
DavidEGrayson 0:06475317f283 127 nop
DavidEGrayson 0:06475317f283 128 nop
DavidEGrayson 0:06475317f283 129 nop
DavidEGrayson 0:06475317f283 130 nop
DavidEGrayson 0:06475317f283 131 nop
DavidEGrayson 0:06475317f283 132 nop
DavidEGrayson 0:06475317f283 133 nop
DavidEGrayson 0:06475317f283 134 nop
DavidEGrayson 4:d3b60bd43811 135 nop
DavidEGrayson 4:d3b60bd43811 136 nop
DavidEGrayson 4:d3b60bd43811 137 nop
DavidEGrayson 4:d3b60bd43811 138 nop
DavidEGrayson 4:d3b60bd43811 139 nop
DavidEGrayson 4:d3b60bd43811 140 nop
DavidEGrayson 0:06475317f283 141
DavidEGrayson 0:06475317f283 142 nop
DavidEGrayson 0:06475317f283 143 nop
DavidEGrayson 0:06475317f283 144 nop
DavidEGrayson 0:06475317f283 145 nop
DavidEGrayson 0:06475317f283 146 nop
DavidEGrayson 0:06475317f283 147 nop
DavidEGrayson 0:06475317f283 148 nop
DavidEGrayson 0:06475317f283 149 nop
DavidEGrayson 0:06475317f283 150 nop
DavidEGrayson 0:06475317f283 151 nop
DavidEGrayson 0:06475317f283 152 nop
DavidEGrayson 0:06475317f283 153 nop
DavidEGrayson 0:06475317f283 154 nop
DavidEGrayson 0:06475317f283 155 nop
DavidEGrayson 0:06475317f283 156 nop
DavidEGrayson 0:06475317f283 157 nop
DavidEGrayson 0:06475317f283 158
DavidEGrayson 0:06475317f283 159 nop
DavidEGrayson 0:06475317f283 160 nop
DavidEGrayson 0:06475317f283 161 nop
DavidEGrayson 0:06475317f283 162 nop
DavidEGrayson 0:06475317f283 163 nop
DavidEGrayson 0:06475317f283 164 nop
DavidEGrayson 0:06475317f283 165 nop
DavidEGrayson 0:06475317f283 166 nop
DavidEGrayson 0:06475317f283 167 nop
DavidEGrayson 0:06475317f283 168 nop
DavidEGrayson 4:d3b60bd43811 169 nop
DavidEGrayson 4:d3b60bd43811 170 nop
DavidEGrayson 4:d3b60bd43811 171 nop
DavidEGrayson 4:d3b60bd43811 172 nop
DavidEGrayson 4:d3b60bd43811 173 nop
DavidEGrayson 4:d3b60bd43811 174 nop
DavidEGrayson 4:d3b60bd43811 175
DavidEGrayson 0:06475317f283 176 nop
DavidEGrayson 0:06475317f283 177 nop
DavidEGrayson 0:06475317f283 178 nop
DavidEGrayson 0:06475317f283 179 nop
DavidEGrayson 0:06475317f283 180 nop
DavidEGrayson 0:06475317f283 181 nop
DavidEGrayson 4:d3b60bd43811 182 nop
DavidEGrayson 4:d3b60bd43811 183 nop
DavidEGrayson 4:d3b60bd43811 184 nop
DavidEGrayson 4:d3b60bd43811 185 nop
DavidEGrayson 4:d3b60bd43811 186 nop
DavidEGrayson 4:d3b60bd43811 187 nop
DavidEGrayson 4:d3b60bd43811 188 nop
DavidEGrayson 4:d3b60bd43811 189 nop
DavidEGrayson 4:d3b60bd43811 190 nop
DavidEGrayson 4:d3b60bd43811 191 nop
DavidEGrayson 5:690fdfb595de 192 delay_region_end
DavidEGrayson 4:d3b60bd43811 193 bx lr ; return
DavidEGrayson 0:06475317f283 194
DavidEGrayson 0:06475317f283 195 END