1  | void HRPWM1_Config(period)
  | 
2  | {
 | 
3  | 
  | 
4  | EALLOW;
  | 
5  |      
  | 
6  | EPwm1Regs.TBPRD = period/2;              // Period = 585,37 TBCLK counts
  | 
7  |   EPwm1Regs.TBPHS.half.TBPHS = 0;          // Set Phase register to zero
  | 
8  |   
  | 
9  |   EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;   // Symmetrical mode
  | 
10  |   EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;      // Master module
  | 
11  |   EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
  | 
12  |   EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
  | 
13  |   EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;    // TBCLK = SYSCLKOUT
  | 
14  |   EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;   
  | 
15  |   EPwm1Regs.TBCTL.bit.FREE_SOFT = 3;
  | 
16  |       
  | 
17  |     EPwm1Regs.ETSEL.bit.SOCAEN  = 1;     
  | 
18  |      EPwm1Regs.ETSEL.bit.SOCASEL  = ET_CTR_ZERO;     
  | 
19  |      EPwm1Regs.ETPS.bit.SOCAPRD   = ET_1ST;
  | 
20  |   
  | 
21  |   EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
  | 
22  |   EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
  | 
23  |   EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD;  // load on CTR=Zero
  | 
24  |   
  | 
25  | //  EPwm1Regs.AQCTLA.bit.CBU = AQ_SET;        // set actions for EPWM1B
  | 
26  | //  EPwm1Regs.AQCTLA.bit.CBD = AQ_CLEAR;        // if using this one TBPRD = 147
  | 
27  |   EPwm1Regs.AQCTLA.bit.ZRO = AQ_TOGGLE;
  | 
28  |   EDIS;
  | 
29  | }
  | 
30  | 
  | 
31  | void HRPWM3_Config(period)
  | 
32  | {
 | 
33  |   
  | 
34  |   
  | 
35  | // ePWM3 register configuration with HRPWM
  | 
36  | // ePWM3A toggle high/low with MEP control on falling edge
  | 
37  | 
  | 
38  |   EPwm3Regs.TBCTL.bit.PRDLD = TB_SHADOW;          // set Immediate load
  | 
39  |   EPwm3Regs.TBPRD = period-1;                        // PWM frequency = 1 / period
  | 
40  |   EPwm3Regs.CMPA.half.CMPA = period / 2;              // set duty 50% initially
  | 
41  |   EPwm3Regs.CMPA.half.CMPAHR = (1 << 8);              // initialize HRPWM extension
  | 
42  |   EPwm3Regs.TBPHS.all = 0;
  | 
43  |   EPwm3Regs.TBCTR = 0;
  | 
44  |   
  | 
45  |   
  | 
46  | 
  | 
47  |   EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
  | 
48  |   EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE;            // EPwm3 is the Master
  | 
49  |   EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
  | 
50  |   EPwm3Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
  | 
51  |   EPwm3Regs.TBCTL.bit.CLKDIV = TB_DIV1;
  | 
52  |   
  | 
53  |   EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD;
  | 
54  |   EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_PRD;
  | 
55  |   EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
  | 
56  |   EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
  | 
57  | 
  | 
58  |   EPwm3Regs.AQCTLA.bit.ZRO = AQ_SET;                  // PWM toggle high/low
  | 
59  |   EPwm3Regs.AQCTLA.bit.CAU = AQ_CLEAR;
  | 
60  |   EPwm3Regs.AQCTLB.bit.ZRO = AQ_SET;
  | 
61  |   EPwm3Regs.AQCTLB.bit.CBU = AQ_CLEAR;
  | 
62  | 
  | 
63  |   EALLOW;
  | 
64  |   EPwm3Regs.HRCNFG.all = 0x0;
  | 
65  |   EPwm3Regs.HRCNFG.bit.EDGMODE = HR_BEP;               //MEP control on falling edge
  | 
66  |   EPwm3Regs.HRCNFG.bit.CTLMODE = HR_CMP;
  | 
67  |   EPwm3Regs.HRCNFG.bit.HRLOAD  = HR_CTR_PRD;
  | 
68  |   EDIS;
  | 
69  | }
  |