I'm developing an application wherein we need finer granularity on the PWM output than a strict duty cycle (0-100) will give us. I've run into a snag wherein directly setting the FTM2_C1V register seems to do nothing. Calling `FTM_UpdatePwmDutycycle` followed by `FTM_SetSoftwareTrigger` works fine. When I inspect these functions it appears that all `FTM_UpdatePwmDutycycle` basically does is set the value of FTMx_CnV, and `FTM_SetSoftwareTrigger` sets SYNC. If I directly set FTM2_C1V in my code and then make the same call `FTM_SetSoftwareTrigger` nothing happens. Why? What do I need to do to get this working?
Works:
FTM_UpdatePwmDutycycle(FTM2, (ftm_chnl_t)1, kFTM_EdgeAlignedPwm, dutyCycle);
FTM_SetSoftwareTrigger(FTM2, true);
Does not work:
FTM2->CONTROLS[1].CnV = (uint32_t)cnt;
FTM_SetSoftwareTrigger(FTM2, true);
My FTM initialization follows the example in ftm_pwm_twochannel.c
已解决! 转到解答。
Hi Jim Fell,
I can get it work on FRDM-K64F board, PWM waveform will change on PTB18 and PTB19 pins.
You can download the attached files and test it on FRDM-K64F board.
Best Regards,
Robin
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi Jim Fell,
I can get it work on FRDM-K64F board, PWM waveform will change on PTB18 and PTB19 pins.
You can download the attached files and test it on FRDM-K64F board.
Best Regards,
Robin
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------