|
|
|
@ -164,10 +164,10 @@ pwm_timer_init(unsigned timer)
@@ -164,10 +164,10 @@ pwm_timer_init(unsigned timer)
|
|
|
|
|
rDCR(timer) = 0; |
|
|
|
|
|
|
|
|
|
/* configure the timer to free-run at 1MHz */ |
|
|
|
|
rPSC(timer) = pwm_timers[timer].clock_freq / 1000000; |
|
|
|
|
rPSC(timer) = (pwm_timers[timer].clock_freq / 1000000) - 1; |
|
|
|
|
|
|
|
|
|
/* and update at the desired rate */ |
|
|
|
|
rARR(timer) = 1000000 / pwm_update_rate; |
|
|
|
|
rARR(timer) = (1000000 / pwm_update_rate) - 1; |
|
|
|
|
|
|
|
|
|
/* generate an update event; reloads the counter and all registers */ |
|
|
|
|
rEGR(timer) = GTIM_EGR_UG; |
|
|
|
@ -234,6 +234,8 @@ up_pwm_servo_set(unsigned channel, servo_position_t value)
@@ -234,6 +234,8 @@ up_pwm_servo_set(unsigned channel, servo_position_t value)
|
|
|
|
|
return -1; |
|
|
|
|
|
|
|
|
|
/* configure the channel */ |
|
|
|
|
if (value > 0) |
|
|
|
|
value--; |
|
|
|
|
switch (pwm_channels[channel].timer_channel) { |
|
|
|
|
case 1: |
|
|
|
|
rCCR1(timer) = value; |
|
|
|
|