TBCTR
EPWMxA
EPWMxB
TBPRD
value
CA
Z
P
CB
Z
P
CB
CA
Z
P
Z
P
CA
Z
P
CA
Z
P
CB
CB
ePWM Submodules
669
SPRUH22I – April 2012 – Revised November 2019
Copyright © 2012–2019, Texas Instruments Incorporated
C28 Enhanced Pulse Width Modulator (ePWM) Module
Figure 7-24. Up, Single Edge Asymmetric Waveform, With Independent Modulation on EPWMxA and
EPWMxB—Active High
A
PWM period = (TBPRD + 1 ) × T
TBCLK
B
Duty modulation for EPWMxA is set by CMPA, and is active high (that is, high time duty proportional to CMPA).
C
Duty modulation for EPWMxB is set by CMPB and is active high (that is, high time duty proportional to CMPB).
D
The "Do Nothing" actions ( X ) are shown for completeness, but will not be shown on subsequent diagrams.
E
Actions at zero and period, although appearing to occur concurrently, are actually separated by one TBCLK period.
TBCTR wraps from period to 0000.
contains a code sample showing initialization and run time for the waveforms in
Example 7-1. Code Sample for
// Initialization Time
// = = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.TBPRD = 600;
// Period = 601 TBCLK counts
EPwm1Regs.CMPA.half.CMPA = 350;
// Compare A = 350 TBCLK counts
EPwm1Regs.CMPB = 200;
// Compare B = 200 TBCLK counts
EPwm1Regs.TBPHS = 0;
// Set Phase register to zero
EPwm1Regs.TBCTR = 0;
// clear TB counter
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
// Phase loading disabled
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
// TBCLK = SYSCLK
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
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.ZRO = AQ_SET;
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;
//
// Run Time
// = = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.CMPA.half.CMPA = Duty1A;
// adjust duty for output EPWM1A