Rev 6 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6 | Rev 8 | ||
---|---|---|---|
Line 5... | Line 5... | ||
5 | * Author: Mike |
5 | * Author: Mike |
6 | */ |
6 | */ |
7 | 7 | ||
8 | #include "main.h" |
8 | #include "main.h" |
9 | #include "leds.h" |
9 | #include "leds.h" |
- | 10 | #include "dmx.h" |
|
10 | 11 | ||
11 | // Target clock rate 800 kHz |
12 | // Target clock rate 800 kHz |
12 | #define SPICLOCK 9000000UL |
13 | #define SPICLOCK 9000000UL |
13 | // one clock of SPI is 166nS |
14 | // one clock of SPI is 166nS |
14 | #define TSPI (1000000000UL/SPICLOCK) |
15 | #define TSPI (1000000000UL/SPICLOCK) |
Line 78... | Line 79... | ||
78 | bufPtr = BUFFER_SIZE-1; // limit |
79 | bufPtr = BUFFER_SIZE-1; // limit |
79 | } |
80 | } |
80 | } |
81 | } |
81 | 82 | ||
82 | 83 | ||
- | 84 | ||
83 | void codeReset (void) |
85 | void codeReset (void) |
84 | { |
86 | { |
85 | codeBit(0,TRESET); |
87 | codeBit(0,TRESET); |
86 | } |
88 | } |
87 | 89 | ||
Line 105... | Line 107... | ||
105 | for (i=0; i<8; i++) |
107 | for (i=0; i<8; i++) |
106 | { |
108 | { |
107 | codeRL(val & 0x80); |
109 | codeRL(val & 0x80); |
108 | val<<=1; |
110 | val<<=1; |
109 | } |
111 | } |
110 | - | ||
111 | } |
112 | } |
112 | 113 | ||
113 | 114 | ||
114 | - | ||
115 | - | ||
116 | - | ||
117 | void codeFRGBW(frgbw_t led ) |
115 | void codeFRGBW(frgbw_t led ) |
118 | { |
116 | { |
119 | 117 | ||
120 | codeRLByte(((uint16_t)(led.green) * led.fader)/256); |
118 | codeRLByte(((uint16_t)(led.green) * led.fader)/256); |
121 | codeRLByte(((uint16_t)(led.red) * led.fader)/256); |
119 | codeRLByte(((uint16_t)(led.red) * led.fader)/256); |
122 | codeRLByte(((uint16_t)(led.blue) * led.fader)/256); |
120 | codeRLByte(((uint16_t)(led.blue) * led.fader)/256); |
123 | codeRLByte(((uint16_t)(led.white) * led.fader)/256); |
121 | codeRLByte(((uint16_t)(led.white) * led.fader)/256); // if only RGB LEDS skip this step. |
124 | } |
- | |
125 | - | ||
126 | - | ||
127 | frgbw_t led0 = { 128, 0, 0, 0, 0 }; |
- | |
128 | frgbw_t led1 = { 128, 0, 0, 0, 2 }; |
- | |
129 | frgbw_t ledZ = { 0,0,0,0 }; |
- | |
130 | - | ||
131 | - | ||
132 | void sendLeds() |
- | |
133 | { |
- | |
134 | - | ||
135 | initCode(); |
- | |
136 | codeReset(); |
- | |
137 | - | ||
138 | led0.green++; |
- | |
139 | /// led0.fader++; |
- | |
140 | - | ||
141 | led1.red++; |
- | |
142 | // led1.fader--; |
- | |
143 | - | ||
144 | codeFRGBW(led0); |
- | |
145 | codeFRGBW(led1); |
- | |
146 | - | ||
147 | // send terminal |
- | |
148 | - | ||
149 | codeStop(); |
- | |
150 | busy= 1; |
- | |
151 | HAL_SPI_Transmit_DMA(&hspi1,buffer,bufPtr); |
- | |
152 | // |
- | |
153 | while(busy) {}; |
- | |
154 | } |
122 | } |
155 | 123 | ||
156 | 124 | ||
- | 125 | // hook the weak symbol |
|
157 | void HAL_SPI_TxCpltCallback( SPI_HandleTypeDef * hspi) |
126 | void HAL_SPI_TxCpltCallback( SPI_HandleTypeDef * hspi) |
158 | { |
127 | { |
159 | (void ) hspi; |
128 | (void ) hspi; |
160 | busy = 0; |
129 | busy = 0; |
161 | } |
130 | } |
162 | 131 | ||
163 | 132 | ||
- | 133 | void sendCode(void) |
|
- | 134 | { |
|
- | 135 | busy= 1; |
|
- | 136 | HAL_SPI_Transmit_DMA(&hspi1,buffer,bufPtr); |
|
- | 137 | // |
|
- | 138 | while(busy) {}; |
|
- | 139 | }; |
|
- | 140 | ||
164 | 141 |