mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #11007 from SiliconLabs/fix/fpga_tests/pwm
Fix PWM output on Silicon Labs targets for large pulsewidthspull/11053/head
commit
01484a2226
|
@ -342,13 +342,13 @@ void pwmout_pulsewidth(pwmout_t *obj, float seconds)
|
||||||
|
|
||||||
void pwmout_pulsewidth_ms(pwmout_t *obj, int ms)
|
void pwmout_pulsewidth_ms(pwmout_t *obj, int ms)
|
||||||
{
|
{
|
||||||
uint16_t width_cycles = (uint16_t) ((REFERENCE_FREQUENCY >> pwm_prescaler_div) * ms) / 1000;
|
uint16_t width_cycles = (uint16_t) (((REFERENCE_FREQUENCY >> pwm_prescaler_div) * ms) / 1000);
|
||||||
TIMER_CompareBufSet(PWM_TIMER, obj->channel, width_cycles);
|
TIMER_CompareBufSet(PWM_TIMER, obj->channel, width_cycles);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pwmout_pulsewidth_us(pwmout_t *obj, int us)
|
void pwmout_pulsewidth_us(pwmout_t *obj, int us)
|
||||||
{
|
{
|
||||||
uint16_t width_cycles = (uint16_t) ((REFERENCE_FREQUENCY >> pwm_prescaler_div) * us) / 1000000;
|
uint16_t width_cycles = (uint16_t) (((uint64_t)(REFERENCE_FREQUENCY >> pwm_prescaler_div) * (uint64_t)us) / 1000000UL);
|
||||||
TIMER_CompareBufSet(PWM_TIMER, obj->channel, width_cycles);
|
TIMER_CompareBufSet(PWM_TIMER, obj->channel, width_cycles);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue