mirror of https://github.com/ARMmbed/mbed-os.git
[K64F] Ensure immediate update of CnV register in FTM
Also changed pin assignment for the PWM test.pull/299/head
parent
286a4e42f6
commit
2e32c71b50
|
@ -116,15 +116,19 @@ void pwmout_free(pwmout_t* obj) {
|
|||
}
|
||||
|
||||
void pwmout_write(pwmout_t* obj, float value) {
|
||||
uint32_t instance = obj->pwm_name >> TPM_SHIFT;
|
||||
if (value < 0.0f) {
|
||||
value = 0.0f;
|
||||
} else if (value > 1.0f) {
|
||||
value = 1.0f;
|
||||
}
|
||||
uint16_t mod = ftm_hal_get_mod(obj->pwm_name >> TPM_SHIFT);
|
||||
uint16_t mod = ftm_hal_get_mod(instance);
|
||||
uint32_t new_count = (uint32_t)((float)(mod) * value);
|
||||
ftm_hal_set_channel_count_value(obj->pwm_name >> TPM_SHIFT, obj->pwm_name & 0xF, new_count);
|
||||
ftm_hal_set_counter(obj->pwm_name >> TPM_SHIFT, 0);
|
||||
// Stop FTM clock to ensure instant update of MOD register
|
||||
ftm_hal_set_clock_source(instance, kClock_source_FTM_None);
|
||||
ftm_hal_set_channel_count_value(instance, obj->pwm_name & 0xF, new_count);
|
||||
ftm_hal_set_counter(instance, 0);
|
||||
ftm_hal_set_clock_source(instance, kClock_source_FTM_SystemClk);
|
||||
}
|
||||
|
||||
float pwmout_read(pwmout_t* obj) {
|
||||
|
|
|
@ -18,7 +18,7 @@ float value = 0.75;
|
|||
|
||||
int main() {
|
||||
#if defined(TARGET_FF_ARDUINO)
|
||||
PwmOut pwm(D5);
|
||||
PwmOut pwm(D9);
|
||||
|
||||
pwm.period_ms(10);
|
||||
pwm.write(value);
|
||||
|
|
Loading…
Reference in New Issue