Rev 1497 | Rev 1591 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 1497 | Rev 1566 | ||
|---|---|---|---|
| Line 145... | Line 145... | ||
| 145 | } |
145 | } |
| 146 | if (pwmValue[1]>0) |
146 | if (pwmValue[1]>0) |
| 147 | { |
147 | { |
| 148 | TCCR1A|=(act_hwPWM_CH2_COM<<COM1A0); |
148 | TCCR1A|=(act_hwPWM_CH2_COM<<COM1A0); |
| 149 | } |
149 | } |
| - | 150 | ICR1 = 0xffff; |
|
| 150 | #endif |
151 | #endif |
| 151 | 152 | ||
| 152 | /* enable timer 1 */ |
153 | /* enable timer 1 */ |
| 153 | #if act_hwPWM_CH1_COM>0 |
154 | #if act_hwPWM_CH1_COM>0 |
| 154 | TCCR1B|=(act_hwPWM_CH1_CS<<CS10); |
155 | TCCR1B|=(act_hwPWM_CH1_CS<<CS10); |
| Line 206... | Line 207... | ||
| 206 | void act_hwPWM_Process(void) |
207 | void act_hwPWM_Process(void) |
| 207 | { |
208 | { |
| 208 | if (Timer_Expired(act_hwPWM_SEND_STATUS_TIMEOUT)) |
209 | if (Timer_Expired(act_hwPWM_SEND_STATUS_TIMEOUT)) |
| 209 | { |
210 | { |
| 210 | if (channel_to_send >4) { |
211 | if (channel_to_send >4) { |
| - | 212 | #if act_hwPWM_CH1_COM==0 |
|
| 211 |
|
213 | channel_to_send = 2; |
| 212 |
|
214 | #if act_hwPWM_CH2_COM==0 |
| 213 |
|
215 | channel_to_send = 3; |
| 214 |
|
216 | #if act_hwPWM_CH3_COM==0 |
| 215 |
|
217 | channel_to_send = 4; |
| 216 |
|
218 | #else |
| 217 | #if act_hwPWM_CH2_COM>0 |
- | |
| 218 |
|
219 | channel_to_send=3; |
| 219 | #endif |
220 | #endif |
| 220 |
|
221 | #else |
| 221 |
|
222 | channel_to_send=2; |
| 222 | #endif |
223 | #endif |
| - | 224 | ||
| 223 |
|
225 | #else |
| 224 |
|
226 | channel_to_send=1; |
| 225 | #endif |
227 | #endif |
| 226 | ) { |
- | |
| 227 | channel_to_send++; |
- | |
| 228 | if (channel_to_send >4) { |
- | |
| 229 | channel_to_send=1; |
- | |
| 230 |
|
228 | |
| 231 | } |
229 | } |
| 232 | */ |
- | |
| 233 | sendInfo[channel_to_send-1] = 1; |
230 | sendInfo[channel_to_send-1] = 1; |
| 234 | channel_to_send++; |
231 | channel_to_send++; |
| 235 | #if act_hwPWM_CH1_COM==0 |
232 | #if act_hwPWM_CH1_COM==0 |
| 236 | if (channel_to_send == 1) |
233 | if (channel_to_send == 1) |
| 237 | channel_to_send++; |
234 | channel_to_send++; |
| Line 309... | Line 306... | ||
| 309 | sei(); |
306 | sei(); |
| 310 | Timer_SetTimeout(act_hwPWM_STORE_VALUE_TIMEOUT, act_hwPWM_STORE_VALUE_TIMEOUT_TIME*1000, TimerTypeOneShot, 0); |
307 | Timer_SetTimeout(act_hwPWM_STORE_VALUE_TIMEOUT, act_hwPWM_STORE_VALUE_TIMEOUT_TIME*1000, TimerTypeOneShot, 0); |
| 311 | } |
308 | } |
| 312 | #endif |
309 | #endif |
| 313 | #if act_hwPWM_CH2_COM>0 |
310 | #if act_hwPWM_CH2_COM>0 |
| 314 | if (OCR_2 != (uint16_t)(pwmValue[1]*act_hwPWM_CH2_FACT)>>8) { |
311 | if (OCR_2 != (uint16_t)((uint32_t)pwmValue[1]*act_hwPWM_CH2_FACT)>>8) { |
| 315 | cli(); |
312 | cli(); |
| 316 | OCR_2=(uint16_t)(pwmValue[1]*act_hwPWM_CH2_FACT)>>8; |
313 | OCR_2=(uint16_t)((uint32_t)pwmValue[1]*act_hwPWM_CH2_FACT)>>8; |
| 317 | if (OCR_2==0) |
314 | if (OCR_2==0) |
| 318 | { |
315 | { |
| 319 | TCCR1A&=~((1<<COM1A0)|(1<<COM1A1)); |
316 | TCCR1A&=~((1<<COM1A0)|(1<<COM1A1)); |
| 320 | } |
317 | } |
| 321 | else |
318 | else |
| Line 496... | Line 493... | ||
| 496 | if (fadeTarget[channel] < pwmValue[channel]) { |
493 | if (fadeTarget[channel] < pwmValue[channel]) { |
| 497 | fadeSpeed[channel] = -fadeSpeed[channel]; |
494 | fadeSpeed[channel] = -fadeSpeed[channel]; |
| 498 | } |
495 | } |
| 499 | } |
496 | } |
| 500 | } |
497 | } |
| 501 |
|
498 | //printf("abs fade %d %d %d!\n",fadeTarget[channel], endValue ,pwmValue[channel] ); |
| 502 | } |
499 | } |
| 503 | break; |
500 | break; |
| 504 | 501 | ||
| 505 | case CAN_MODULE_CMD_HWPWM_REL_FADE: /* RelFade(channel, speed, direction, steps) */ |
502 | case CAN_MODULE_CMD_HWPWM_REL_FADE: /* RelFade(channel, speed, direction, steps) */ |
| 506 | if (rxMsg->Length == 5) { |
503 | if (rxMsg->Length == 5) { |