首页 28335svpwm例程

28335svpwm例程

举报
开通vip

28335svpwm例程DSP28335SVPWM例程,仅供供大家参考: //---------------T1UFINT_ISR------------------------------------------------------ float Sin_Value(Uint16 Degree)//suitable for N=6,12,18,24 { int Sign=1; Uint16 Degree_Index; float SinValue; if(Degree>=360)Degree-=360; //for C...

28335svpwm例程
DSP28335SVPWM例程,仅供供大家参考: //---------------T1UFINT_ISR------------------------------------------------------ float Sin_Value(Uint16 Degree)//suitable for N=6,12,18,24 { int Sign=1; Uint16 Degree_Index; float SinValue; if(Degree>=360)Degree-=360; //for Cos if(Degree>=180) { Degree-=180; Sign=-1; } Degree_Index=Degree/5; SinValue=Sign*Sin180_Table[Degree_Index]; return(SinValue); } Uint16 *SoftSvpwmGen(Uint16 *Pa,Uint16 Tpwm,Uint16 Sita,float VectTime)//SW_SVPWM { //Vref.Angle<=360degree;Tpwm(Carrier Period Number):Ts/TpwmClk volatile float T0,T1,T2,B0,B1,B2;// Uint16 Sector=0,alfa=0,k; k=Sita/60; alfa=Sita-60*k; if(k==0)Sector=3; if(k==1){Sector=1;alfa=60-alfa;} if(k==2)Sector=5; if(k==3){Sector=4;alfa=60-alfa;} if(k==4)Sector=6; if(k==5){Sector=2;alfa=60-alfa;} if(k>5)Sector=3; T1=VectTime*Sin_Value(60-alfa);//Cos(alfa+30)=Sin_Value(alfa+120)=Sin_Value(60-alfa) T2=VectTime*Sin_Value(alfa); if((T1+T2)>Tpwm) { //T0=T1+T2; T1*=(Tpwm/(T1+T2)); //T2*=(Tpwm/T0); B0=0; //Taon B1=T1/2; //Tbon B2=Tpwm/2; //Tcon } else {B0=(Tpwm-T1-T2)/4; //Taon B1=B0+T1/2; //Tbon B2=B1+T2/2; //Tcon } switch(Sector) {case 1://b,a,c { *(Pa+0)=B1; *(Pa+1)=B0; *(Pa+2)=B2; } break; case 2://a,c,b { *(Pa+0)=B0; *(Pa+1)=B2; *(Pa+2)=B1; } break; case 3://a,b,c { *(Pa+0)=B0; *(Pa+1)=B1; *(Pa+2)=B2; } break; case 4://c,b,a { *(Pa+0)=B2; *(Pa+1)=B1; *(Pa+2)=B0; } break; case 5://c,a,b { *(Pa+0)=B2; *(Pa+1)=B0; *(Pa+2)=B1; } break; case 6://b,c,a { *(Pa+0)=B1; *(Pa+1)=B2; *(Pa+2)=B0; } break; default: {// Sector=0:Vref.Mag=0 *(Pa+0)=B0; *(Pa+1)=B0; *(Pa+2)=B0; } } return(Pa); } interrupt void _EPWM1_UFINT_ISR(void) // EV-A { Uint16 CMPR[3]; Uint16 *Pcmpr; //GpioDataRegs.GPATOGGLE.bit.GPIOA15=1;//XOR(PA15):Communication LED Flash !! Vref.Angle+= 360/N; if(Vref.Angle>=360)Vref.Angle-=360; //if(Starting!=0x55 )//(Starting!=0x55) ||(Vref.Mag>=2000.0)||(Vref.Mag<=0) //Vref.Mag=2000.0;//FOR TEST!!! 2007.7.21:50->AC:5v PwmCount++; if(PwmCount>=N)PwmCount=0; //Temp=PwmCount&0x1; //if(Temp==0x1)AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;// Enable SW To SOC to start SEQ(SEQ1/SEQ2) if(PwmCount==0) {//:当PwmCount=N(Tr=2.5ms),更新 //TpwmNum=TPWM_NUM;move to main 2007.8.26 //Ud=2800;// 2007.12.23 if(Vref.Mag<0)Vref.Mag=0; UoutTime=(SQRT2*TpwmNum*Vref.Mag)/(Ud); if(UoutTime>TpwmNum)UoutTime=TpwmNum; } Pcmpr=SoftSvpwmGen(CMPR,TpwmNum,Vref.Angle, UoutTime); EPwm1Regs.CMPA.half.CMPA = *(Pcmpr+0); EPwm2Regs.CMPA.half.CMPA = *(Pcmpr+1); EPwm3Regs.CMPA.half.CMPA = *(Pcmpr+2); //EPwm4Regs.CMPA.half.CMPA = *(Pcmpr+0);//FOR THREE LEVEL SVPWM //EPwm5Regs.CMPA.half.CMPA = *(Pcmpr+1); //EPwm6Regs.CMPA.half.CMPA = *(Pcmpr+2); // Clear INT flag for this timer EPwm1Regs.ETCLR.bit.INT = 1; PieCtrlRegs.PIEACK.all |= PIEACK_GROUP3; // Acknowledge interrupt to PIE // Uncomment this line after adding ISR Code //return; }
本文档为【28335svpwm例程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_314871
暂无简介~
格式:doc
大小:21KB
软件:Word
页数:8
分类:互联网
上传时间:2019-05-28
浏览量:18