It seems that each time the TPM_DRV_PwmStart() is run that the TPM0.SC.CMOD gets set to zero. As a result the PWM output never changes at pin PTA6. Attached is a screen shot. If I set a breakpoint just after the TPM_DRV_PwmStart() and then change CMOD back to 0x1, then it works fine. It is not clear to me why CMOD reverts to zero after TPM_DRV_PwmStart()? Any suggestions? I just want to be able to adjust the PWM output at any time. I am not real familiar with the TPM, so some of this might be just misunderstanding how it works.
I have setup the TPM0 as a PWM output.
tpm_general_config_t main_tpm_config;
tpm_pwm_param_t main_tpm_timer_channel_config = {
.mode = kTpmEdgeAlignedPWM,
.edgeMode = kTpmHighTrue,
.uFrequencyHZ = 100000U,
.uDutyCyclePercent = 50U,
};
Initialization portion:
CLOCK_SYS_SetTpmSrc( TPM0_IDX, kClockTpmSrcIrc48M );
TPM_DRV_Init( TPM0_IDX, &main_tpm_config );
TPM_DRV_SetClock( TPM0_IDX, kTpmClockSourceModuleClk, kTpmDividedBy2 );
main_tpm_timer_channel_config.uDutyCyclePercent = 50;
TPM_DRV_PwmStart( TPM0_IDX, &main_tpm_timer_channel_config, 0U );
Software: KDS 3.0.0, KSDK 1.3.0.