Content originally posted in LPCWare by emimad on Mon Oct 12 15:59:43 MST 2015
Dear all,
I'm having problems when try to change pulse length (not duty length).
In my aplication I need to change PWM signal period (duty will always be 50%) many times on execution so I'm doing next:
void UpdatePulseLength(void){
Chip_TIMER_Disable(LPC_TIMER32_1);
Chip_TIMER_PWMWrite(LPC_TIMER32_1, (1<<3));//enable PWM MAT3
Chip_TIMER_ResetOnMatchEnable(LPC_TIMER32_1, 0);// MR0
Chip_TIMER_PrescaleSet(LPC_TIMER32_1, 72-1);
PWM_SPEED_us = 600000 / SpeedValue; // SpeedValue changes many times
Chip_TIMER_SetMatch(LPC_TIMER32_1, 0, PWM_SPEED_us);//length in µs PERIOD
Chip_TIMER_SetMatch(LPC_TIMER32_1, 3, PWM_SPEED_us / 2);//low in µsMR3 = DUTY 50%
Chip_TIMER_Enable(LPC_TIMER32_1);
}
It's works fine for a time... but after some times, PWM stops working :~ .