pwmout - K22F - add read methods for period and pulsewidth

pull/13492/head
talorion 2020-08-25 23:40:50 +02:00 committed by Gregor Mayramhof
parent 8aab37c721
commit 009191ea6b
1 changed files with 30 additions and 11 deletions

View File

@ -102,8 +102,9 @@ float pwmout_read(pwmout_t* obj)
uint16_t count = (base->CONTROLS[obj->pwm_name & 0xF].CnV) & FTM_CnV_VAL_MASK;
uint16_t mod = base->MOD & FTM_MOD_MOD_MASK;
if (mod == 0)
if (mod == 0) {
return 0.0;
}
float v = (float)(count) / (float)(mod);
return (v > 1.0f) ? (1.0f) : (v);
}
@ -129,6 +130,15 @@ void pwmout_period_us(pwmout_t* obj, int us)
pwmout_write(obj, dc);
}
int pwmout_read_period_us(pwmout_t *obj)
{
uint32_t tmp = 0;
if (pwm_clock_mhz > 0) {
tmp = ((base->MOD) + 1) / pwm_clock_mhz;
}
return tmp;
}
void pwmout_pulsewidth(pwmout_t *obj, float seconds)
{
pwmout_pulsewidth_us(obj, seconds * 1000000.0f);
@ -150,6 +160,15 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
FTM_SetSoftwareTrigger(base, true);
}
int pwmout_read_pulsewidth_us(pwmout_t *obj)
{
uint32_t tmp = 0;
if (pwm_clock_mhz > 0) {
tmp = (base->CONTROLS[obj->pwm_name & 0xF].CnV) / pwm_clock_mhz;
}
return tmp;
}
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;