Hi,
I'm having some trouble running the ePWM1regs on the F28335 experimenter's kit. When I use the "step over" function in code composer 5.3 I am allowed to write to the register and my program works exactly as it's supposed to. However, when I click the "resume" button (green arrow) all the registers just change values to some default value for some reason and I cannot change them back to my desired values.
TBPRD changes to 0x0EA6, CMPA changes to 0x0753, CMPB changes to 0x0001, AQCTLA remains (changes to?) 0x0060, AQCTLB changes to 0x0000. Does anyone here know of a reason why this might be happening?
My code is:
void main(){
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // EPWM1A pin
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; // EPWM1B pin
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 1; // Disable the internal pullup resistance of EPWM1A pin
GpioCtrlRegs.GPAPUD.bit.GPIO1 = 1; // Disable the internal pullup resistance of EPWM1B pin
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; // GPIO0 as OUTPUT
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1; // GPIO1 as OUTPUT
EDIS;
EALLOW;
SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK = 1;
EDIS;
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC =0;
EDIS;
EPwm1Regs.TBPRD = 0x0050; // Period = 1200 TBCLK counts
EPwm1Regs.TBPHS.half.TBPHS = 0; // Set Phase register to zero
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Symmetrical mode
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Master module
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; // Sync down-stream module
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR=Zero
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR=Zero
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // set actions for EPWM1A
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR; // set actions for EPWM1B
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;
//============================================================
EPwm1Regs.CMPA.half.CMPA = 0x0020; // adjust duty for output EPWM1A & EPWM1B
EPwm1Regs.CMPB = 0x0030; // adjust point-in-time for ADCSOC trigger
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC =1;
EDIS;
while(1)
{
asm(" nop;");
}
}