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