svpwm源程序.doc

上传人:wj 文档编号:1224961 上传时间:2023-04-30 格式:DOC 页数:11 大小:48.50KB
下载 相关 举报
svpwm源程序.doc_第1页
第1页 / 共11页
svpwm源程序.doc_第2页
第2页 / 共11页
svpwm源程序.doc_第3页
第3页 / 共11页
svpwm源程序.doc_第4页
第4页 / 共11页
svpwm源程序.doc_第5页
第5页 / 共11页
svpwm源程序.doc_第6页
第6页 / 共11页
svpwm源程序.doc_第7页
第7页 / 共11页
svpwm源程序.doc_第8页
第8页 / 共11页
svpwm源程序.doc_第9页
第9页 / 共11页
svpwm源程序.doc_第10页
第10页 / 共11页
svpwm源程序.doc_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

svpwm源程序.doc

《svpwm源程序.doc》由会员分享,可在线阅读,更多相关《svpwm源程序.doc(11页珍藏版)》请在冰点文库上搜索。

svpwm源程序.doc

/TIFile$Revision:

/main/8$

//Checkin$Date:

April21,200815:

41:

53$

//###########################################################################

//

//FILE:

Example_2833xEPwmUpDownAQ.c

//

//TITLE:

空间电压矢量产生程序SVPWM

//

//ASSUMPTIONS:

//

//ThisprogramrequirestheDSP2833xheaderfiles.

//

//MonitorePWM1-ePWM3pinsonanoscilloscopeasdescribed

//below.

//

//EPWM1AisonGPIO0-------5脚

//EPWM1BisonGPIO1-------6脚

//

//EPWM2AisonGPIO2-------7脚

//EPWM2BisonGPIO3-------10脚

//

//EPWM3AisonGPIO4-------11脚

//EPWM3BisonGPIO5-------12脚

//

//

//###########################################################################

//$TIRelease:

DSP2833x/DSP2823xHeaderFilesV1.20$

//$ReleaseDate:

August1,2008$

//###########################################################################

#include"DSP28x_Project.h"//DeviceHeaderfileandExamplesIncludeFile

//Prototypestatementsforfunctionsfoundwithinthisfile.

voidInitEPwm1Example(void);

voidInitEPwm2Example(void);

voidInitEPwm3Example(void);

voidsvpwmGen(void);

interruptvoidsvpwm_isr(void);

volatilefloatUalpha,Ubeta;

volatilefloatA,B,C;

volatilefloatT0,T1,T2,T3,T4,T5,T6;

volatilefloatTaon,Tbon,Tcon;

floatUa,Ub,Uc;

floatTs;

inta,b,c;

intN=0,sector=0;

#defineTPRD800

#defineUdc800

voidmain(void)

{

//Step1.InitializeSystemControl:

//PLL,WatchDog,enablePeripheralClocks

//ThisexamplefunctionisfoundintheDSP2833x_SysCtrl.cfile.

InitSysCtrl();

//Step2.InitalizeGPIO:

//ThisexamplefunctionisfoundintheDSP2833x_Gpio.cfileand

//illustrateshowtosettheGPIOtoit'sdefaultstate.

//InitGpio();//Skippedforthisexample

//ForthiscasejustinitGPIOpinsforePWM1,ePWM2,ePWM3

//ThesefunctionsareintheDSP2833x_EPwm.cfile

InitEPwm1Gpio();

InitEPwm2Gpio();

InitEPwm3Gpio();

//Step3.ClearallinterruptsandinitializePIEvectortable:

//DisableCPUinterrupts

DINT;

//InitializethePIEcontrolregisterstotheirdefaultstate.

//ThedefaultstateisallPIEinterruptsdisabledandflags

//arecleared.

//ThisfunctionisfoundintheDSP2833x_PieCtrl.cfile.

InitPieCtrl();

//DisableCPUinterruptsandclearallCPUinterruptflags:

IER=0x0000;

IFR=0x0000;

//InitializethePIEvectortablewithpointerstotheshellInterrupt

//ServiceRoutines(ISR).

//Thiswillpopulatetheentiretable,eveniftheinterrupt

//isnotusedinthisexample.Thisisusefulfordebugpurposes.

//TheshellISRroutinesarefoundinDSP2833x_DefaultIsr.c.

//ThisfunctionisfoundinDSP2833x_PieVect.c.

InitPieVectTable();

//Interruptsthatareusedinthisexamplearere-mappedto

//ISRfunctionsfoundwithinthisfile.

EALLOW;//ThisisneededtowritetoEALLOWprotectedregisters

PieVectTable.EPWM1_INT=&svpwm_isr;

//PieVectTable.EPWM2_INT=&epwm2_isr;

//PieVectTable.EPWM3_INT=&epwm3_isr;

EDIS;//ThisisneededtodisablewritetoEALLOWprotectedregisters

//Step4.InitializealltheDevicePeripherals:

//ThisfunctionisfoundinDSP2833x_InitPeripherals.c

//InitPeripherals();//Notrequiredforthisexample

//Forthisexample,onlyinitializetheePWM

EALLOW;

SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0;

EDIS;

InitEPwm1Example();

InitEPwm2Example();

InitEPwm3Example();

EALLOW;

SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1;

EDIS;

//Step5.Userspecificcode,enableinterrupts:

//EnableCPUINT3whichisconnectedtoEPWM1-3INT:

IER|=M_INT3;

//EnableEPWMINTninthePIE:

Group3interrupt1-3

PieCtrlRegs.PIEIER3.bit.INTx1=1;

//PieCtrlRegs.PIEIER3.bit.INTx2=1;

//PieCtrlRegs.PIEIER3.bit.INTx3=1;

//EnableglobalInterruptsandhigherpriorityreal-timedebugevents:

EINT;//EnableGlobalinterruptINTM

ERTM;//EnableGlobalrealtimeinterruptDBGM

//Step6.IDLEloop.Justsitandloopforever(optional):

for(;;)

{

asm("NOP");

}

}//main结束

//=======================================================================

interruptvoidsvpwm_isr(void)

{

svpwmGen();

//SetComparevalues

EPwm1Regs.CMPA.half.CMPA=Taon;//adjustdutyforoutputEPWM1A

EPwm2Regs.CMPA.half.CMPA=Tbon;//adjustdutyforoutputEPWM2A

EPwm3Regs.CMPA.half.CMPA=Tcon;//adjustdutyforoutputEPWM3A

//ClearINTflagforthistimer

EPwm1Regs.ETCLR.bit.INT=1;

//Acknowledgethisinterrupttoreceivemoreinterruptsfromgroup3

PieCtrlRegs.PIEACK.all=PIEACK_GROUP3;

}

voidInitEPwm1Example()

{

//SetupTBCLK

EPwm1Regs.TBPRD=TPRD;//TPRD=800,Period=1600TBCLKcounts

EPwm1Regs.TBPHS.half.TBPHS=0;//SetPhaseregistertozero

EPwm1Regs.TBCTR=0x0000;//Clearcounter

//Setupcountermode

EPwm1Regs.TBCTL.bit.CTRMODE=TB_COUNT_UPDOWN;//Symmetricalmode

EPwm1Regs.TBCTL.bit.PHSEN=TB_DISABLE;//////////////////////////Mastermodule

EPwm1Regs.TBCTL.bit.PRDLD=TB_SHADOW;

EPwm1Regs.TBCTL.bit.SYNCOSEL=TB_CTR_ZERO;/////////////////////Syncdown-streammodule

//SetupTpwm

EPwm1Regs.TBCTL.bit.HSPCLKDIV=TB_DIV2;//ClockratiotoSYSCLKOUT

EPwm1Regs.TBCTL.bit.CLKDIV=5;//原为TB_DIV1,对于上下计数:

Tpwm=2xTBPRDxTTBCLKFpwm=1/(Tpwm)

//Setupshadowing

EPwm1Regs.CMPCTL.bit.SHDWAMODE=CC_SHADOW;

EPwm1Regs.CMPCTL.bit.SHDWBMODE=CC_SHADOW;

EPwm1Regs.CMPCTL.bit.LOADAMODE=CC_CTR_ZERO;//loadonCTR=Zero

EPwm1Regs.CMPCTL.bit.LOADBMODE=CC_CTR_ZERO;//loadonCTR=Zero

//Setactions

EPwm1Regs.AQCTLA.bit.CAU=AQ_SET;//setactionsforEPWM1A

EPwm1Regs.AQCTLA.bit.CAD=AQ_CLEAR;

//SetDead-band

EPwm1Regs.DBCTL.bit.OUT_MODE=DB_FULL_ENABLE;//enableDead-bandmodule

EPwm1Regs.DBCTL.bit.POLSEL=DB_ACTV_HIC;//ActiveHicomplementary

EPwm1Regs.DBFED=50;//FED=50TBCLKs

EPwm1Regs.DBRED=50;//RED=50TBCLKs

//InterruptwherewewillchangetheCompareValues

EPwm1Regs.ETSEL.bit.INTSEL=ET_CTR_ZERO;//SelectINTonZeroevent

EPwm1Regs.ETSEL.bit.INTEN=1;//EnableINT

EPwm1Regs.ETPS.bit.INTPRD=ET_3RD;//GenerateINTon3rdevent

/*

//SetComparevalues

//==============================================================

EPwm1Regs.CMPA.half.CMPA=500;//adjustdutyforoutputEPWM1A

EPwm2Regs.CMPA.half.CMPA=600;//adjustdutyforoutputEPWM2A

EPwm3Regs.CMPA.half.CMPA=700;//adjustdutyforoutputEPWM3A

*/

}

voidInitEPwm2Example()

{

//SetupTBCLK

EPwm2Regs.TBPRD=TPRD;//TPRD=800,Period=1600TBCLKcounts

EPwm2Regs.TBPHS.half.TBPHS=0;//SetPhaseregistertozero

EPwm2Regs.TBCTR=0x0000;//Clearcounter

//Setupcountermode

EPwm2Regs.TBCTL.bit.CTRMODE=TB_COUNT_UPDOWN;//Symmetricalmode

EPwm2Regs.TBCTL.bit.PHSEN=TB_ENABLE;//////////////////////////////Slavemodule

EPwm2Regs.TBCTL.bit.PRDLD=TB_SHADOW;

EPwm2Regs.TBCTL.bit.SYNCOSEL=TB_SYNC_IN;///////////////////////////syncflow-through

//SetupTpwm

EPwm2Regs.TBCTL.bit.HSPCLKDIV=TB_DIV2;//ClockratiotoSYSCLKOUT

EPwm2Regs.TBCTL.bit.CLKDIV=5;//ForUpandDownCount--Tpwm=2xTBPRDxTTBCLK;Fpwm=1/(Tpwm)

//Setupshadowing

EPwm2Regs.CMPCTL.bit.SHDWAMODE=CC_SHADOW;

EPwm2Regs.CMPCTL.bit.SHDWBMODE=CC_SHADOW;

EPwm2Regs.CMPCTL.bit.LOADAMODE=CC_CTR_ZERO;//loadonCTR=Zero

EPwm2Regs.CMPCTL.bit.LOADBMODE=CC_CTR_ZERO;//loadonCTR=Zero

//Setactions

EPwm2Regs.AQCTLA.bit.CAU=AQ_SET;//setactionsforEPWM2A

EPwm2Regs.AQCTLA.bit.CAD=AQ_CLEAR;

//SetDead-band

EPwm2Regs.DBCTL.bit.OUT_MODE=DB_FULL_ENABLE;//enableDead-bandmodule

EPwm2Regs.DBCTL.bit.POLSEL=DB_ACTV_HIC;//ActiveHicomplementary

EPwm2Regs.DBFED=50;//FED=50TBCLKs

EPwm2Regs.DBRED=50;//RED=50TBCLKs

//InterruptwherewewillchangetheCompareValues

EPwm2Regs.ETSEL.bit.INTSEL=ET_CTR_ZERO;//SelectINTonZeroevent

EPwm2Regs.ETSEL.bit.INTEN=1;//EnableINT

EPwm2Regs.ETPS.bit.INTPRD=ET_3RD;//GenerateINTon3rdevent

//SetComparevalues

}

voidInitEPwm3Example()

{

//SetupTBCLK

EPwm3Regs.TBPRD=TPRD;//TPRD=800,Period=1600TBCLKcounts

EPwm3Regs.TBPHS.half.TBPHS=0;//SetPhaseregistertozero

EPwm1Regs.TBCTR=0x0000;//Clearcounter

//Setupcountermode

EPwm3Regs.TBCTL.bit.CTRMODE=TB_COUNT_UPDOWN;//Symmetricalmode

EPwm3Regs.TBCTL.bit.PHSEN=TB_ENABLE;////////////////////////////////Slavemodule

EPwm3Regs.TBCTL.bit.PRDLD=TB_SHADOW;

EPwm3Regs.TBCTL.bit.SYNCOSEL=TB_SYNC_IN;//////////////////////////////syncflow-through

//SetupTpwm

EPwm3Regs.TBCTL.bit.HSPCLKDIV=TB_DIV2;//ClockratiotoSYSCLKOUT

EPwm3Regs.TBCTL.bit.CLKDIV=5;//ForUpandDownCount:

Tpwm=2xTBPRDxTTBCLK;Fpwm=1/(Tpwm)

//Setupshadowing

EPwm3Regs.CMPCTL.bit.SHDWAMODE=CC_SHADOW;

EPwm3Regs.CMPCTL.bit.SHDWBMODE=CC_SHADOW;

EPwm3Regs.CMPCTL.bit.LOADAMODE=CC_CTR_ZERO;//loadonCTR=Zero

EPwm3Regs.CMPCTL.bit.LOADBMODE=CC_CTR_ZERO;//loadonCTR=Zero

//Setactions

EPwm3Regs.AQCTLA.bit.CAU=AQ_SET;//setactionsforEPWM3A

EPwm3Regs.AQCTLA.bit.CAD=AQ_CLEAR;

//SetDead-band

EPwm3Regs.DBCTL.bit.OUT_MODE=DB_FULL_ENABLE;//enableDead-bandmodule

EPwm3Regs.DBCTL.bit.POLSEL=DB_ACTV_HIC;//ActiveHicomplementary

EPwm3Regs.DBFED=50;//FED=50TBCLKs

EPwm3Regs.DBRED=50;//RED=50TBCLKs

//InterruptwherewewillchangetheCompareValues

EPwm3Regs.ETSEL.bit.INTSEL=ET_CTR_ZERO;//SelectINTonZeroevent

EPwm3Regs.ETSEL.bit.INTEN=1;//EnableINT

EPwm3Regs.ETPS.bit.INTPRD=ET_3RD;//GenerateINTon3rdevent

//SetComparevalues

}

voidsvpwmGen(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2