Hello
I'm trying to set up three PWM generators together synchronization of, but did not see any signal on the oscilloscope. What am I doing wrong?
I have Tiva c series TM4C123G LaunchPad Evaluation kit.
Here is my code:
//Enable GPIO and PWM0
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
//PWM0 PB6,7 GEN0
GPIOPinConfigure(GPIO_PB7_M0PWM1);
GPIOPinConfigure(GPIO_PB6_M0PWM0);
//PWM0 PB4,5 GEN1
GPIOPinConfigure(GPIO_PB4_M0PWM2);
GPIOPinConfigure(GPIO_PB5_M0PWM3);
//PWM0 PE4,5 GEN2
GPIOPinConfigure(GPIO_PE4_M0PWM4);
GPIOPinConfigure(GPIO_PE5_M0PWM5);
//GPIO as PWM
GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_7);
GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_6);
GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_4);
GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_5);
GPIOPinTypePWM(GPIO_PORTE_BASE, GPIO_PIN_4);
GPIOPinTypePWM(GPIO_PORTE_BASE, GPIO_PIN_5);
//PWM0_GEN0
PWMGenConfigure(PWM0_BASE, PWM_GEN_0, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_SYNC);
PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, max);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, max*0.25);
PWMOutputState(PWM0_BASE, PWM_OUT_0_BIT |PWM_OUT_1_BIT , true);
PWMGenEnable(PWM0_BASE, PWM_GEN_0);
//PWM0_GEN1
PWMGenConfigure(PWM0_BASE, PWM_GEN_1,( PWM_GEN_MODE_DOWN | PWM_GEN_MODE_SYNC));
PWMGenPeriodSet(PWM0_BASE, PWM_GEN_1, max);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1, (max*0.5));
PWMOutputState(PWM0_BASE, PWM_OUT_2_BIT |PWM_OUT_3_BIT , true);
PWMGenEnable(PWM0_BASE, PWM_GEN_1);
//PWM0_GEN2
PWMGenConfigure(PWM0_BASE, PWM_GEN_2,( PWM_GEN_MODE_DOWN | PWM_GEN_MODE_SYNC));
PWMGenPeriodSet(PWM0_BASE, PWM_GEN_2, max);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2, (max*0.75));
PWMOutputState(PWM0_BASE, PWM_OUT_4_BIT |PWM_OUT_5_BIT , true);
PWMGenEnable(PWM0_BASE, PWM_GEN_2);
//Sync all three: GEN0,1,2 ?
PWMSyncTimeBase(PWM0_BASE, (PWM_GEN_0_BIT | PWM_GEN_1_BIT | PWM_GEN_2_BIT));
PWMSyncUpdate(PWM0_BASE, (PWM_GEN_0_BIT | PWM_GEN_1_BIT | PWM_GEN_2_BIT));
//Enable interrupt and dead band
PWMIntEnable(PWM0_BASE, PWM_INT_GEN_0 | PWM_INT_GEN_1 | PWM_INT_GEN_2);
IntEnable(INT_PWM0_0 | INT_PWM0_1| INT_PWM0_2);
PWMGenIntTrigEnable(PWM0_BASE,( PWM_GEN_0 | PWM_GEN_1 | PWM_GEN_2), PWM_INT_CNT_ZERO);
PWMDeadBandEnable(PWM0_BASE, (PWM_GEN_0 | PWM_GEN_1 | PWM_GEN_2), 100, 100);
What is difference between these parameters ?
PWM_GEN_MODE_SYNC , PWM_GEN_MODE_GEN_SYNC_LOCAL, PWM_GEN_MODE_GEN_SYNC_GLOBAL
Chose I correct parameter (PWM_GEN_MODE_SYNC) to PWMGenConfigure?
Thanks for your advice.