Part Number: TMDSCNCD28379D
Tool/software:
EPWM toggle issue
I am writing a program to generate epwm signals from 5 EPWM modules.
EPWM 1, EPWM2, EPWM3 are having interrupts. the EPWM pins on the daughter card is working as expected for the first 3 EPWM blocks.
I am having issues with epwm block 4 and 5, where I cannot see pwm pulses on the EPWM 4A and EPWM 5A pins on the daughter card. (EPWM 4 and EPWM 5 do not have interrupts)
I think I am missing some setting here. Please help me identify which setting I am missing.
I am using the following settings relevant to the EPWM 4 and 5:
DevCfgRegs.SOFTPRES2.bit.EPWM4 = 1; // ePWM1 is reset
DevCfgRegs.SOFTPRES2.bit.EPWM4 = 0; // ePWM1 is released from reset
DevCfgRegs.CPUSEL0.bit.EPWM4=0; // Enable CPU1 to EPWM1
EPwm4Regs.TBCTL.bit.CTRMODE = 0x3; // Disable the timer
EPwm4Regs.TBCTL.all = 0xC533;
EPwm4Regs.TBCTL.bit.SYNCOSEL = 1;
EPwm4Regs.TBCTL.bit.PRDLD = 0;
EPwm4Regs.TBCTL.bit.FREE_SOFT = 2;
EPwm4Regs.TBCTL.bit.HSPCLKDIV = 0x0;
EPwm4Regs.TBCTL.bit.CLKDIV = 0x0;
EPwm4Regs.TBCTR = 0x0000; // Clear timer counter
EPwm4Regs.TBPRD = 1999; // EPWM CLK at 50 kHz
EPwm4Regs.TBCTL.bit.PHSDIR = 0; // EPWM
EPwm4Regs.TBCTL.bit.PHSEN = 1;
EPwm4Regs.TBPHS.bit.TBPHS = 1200;
// EPwm4Regs.TBPHS.bit.TBPHS = 0x0000; // Set timer phase
EPwm4Regs.ETPS.all = 0x0000; // Configure interrupt at underflow of epwm1
// EPwm4Regs.ETSEL.all = 0x0009; // Enable interrupt at underflow of epwm1
EPwm4Regs.ETSEL.bit.INTSEL = 1;
EPwm4Regs.ETSEL.bit.INTEN = 0;
EPwm4Regs.ETSEL.bit.INTSELCMP = 0;
// EPwm4Regs.ETSEL.all = 0x0009;
//test 25/11 EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0; // shadow A mode disabled
//test 25/11 EPwm1Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm4Regs.CMPCTL.bit.SHDWAMODE = 0; // shadow A mode disabled
EPwm4Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm4Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm4Regs.CMPCTL.bit.LOADBMODE = 0;
EPwm4Regs.AQCTLA.bit.CAU = 2; // EPWM1A set to low on TBCTR=CMPA on up count
EPwm4Regs.AQCTLA.bit.CAD = 2; // EPWM1A set to High on TBCTR=CMPA on down count
EPwm4Regs.AQCTLB.bit.CBD = 2;
EPwm4Regs.AQCTLB.bit.CBU = 2;
EPwm4Regs.AQCTLA.bit.PRD = 2;
EPwm4Regs.AQCTLA.bit.ZRO = 2;
EPwm4Regs.DBCTL.bit.OUT_MODE = 0; // Deadband disabled, DB will be generated by the gate drivers
EPwm4Regs.TBCTL.bit.CTRMODE = 0x0; // Enable the timer in count up/down mode
//EPWM 5 Block
DevCfgRegs.SOFTPRES2.bit.EPWM5 = 1; // ePWM1 is reset
DevCfgRegs.SOFTPRES2.bit.EPWM5 = 0; // ePWM1 is released from reset
DevCfgRegs.CPUSEL0.bit.EPWM5=0; // Enable CPU1 to EPWM1
EPwm5Regs.TBCTL.bit.CTRMODE = 0x3; // Disable the timer
EPwm5Regs.TBCTL.all = 0xC533;
EPwm5Regs.TBCTL.bit.SYNCOSEL = 1;
EPwm5Regs.TBCTL.bit.PRDLD = 0;
EPwm5Regs.TBCTL.bit.FREE_SOFT = 2;
EPwm5Regs.TBCTL.bit.HSPCLKDIV = 0x0;
EPwm5Regs.TBCTL.bit.CLKDIV = 0x0;
EPwm5Regs.TBCTR = 0x0000; // Clear timer counter
EPwm5Regs.TBPRD = 1999; // EPWM CLK at 50 kHz
// EPwm5Regs.TBCTL.bit.PHSDIR = 0; // EPWM
EPwm5Regs.TBCTL.bit.PHSEN = 1;
EPwm5Regs.TBPHS.bit.TBPHS = 1600;
// EPwm5Regs.TBPHS.bit.TBPHS = 0x0000; // Set timer phase
EPwm5Regs.ETPS.all = 0x0000; // Configure interrupt at underflow of epwm1
// EPwm5Regs.ETSEL.all = 0x0009; // Enable interrupt at underflow of epwm1
EPwm5Regs.ETSEL.bit.INTSEL = 1;
EPwm5Regs.ETSEL.bit.INTEN = 0;
EPwm5Regs.ETSEL.bit.INTSELCMP = 0;
// EPwm4Regs.ETSEL.all = 0x0009;
//test 25/11 EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0; // shadow A mode disabled
//test 25/11 EPwm1Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm5Regs.CMPCTL.bit.SHDWAMODE = 0; // shadow A mode disabled
EPwm5Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm5Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm5Regs.CMPCTL.bit.LOADBMODE = 0;
EPwm5Regs.AQCTLA.bit.CAU = 2; // EPWM1A set to low on TBCTR=CMPA on up count
EPwm5Regs.AQCTLA.bit.CAD = 2; // EPWM1A set to High on TBCTR=CMPA on down count
EPwm5Regs.AQCTLB.bit.CBD = 2;
EPwm5Regs.AQCTLB.bit.CBU = 2;
EPwm5Regs.AQCTLA.bit.PRD = 2;
EPwm5Regs.AQCTLA.bit.ZRO = 2;
EPwm5Regs.DBCTL.bit.OUT_MODE = 0; // Deadband disabled, DB will be generated by the gate drivers
EPwm5Regs.TBCTL.bit.CTRMODE = 0x0; // Enable the timer in count up/down mode
GpioCtrlRegs.GPAGMUX1.bit.GPIO6 = 0;
GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO6 = 1;
GpioCtrlRegs.GPAPUD.bit.GPIO6 = 1;
GpioCtrlRegs.GPAGMUX1.bit.GPIO8 = 0;
GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO8 = 1;
GpioCtrlRegs.GPAPUD.bit.GPIO8 = 1;
I am attaching the project.
Many Thanks in Advance
RCH