Forked PololuLedStrip and modified it to work with the KL25Z. Renamed it to Adafruit_NeoPixel.

Dependents:   idd_hw3 idd_fa15_hw3_lauren_bill_tomas idd_fa15_hw3_lauren_bill_tomas Raiden ... more

Fork of PololuLedStrip by David Grayson

Committer:
DavidEGrayson
Date:
Fri Mar 01 00:31:24 2013 +0000
Revision:
6:9d0530b7dae2
Parent:
5:690fdfb595de
Child:
7:9a088f042ee0
Successfully read the delay amount from a table.

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 6:9d0530b7dae2 3 IMPORT led_strip_write_delays
DavidEGrayson 0:06475317f283 4
DavidEGrayson 0:06475317f283 5 led_strip_write_color
DavidEGrayson 5:690fdfb595de 6 ; Register usage:
DavidEGrayson 5:690fdfb595de 7 ; These are the first 4 arguments to the method:
DavidEGrayson 5:690fdfb595de 8 ; R0: pointer to the color to send
DavidEGrayson 5:690fdfb595de 9 ; R1: pointer to the register for setting the pin
DavidEGrayson 5:690fdfb595de 10 ; R2: pointer to the register for clearing the pin
DavidEGrayson 5:690fdfb595de 11 ; R3: pin mask
DavidEGrayson 5:690fdfb595de 12 ; Additionally, we use these registers:
DavidEGrayson 5:690fdfb595de 13 ; R4: temporary register
DavidEGrayson 6:9d0530b7dae2 14 ; R5: temporary register
DavidEGrayson 5:690fdfb595de 15 ; R7: the number of bits we still need to send
DavidEGrayson 5:690fdfb595de 16 ; R12: shift register that holds the 24-bit color
DavidEGrayson 5:690fdfb595de 17 ; R13: Link Register, holds return addresses.
DavidEGrayson 5:690fdfb595de 18
DavidEGrayson 5:690fdfb595de 19
DavidEGrayson 6:9d0530b7dae2 20 push {r4, r5, r12, r7, lr}
DavidEGrayson 0:06475317f283 21
DavidEGrayson 0:06475317f283 22 ldr r12, [r0] ; Read the next color.
DavidEGrayson 0:06475317f283 23 rbit r12, r12 ; Reverse the order of the bits.
DavidEGrayson 0:06475317f283 24 rev r12, r12 ; Reverse the order of the bytes.
DavidEGrayson 0:06475317f283 25 mov r7, #24 ; Initialize the loop counter register.
DavidEGrayson 0:06475317f283 26
DavidEGrayson 0:06475317f283 27 send_led_strip_bit
DavidEGrayson 0:06475317f283 28 str r3, [r1] ; Drive the line high.
DavidEGrayson 0:06475317f283 29 rrxs r12, r12 ; Rotate right through carry.
DavidEGrayson 0:06475317f283 30
DavidEGrayson 6:9d0530b7dae2 31 ldr r5, =led_strip_write_delays
DavidEGrayson 6:9d0530b7dae2 32 ldrb r5, [r5, #0]
DavidEGrayson 6:9d0530b7dae2 33 lsl r5, r5, #1
DavidEGrayson 5:690fdfb595de 34 ldr r4, =delay_region_end
DavidEGrayson 6:9d0530b7dae2 35 sub r4, r4, r5
DavidEGrayson 5:690fdfb595de 36 blx r4
DavidEGrayson 0:06475317f283 37
DavidEGrayson 0:06475317f283 38 it cc ; If the bit to send it 0...
DavidEGrayson 0:06475317f283 39 strcc r3, [r2] ; Drive the line low.
DavidEGrayson 0:06475317f283 40
DavidEGrayson 5:690fdfb595de 41 ldr r4, =delay_region_end
DavidEGrayson 5:690fdfb595de 42 sub r4, r4, #59*2
DavidEGrayson 5:690fdfb595de 43 blx r4
DavidEGrayson 0:06475317f283 44
DavidEGrayson 0:06475317f283 45 it cs ; If the bit to send is 1...
DavidEGrayson 0:06475317f283 46 strcs r3, [r2] ; Drive the line low.
DavidEGrayson 0:06475317f283 47
DavidEGrayson 4:d3b60bd43811 48 ldr r4, =delay_region
DavidEGrayson 5:690fdfb595de 49 add r4, r4, #68
DavidEGrayson 4:d3b60bd43811 50 blx r4
DavidEGrayson 4:d3b60bd43811 51
DavidEGrayson 6:9d0530b7dae2 52 subs r7, r7, #1 ; Decrement the loop counter.
DavidEGrayson 5:690fdfb595de 53 bne send_led_strip_bit ; Send another bit if we have not reached zero.
DavidEGrayson 4:d3b60bd43811 54
DavidEGrayson 4:d3b60bd43811 55 led_strip_asm_end
DavidEGrayson 6:9d0530b7dae2 56 pop {r4, r5, r12, r7, lr}
DavidEGrayson 4:d3b60bd43811 57 bx lr
DavidEGrayson 4:d3b60bd43811 58
DavidEGrayson 4:d3b60bd43811 59
DavidEGrayson 4:d3b60bd43811 60 delay_region
DavidEGrayson 5:690fdfb595de 61 ; The following is 128 nops.
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 0:06475317f283 70 nop
DavidEGrayson 0:06475317f283 71 nop
DavidEGrayson 0:06475317f283 72 nop
DavidEGrayson 0:06475317f283 73 nop
DavidEGrayson 0:06475317f283 74 nop
DavidEGrayson 4:d3b60bd43811 75 nop
DavidEGrayson 4:d3b60bd43811 76 nop
DavidEGrayson 4:d3b60bd43811 77 nop
DavidEGrayson 4:d3b60bd43811 78
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 0:06475317f283 90 nop
DavidEGrayson 0:06475317f283 91 nop
DavidEGrayson 0:06475317f283 92 nop
DavidEGrayson 0:06475317f283 93 nop
DavidEGrayson 0:06475317f283 94 nop
DavidEGrayson 4:d3b60bd43811 95
DavidEGrayson 0:06475317f283 96 nop
DavidEGrayson 0:06475317f283 97 nop
DavidEGrayson 0:06475317f283 98 nop
DavidEGrayson 0:06475317f283 99 nop
DavidEGrayson 4:d3b60bd43811 100 nop
DavidEGrayson 4:d3b60bd43811 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 nop
DavidEGrayson 0:06475317f283 108 nop
DavidEGrayson 0:06475317f283 109 nop
DavidEGrayson 0:06475317f283 110 nop
DavidEGrayson 0:06475317f283 111 nop
DavidEGrayson 0:06475317f283 112
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 0:06475317f283 118 nop
DavidEGrayson 0:06475317f283 119 nop
DavidEGrayson 0:06475317f283 120 nop
DavidEGrayson 0:06475317f283 121 nop
DavidEGrayson 0:06475317f283 122 nop
DavidEGrayson 4:d3b60bd43811 123 nop
DavidEGrayson 4:d3b60bd43811 124 nop
DavidEGrayson 4:d3b60bd43811 125 nop
DavidEGrayson 4:d3b60bd43811 126 nop
DavidEGrayson 4:d3b60bd43811 127 nop
DavidEGrayson 4:d3b60bd43811 128 nop
DavidEGrayson 0:06475317f283 129
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 0:06475317f283 135 nop
DavidEGrayson 0:06475317f283 136 nop
DavidEGrayson 0:06475317f283 137 nop
DavidEGrayson 0:06475317f283 138 nop
DavidEGrayson 0:06475317f283 139 nop
DavidEGrayson 4:d3b60bd43811 140 nop
DavidEGrayson 4:d3b60bd43811 141 nop
DavidEGrayson 4:d3b60bd43811 142 nop
DavidEGrayson 4:d3b60bd43811 143 nop
DavidEGrayson 4:d3b60bd43811 144 nop
DavidEGrayson 4:d3b60bd43811 145 nop
DavidEGrayson 0:06475317f283 146
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 nop
DavidEGrayson 0:06475317f283 159 nop
DavidEGrayson 0:06475317f283 160 nop
DavidEGrayson 0:06475317f283 161 nop
DavidEGrayson 0:06475317f283 162 nop
DavidEGrayson 0:06475317f283 163
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 0:06475317f283 169 nop
DavidEGrayson 0:06475317f283 170 nop
DavidEGrayson 0:06475317f283 171 nop
DavidEGrayson 0:06475317f283 172 nop
DavidEGrayson 0:06475317f283 173 nop
DavidEGrayson 4:d3b60bd43811 174 nop
DavidEGrayson 4:d3b60bd43811 175 nop
DavidEGrayson 4:d3b60bd43811 176 nop
DavidEGrayson 4:d3b60bd43811 177 nop
DavidEGrayson 4:d3b60bd43811 178 nop
DavidEGrayson 4:d3b60bd43811 179 nop
DavidEGrayson 4:d3b60bd43811 180
DavidEGrayson 0:06475317f283 181 nop
DavidEGrayson 0:06475317f283 182 nop
DavidEGrayson 0:06475317f283 183 nop
DavidEGrayson 0:06475317f283 184 nop
DavidEGrayson 0:06475317f283 185 nop
DavidEGrayson 0:06475317f283 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 4:d3b60bd43811 192 nop
DavidEGrayson 4:d3b60bd43811 193 nop
DavidEGrayson 4:d3b60bd43811 194 nop
DavidEGrayson 4:d3b60bd43811 195 nop
DavidEGrayson 4:d3b60bd43811 196 nop
DavidEGrayson 5:690fdfb595de 197 delay_region_end
DavidEGrayson 4:d3b60bd43811 198 bx lr ; return
DavidEGrayson 0:06475317f283 199
DavidEGrayson 0:06475317f283 200 END