1、/仯#include DSP2833x_Device.h / DSP2833x Headerfile Include File#include DSP2833x_Examples.h / DSP2833x Examples Include File#include IQmathLib.h#include qmath.h#include math.h#define N 33#define PI 3.1415925#define PRD 600float M=0.8;int i;/double aN;/unsigned int n=0; /float Q;#define PWM1_INT_ENAB
2、LE 1#define PWM2_INT_ENABLE 1#define PWM3_INT_ENABLE 1void InitEPwm1Example(void);/void InitEPwm2Example(void);/void InitEPwm3Example(void);interrupt void epwm1_timer_isr(void);/interrupt void epwm2_timer_isr(void);/interrupt void epwm3_timer_isr(void);/void InitCmp();/extern Uint16 NN,MM;/Uint16 NN
3、=24,MM=1;/Uint16 n=0;Uint16 cmp1360,cmp2360,cmp3360;Uint32 EPwm1TimerIntCount;Uint32 EPwm2TimerIntCount;Uint32 EPwm3TimerIntCount;void main(void) InitSysCtrl(); InitEPwm1Gpio(); / InitEPwm2Gpio(); / InitEPwm3Gpio(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EALLOW; / This
4、is needed to write to EALLOW protected registers PieVectTable.EPWM1_INT = &epwm1_timer_isr; / PieVectTable.EPWM2_INT = &epwm2_timer_isr; / PieVectTable.EPWM3_INT = &epwm3_timer_isr; EDIS; EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; / Stop all the TB clocks EDIS; InitEPwm1Example(); / InitEPwm2Exa
5、mple(); / InitEPwm3Example(); / InitCmp(); EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; EDIS; EPwm1TimerIntCount = 0; EPwm2TimerIntCount = 0; EPwm3TimerIntCount = 0; IER |= M_INT3; PieCtrlRegs.PIEIER3.bit.INTx1 = PWM1_INT_ENABLE; / PieCtrlRegs.PIEIER3.bit.INTx2 = PWM2_INT_ENABLE; / PieCtrlRegs.PIE
6、IER3.bit.INTx3 = PWM3_INT_ENABLE; EINT; / Enable Global interrupt INTM ERTM; asm( NOP); void InitEPwm1Example() EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;/zhuyi EPwm1Regs.TBPRD = PRD; /=2*1500TBCLK EPwm1Regs.TBPHS.half.TBPHS = 0x0000; / Phase is 0 EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; EPwm1Regs.TB
7、CTR = 0x0000; EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; / Count up down EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; / Disable phase loading EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV2; / Clock ratio to SYSCLKOUT EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV2; EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; / Load re
8、gisters every ZERO_PRD EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; / EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; / EPwm1Regs.CMPA.half.CMPA =1000; EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; / Clear PWM1A on CAU EPwm1Regs.AQCTLA.bit.CAD = AQ_SET; EPwm1Regs.AQ
9、CTLB.bit.CAU = AQ_SET; / SET PWM1B on CAU EPwm1Regs.AQCTLB.bit.CAD = AQ_CLEAR; /set dead band / EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_PRD; /? Select INT on Zero Prd event EPwm1Regs.ETSEL.bit.INTEN = PWM1_INT_ENABLE; / Enable INT EPwm1Regs.ETPS.bit.INTPRD = ET_1ST;/*void InitCmp()/ Uint16 i = 0;if(iN)
10、cmp1i=(Uint16)(EPwm1Regs.TBPRD*0.25*(1+M*sin(2*i)*PI/N)+1+M*sin(2*i+1)*PI/N);/ cmp2i=(Uint16)(EvaRegs.T1PR*0.25*(1+M*sin(2*i)*PI/N+PI*4/3)+1+M*sin(2*i+1)*PI/N+PI*4/3);/cmp3i=(Uint16)(EvaRegs.T1PR*0.25*(1+M*sin(2*i)*PI/N+PI*2/3)+1+M*sin(2*i+1)*PI/N+PI*2/3); i+;elsei=0;*/仯interrupt void epwm1_timer_is
11、r(void)if(iN) / cmp1i=(Uint16)(EPwm1Regs.TBPRD*sin(2*i)*PI/N)cmp1i=(Uint16)(EPwm1Regs.TBPRD*0.25*(1+M*sin(2*i)*PI/N)+1+M*sin(2*i+1)*PI/N);/ cmp2i=(Uint16)(EvaRegs.T1PR*0.25*(1+M*sin(2*i)*PI/N+PI*4/3)+1+M*sin(2*i+1)*PI/N+PI*4/3);/cmp3i=(Uint16)(EvaRegs.T1PR*0.25*(1+M*sin(2*i)*PI/N+PI*2/3)+1+M*sin(2*i+1)*PI/N+PI*2/3); EPwm1Regs.CMPA.half.CMPA = cmp1i; i+;elsei=0; EPwm1Regs.ETCLR.bit.INT = 1; PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2