I'm working on the Concerto F28M35x. I have the PWM timebase registers configured to Count Up-Down Mode. In this mode, the PRD is supposed to be half the period (it counts up to PRD, then back down to zero). However, the frequency that I get doesn't seem to conform to this. Why might this be? Am I misunderstanding something?
Here are my register configurations:
EPwm1Regs.TBCTL.bit.CLKDIV = 000; // No Clock prescale - use full SYSCLK
EPwm1Regs.TBPRD = PWM_HALF_PERIOD; // 2x this period gives # of cycles for PWM period
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.CAU = AQ_SET; // set actions for EPWM1A
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; // enable Dead-band module
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; // Active Hi complementary
EPwm1Regs.DBFED = DEADBANDCOUNT; // FED = 50 TBCLKs
EPwm1Regs.DBRED = DEADBANDCOUNT; // RED = 50 TBCLKs
The C28 is set at 150MHz. The constant PWM_HALF_PERIOD is 9375. I get 4kHz switching frequency, where by the documentation I should expect 8kHz. Why is that?