Hi,
I’m using the TI 28035 for some power conversion control and am having trouble getting SOCA to be generated when I expect it to be.
I’m trying to set SOCA to occur when TBCTR = TBPRD. I’ve tried setting it up as described in the data sheet but SOCA doesn’t seem to occur when I expect it to. With SOCASEL = 2, I see the SOCA occurring when the TBCTR = CMPA while counting up instead of when TBCTR = TBPRD.
Since this SOCASEL setting exhibited different behavior than that described in the data sheet, I tried all other SOCASEL settings and noted the results. Here they are:
SOCASEL SOCA Occurrence
------- ---------------
1 TBCTR=CMPA; counting up
2 TBCTR=CMPA; counting down
3 TBCTR=CMPA; counting up and counting down (2 SOCs per cycle)
4 TBCTR=TBPRD
5 TBCTR=0
6 1.8 usec before TBCTR=TBPRD
7 TBCTR=CMPB counting up
None of these match the behavior in the EPWM data sheet spruge9e. Can anyone explain what I’m seeing here? Do I have something set up incorrectly?
Thanks,
Matt
See the EPWM setup code below:
Event Trigger Setup:
EPwm1Regs.ETSEL.bit.SOCAEN = 1;
EPwm1Regs.ETSEL.bit.SOCASEL = 2;
EPwm1Regs.ETPS.bit.SOCAPRD = 1;
EPWM setup:
EPwm1Regs.TBPRD = 468;
EPwm1Regs.CMPA.half.CMPA = 234;
EPwm1Regs.CMPB = 117;
EPwm1Regs.TBPHS.all = 0U
EPwm1Regs.TBCTR = 0U;
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.FREE_SOFT = 3U;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;
EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEA