Hello,
I use the TM4C129EXL evaluation kit.
I want to use 4 PWM, 2 couples of PWM with dead band mode. To do so, I use the following code wich configure the pins PF2 and PF3 (module 0 generator 1), and PK4 and PK5 (module 0 generator 3).
I use the code given in the exemple "dead_band.c". I adapted it and it works fine for the couple PF2 and PF3. But with PK4 and PK5, nothing happen. I thought it was a muxing problem sinc PK4 and PK5 are used for the ethernet LED.
Thank you for your help.
Here is the code:
int main(void) { PinoutSet(false,false);
SysCtlPWMClockSet(SYSCTL_PWMDIV_1); SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOK); HWREG(GPIO_PORTK_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY; HWREG(GPIO_PORTK_BASE + GPIO_O_CR) = 0x01; HWREG(GPIO_PORTK_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY; HWREG(GPIO_PORTK_BASE + GPIO_O_CR) = 0x02; HWREG(GPIO_PORTK_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY; HWREG(GPIO_PORTK_BASE + GPIO_O_CR) = 0x04; HWREG(GPIO_PORTK_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY; HWREG(GPIO_PORTK_BASE + GPIO_O_CR) = 0x08; HWREG(GPIO_PORTK_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY; GPIOPinConfigure(GPIO_PK4_M0PWM6); GPIOPinConfigure(GPIO_PK5_M0PWM7); GPIOPinTypePWM(GPIO_PORTK_BASE, GPIO_PIN_4); GPIOPinTypePWM(GPIO_PORTK_BASE, GPIO_PIN_5); PWMGenConfigure(PWM0_BASE, PWM_GEN_3, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC); PWMGenPeriodSet(PWM0_BASE, PWM_GEN_3, 64000); PWMPulseWidthSet(PWM0_BASE, PWM_OUT_4, PWMGenPeriodGet(PWM0_BASE, PWM_GEN_3) / 4); PWMDeadBandEnable(PWM0_BASE, PWM_GEN_3, 160, 160); PWMOutputState(PWM0_BASE, PWM_OUT_5_BIT | PWM_OUT_4_BIT, true); HWREG(GPIO_PORTK_BASE + GPIO_O_CR) = 0x00; HWREG(GPIO_PORTK_BASE + GPIO_O_LOCK) = 0; ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); GPIOPinConfigure(GPIO_PF2_M0PWM2); GPIOPinConfigure(GPIO_PF3_M0PWM3); GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_2); GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_3); PWMGenConfigure(PWM0_BASE, PWM_GEN_1, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC); PWMGenPeriodSet(PWM0_BASE, PWM_GEN_1, 1200); PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2, PWMGenPeriodGet(PWM0_BASE, PWM_GEN_1) / 4); PWMDeadBandEnable(PWM0_BASE, PWM_GEN_1, 160, 160); PWMOutputState(PWM0_BASE, PWM_OUT_3_BIT | PWM_OUT_2_BIT, true); PWMGenEnable(PWM0_BASE, PWM_GEN_1); PWMGenEnable(PWM0_BASE, PWM_GEN_3); while(1) { } }