pwmout - TMPM46B - add read methods for period and pulsewidth

pull/13492/head
talorion 2020-08-25 23:47:25 +02:00 committed by Gregor Mayramhof
parent 067431e088
commit 7388ff8b43
1 changed files with 12 additions and 2 deletions

View File

@ -80,7 +80,7 @@ void pwmout_free(pwmout_t *obj)
{ {
// Stops and clear count operation // Stops and clear count operation
TMRB_SetRunState(obj->channel, TMRB_STOP); TMRB_SetRunState(obj->channel, TMRB_STOP);
pwmout_write(obj,0); pwmout_write(obj, 0);
obj->channel = NULL; obj->channel = NULL;
obj->trailing_timing = 0; obj->trailing_timing = 0;
obj->leading_timing = 0; obj->leading_timing = 0;
@ -169,7 +169,7 @@ void pwmout_period_us(pwmout_t *obj, int us)
// Restore the duty-cycle // Restore the duty-cycle
duty_cycle = (float)((obj->trailing_timing - obj->leading_timing) / obj->trailing_timing); duty_cycle = (float)((obj->trailing_timing - obj->leading_timing) / obj->trailing_timing);
obj->trailing_timing = cycles; obj->trailing_timing = cycles;
obj->leading_timing = ((cycles)- (uint16_t)(cycles * duty_cycle)); obj->leading_timing = ((cycles) - (uint16_t)(cycles * duty_cycle));
// Change the source clock division and period // Change the source clock division and period
m_tmrb.Mode = TMRB_INTERVAL_TIMER; m_tmrb.Mode = TMRB_INTERVAL_TIMER;
@ -192,6 +192,11 @@ void pwmout_period_us(pwmout_t *obj, int us)
TMRB_SetRunState(obj->channel, TMRB_RUN); TMRB_SetRunState(obj->channel, TMRB_RUN);
} }
int pwmout_read_period_us(pwmout_t *obj)
{
return obj->trailing_timing;
}
void pwmout_pulsewidth(pwmout_t *obj, float seconds) void pwmout_pulsewidth(pwmout_t *obj, float seconds)
{ {
pwmout_pulsewidth_us(obj, (seconds * 1000000.0f)); pwmout_pulsewidth_us(obj, (seconds * 1000000.0f));
@ -212,6 +217,11 @@ void pwmout_pulsewidth_us(pwmout_t *obj, int us)
pwmout_write(obj, value); pwmout_write(obj, value);
} }
int pwmout_read_pulsewidth_us(pwmout_t *obj)
{
return obj->trailing_timing - obj->leading_timing;
}
const PinMap *pwmout_pinmap() const PinMap *pwmout_pinmap()
{ {
return PinMap_PWM; return PinMap_PWM;