首页 实验四 PWM 波形产生实验

实验四 PWM 波形产生实验

举报
开通vip

实验四 PWM 波形产生实验实验四PWM波形产生实验【实验目的】1.了解TMS320F28335ADSP片内事件管理器模块的脉宽调制电路PWM的特性参数;2.掌握PWM电路的控制方法;3.学会用程序控制产生不同占空比的PWM波形。【实验设备】计算机,示波器,ICETEK–F28335-A实验设备一套。【实验原理】1.脉宽调制电路PWM的特性TMS320F28335ADSP片内有两个事件管理器模块,每个事件管理器模块可同时产生多达8路的PWM波形输出。由3个带可编程死区控制的比较单元产生独立的3对PWM(即6个输出),以及由通用定时...

实验四 PWM 波形产生实验
实验四PWM波形产生实验【实验目的】1.了解TMS320F28335ADSP片内事件管理器模块的脉宽调制电路PWM的特性参数;2.掌握PWM电路的控制方法;3.学会用程序控制产生不同占空比的PWM波形。【实验设备】计算机,示波器,ICETEK–F28335-A实验设备一套。【实验原理】1.脉宽调制电路PWM的特性TMS320F28335ADSP片内有两个事件管理器模块,每个事件管理器模块可同时产生多达8路的PWM波形输出。由3个带可编程死区控制的比较单元产生独立的3对PWM(即6个输出),以及由通用定时器比较器产生2个独立的PWM输出。PWM的特性如下:-16位寄存器;-有从0到16μs的可编程死区发生器控制PWM输出对;-最小的死区宽度为1个CPU时钟周期;-对PWM频率的变动可根据需要改变PWM的载波频率;-在每个PWM周期内和以后可根据需要改变PWM脉冲的宽度;-外部可屏蔽的功率驱动保护中断;-脉冲形式发生器电路,用于可编程对称、非对称以及空间矢量PWM波形产生;-自动重装载的比较寄存器和周期寄存器。2.连接示波器连接示波器探头的地线与实验箱左侧的测试点的GND相连,红 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 笔与测试点PWM1~4相连。四.实验 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 在PWM1~PWM4引脚输出不同频率占空比可变的PWM脉冲。通过示波器可观察到占空比变化的PWM输出波形,其载波频率、占空比与程序中对控制寄存器的设置相关。//TIFile$Revision:/main/8$//Checkin$Date:August10,200709:04:53$//###########################################################################////FILE:Example_2833xEPwm3UpAQ.c////TITLE:ActionQualifierModuleUpcountmode.////ASSUMPTIONS:////ThisprogramrequirestheDSP2833xheaderfiles.////MonitortheePWM1-ePWM3pinsonaoscilloscopeas//describedbelow.////EPWM1AisonGPIO0//EPWM1BisonGPIO1////EPWM2AisonGPIO2//EPWM2BisonGPIO3////EPWM3AisonGPIO4//EPWM3BisonGPIO5////Assupplied,thisprojectisconfiguredfor"boottoSARAM"//operation.The2833xBootModetableisshownbelow.//ForinformationonconfiguringthebootmodeofaneZdsp,//pleaserefertothedocumentationincludedwiththeeZdsp,////$Boot_Table:////GPIO87GPIO86GPIO85GPIO84//XA15XA14XA13XA12//PUPUPUPU//==========================================//1111JumptoFlash//1110SCI-Aboot//1101SPI-Aboot//1100I2C-Aboot//1011eCAN-Aboot//1010McBSP-Aboot//1001JumptoXINTFx16//1000JumptoXINTFx32//0111JumptoOTP//0110ParallelGPIOI/Oboot//0101ParallelXINTFboot//0100JumptoSARAM<-"boottoSARAM"//0011Branchtocheckbootmode//0010Boottoflash,bypassADCcal//0001BoottoSARAM,bypassADCcal//0000BoottoSCI-A,bypassADCcal//Boot_Table_End$////DESCRIPTION:////ThisexampleconfiguresePWM1,ePWM2,ePWM3toproducean//waveformwithindependantmodulationonEPWMxAand//EPWMxB.////ThecomparevaluesCMPAandCMPBaremodifiedwithintheePWM'sISR////TheTBcounterisinupmodeforthisexample.////ViewtheEPWM1A/B,EPWM2A/BandEPWM3A/Bwaveforms//viaanoscilloscope//////###########################################################################//$TIRelease:DSP2833xHeaderFilesV1.01$//$ReleaseDate:September26,2007$//############################################################################include"DSP2833x_Device.h"//DSP2833xHeaderfileIncludeFile#include"DSP2833x_Examples.h"//DSP2833xExamplesIncludeFiletypedefstruct{volatilestructEPWM_REGS*EPwmRegHandle;Uint16EPwm_CMPA_Direction;Uint16EPwm_CMPB_Direction;Uint16EPwmTimerIntCount;Uint16EPwmMaxCMPA;Uint16EPwmMinCMPA;Uint16EPwmMaxCMPB;Uint16EPwmMinCMPB;}EPWM_INFO;//Prototypestatementsforfunctionsfoundwithinthisfile.voidInitEPwm1Example(void);voidInitEPwm2Example(void);voidInitEPwm3Example(void);interruptvoidepwm1_isr(void);interruptvoidepwm2_isr(void);interruptvoidepwm3_isr(void);voidupdate_compare(EPWM_INFO*);//GlobalvariablesusedinthisexampleEPWM_INFOepwm1_info;EPWM_INFOepwm2_info;EPWM_INFOepwm3_info;//Configuretheperiodforeachtimer#defineEPWM1_TIMER_TBPRD2000//Periodregister#defineEPWM1_MAX_CMPA1950#defineEPWM1_MIN_CMPA50#defineEPWM1_MAX_CMPB1950#defineEPWM1_MIN_CMPB50#defineEPWM2_TIMER_TBPRD2000//Periodregister#defineEPWM2_MAX_CMPA1950#defineEPWM2_MIN_CMPA50#defineEPWM2_MAX_CMPB1950#defineEPWM2_MIN_CMPB50#defineEPWM3_TIMER_TBPRD2000//Periodregister#defineEPWM3_MAX_CMPA950#defineEPWM3_MIN_CMPA50#defineEPWM3_MAX_CMPB1950#defineEPWM3_MIN_CMPB1050//Tokeeptrackofwhichwaythecomparevalueismoving#defineEPWM_CMP_UP1#defineEPWM_CMP_DOWN0voidmain(void){//Step1.InitializeSystemControl://PLL,WatchDog,enablePeripheralClocks//ThisexamplefunctionisfoundintheDSP2833x_SysCtrl.cfile.InitSysCtrl();//Step2.InitalizeGPIO://ThisexamplefunctionisfoundintheDSP2833x_Gpio.cfileand//illustrateshowtosettheGPIOtoit'sdefaultstate.//InitGpio();//Skippedforthisexample//ForthiscasejustinitGPIOpinsforePWM1,ePWM2,ePWM3//ThesefunctionsareintheDSP2833x_EPwm.cfileInitEPwm1Gpio();InitEPwm2Gpio();InitEPwm3Gpio();//Step3.ClearallinterruptsandinitializePIEvectortable://DisableCPUinterruptsDINT;//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;//ThisisneededtowritetoEALLOWprotectedregistersPieVectTable.EPWM1_INT=&epwm1_isr;PieVectTable.EPWM2_INT=&epwm2_isr;PieVectTable.EPWM3_INT=&epwm3_isr;EDIS;//ThisisneededtodisablewritetoEALLOWprotectedregisters//Step4.InitializealltheDevicePeripherals://ThisfunctionisfoundinDSP2833x_InitPeripherals.c//InitPeripherals();//Notrequiredforthisexample//Forthisexample,onlyinitializetheePWMEALLOW;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-3PieCtrlRegs.PIEIER3.bit.INTx1=1;PieCtrlRegs.PIEIER3.bit.INTx2=1;PieCtrlRegs.PIEIER3.bit.INTx3=1;//EnableglobalInterruptsandhigherpriorityreal-timedebugevents:EINT;//EnableGlobalinterruptINTMERTM;//EnableGlobalrealtimeinterruptDBGM//Step6.IDLEloop.Justsitandloopforever(optional):for(;;){asm("NOP");}}interruptvoidepwm1_isr(void){//UpdatetheCMPAandCMPBvaluesupdate_compare(&epwm1_info);//ClearINTflagforthistimerEPwm1Regs.ETCLR.bit.INT=1;//Acknowledgethisinterrupttoreceivemoreinterruptsfromgroup3PieCtrlRegs.PIEACK.all=PIEACK_GROUP3;}interruptvoidepwm2_isr(void){//UpdatetheCMPAandCMPBvaluesupdate_compare(&epwm2_info);//ClearINTflagforthistimerEPwm2Regs.ETCLR.bit.INT=1;//Acknowledgethisinterrupttoreceivemoreinterruptsfromgroup3PieCtrlRegs.PIEACK.all=PIEACK_GROUP3;}interruptvoidepwm3_isr(void){//UpdatetheCMPAandCMPBvaluesupdate_compare(&epwm3_info);//ClearINTflagforthistimerEPwm3Regs.ETCLR.bit.INT=1;//Acknowledgethisinterrupttoreceivemoreinterruptsfromgroup3PieCtrlRegs.PIEACK.all=PIEACK_GROUP3;}voidInitEPwm1Example(){//SetupTBCLKEPwm1Regs.TBCTL.bit.CTRMODE=TB_COUNT_UP;//CountupEPwm1Regs.TBPRD=EPWM1_TIMER_TBPRD;//SettimerperiodEPwm1Regs.TBCTL.bit.PHSEN=TB_DISABLE;//DisablephaseloadingEPwm1Regs.TBPHS.half.TBPHS=0x0000;//Phaseis0EPwm1Regs.TBCTR=0x0000;//ClearcounterEPwm1Regs.TBCTL.bit.HSPCLKDIV=TB_DIV2;//ClockratiotoSYSCLKOUTEPwm1Regs.TBCTL.bit.CLKDIV=TB_DIV2;//SetupshadowregisterloadonZEROEPwm1Regs.CMPCTL.bit.SHDWAMODE=CC_SHADOW;EPwm1Regs.CMPCTL.bit.SHDWBMODE=CC_SHADOW;EPwm1Regs.CMPCTL.bit.LOADAMODE=CC_CTR_ZERO;EPwm1Regs.CMPCTL.bit.LOADBMODE=CC_CTR_ZERO;//SetComparevaluesEPwm1Regs.CMPA.half.CMPA=EPWM1_MIN_CMPA;//SetcompareAvalueEPwm1Regs.CMPB=EPWM1_MIN_CMPB;//SetCompareBvalue//SetactionsEPwm1Regs.AQCTLA.bit.ZRO=AQ_SET;//SetPWM1AonZeroEPwm1Regs.AQCTLA.bit.CAU=AQ_CLEAR;//ClearPWM1AoneventA,upcountEPwm1Regs.AQCTLB.bit.ZRO=AQ_SET;//SetPWM1BonZeroEPwm1Regs.AQCTLB.bit.CBU=AQ_CLEAR;//ClearPWM1BoneventB,upcount//InterruptwherewewillchangetheCompareValuesEPwm1Regs.ETSEL.bit.INTSEL=ET_CTR_ZERO;//SelectINTonZeroeventEPwm1Regs.ETSEL.bit.INTEN=1;//EnableINTEPwm1Regs.ETPS.bit.INTPRD=ET_3RD;//GenerateINTon3rdevent//Informationthisexampleusestokeeptrack//ofthedirectiontheCMPA/CMPBvaluesare//moving,theminandmaxallowedvaluesand//apointertothecorrectePWMregistersepwm1_info.EPwm_CMPA_Direction=EPWM_CMP_UP;//StartbyincreasingCMPA&CMPBepwm1_info.EPwm_CMPB_Direction=EPWM_CMP_UP;epwm1_info.EPwmTimerIntCount=0;//Zerotheinterruptcounterepwm1_info.EPwmRegHandle=&EPwm1Regs;//SetthepointertotheePWMmoduleepwm1_info.EPwmMaxCMPA=EPWM1_MAX_CMPA;//Setupmin/maxCMPA/CMPBvaluesepwm1_info.EPwmMinCMPA=EPWM1_MIN_CMPA;epwm1_info.EPwmMaxCMPB=EPWM1_MAX_CMPB;epwm1_info.EPwmMinCMPB=EPWM1_MIN_CMPB;}voidInitEPwm2Example(){//SetupTBCLKEPwm2Regs.TBCTL.bit.CTRMODE=TB_COUNT_UP;//CountupEPwm2Regs.TBPRD=EPWM2_TIMER_TBPRD;//SettimerperiodEPwm2Regs.TBCTL.bit.PHSEN=TB_DISABLE;//DisablephaseloadingEPwm2Regs.TBPHS.half.TBPHS=0x0000;//Phaseis0EPwm2Regs.TBCTR=0x0000;//ClearcounterEPwm2Regs.TBCTL.bit.HSPCLKDIV=TB_DIV2;//ClockratiotoSYSCLKOUTEPwm2Regs.TBCTL.bit.CLKDIV=TB_DIV2;//SetupshadowregisterloadonZEROEPwm2Regs.CMPCTL.bit.SHDWAMODE=CC_SHADOW;EPwm2Regs.CMPCTL.bit.SHDWBMODE=CC_SHADOW;EPwm2Regs.CMPCTL.bit.LOADAMODE=CC_CTR_ZERO;EPwm2Regs.CMPCTL.bit.LOADBMODE=CC_CTR_ZERO;//SetComparevaluesEPwm2Regs.CMPA.half.CMPA=EPWM2_MIN_CMPA;//SetcompareAvalueEPwm2Regs.CMPB=EPWM2_MAX_CMPB;//SetCompareBvalue//SetactionsEPwm2Regs.AQCTLA.bit.PRD=AQ_CLEAR;//ClearPWM2AonPeriodEPwm2Regs.AQCTLA.bit.CAU=AQ_SET;//SetPWM2AoneventA,upcountEPwm2Regs.AQCTLB.bit.PRD=AQ_CLEAR;//ClearPWM2BonPeriodEPwm2Regs.AQCTLB.bit.CBU=AQ_SET;//SetPWM2BoneventB,upcount//InterruptwherewewillchangetheCompareValuesEPwm2Regs.ETSEL.bit.INTSEL=ET_CTR_ZERO;//SelectINTonZeroeventEPwm2Regs.ETSEL.bit.INTEN=1;//EnableINTEPwm2Regs.ETPS.bit.INTPRD=ET_3RD;//GenerateINTon3rdevent//Informationthisexampleusestokeeptrack//ofthedirectiontheCMPA/CMPBvaluesare//moving,theminandmaxallowedvaluesand//apointertothecorrectePWMregistersepwm2_info.EPwm_CMPA_Direction=EPWM_CMP_UP;//StartbyincreasingCMPAepwm2_info.EPwm_CMPB_Direction=EPWM_CMP_DOWN;//anddecreasingCMPBepwm2_info.EPwmTimerIntCount=0;//Zerotheinterruptcounterepwm2_info.EPwmRegHandle=&EPwm2Regs;//SetthepointertotheePWMmoduleepwm2_info.EPwmMaxCMPA=EPWM2_MAX_CMPA;//Setupmin/maxCMPA/CMPBvaluesepwm2_info.EPwmMinCMPA=EPWM2_MIN_CMPA;epwm2_info.EPwmMaxCMPB=EPWM2_MAX_CMPB;epwm2_info.EPwmMinCMPB=EPWM2_MIN_CMPB;}voidInitEPwm3Example(void){//SetupTBCLKEPwm3Regs.TBCTL.bit.CTRMODE=TB_COUNT_UP;//CountupEPwm3Regs.TBPRD=EPWM3_TIMER_TBPRD;//SettimerperiodEPwm3Regs.TBCTL.bit.PHSEN=TB_DISABLE;//DisablephaseloadingEPwm3Regs.TBPHS.half.TBPHS=0x0000;//Phaseis0EPwm3Regs.TBCTR=0x0000;//ClearcounterEPwm3Regs.TBCTL.bit.HSPCLKDIV=TB_DIV1;//ClockratiotoSYSCLKOUTEPwm3Regs.TBCTL.bit.CLKDIV=TB_DIV1;//SetupshadowregisterloadonZEROEPwm3Regs.CMPCTL.bit.SHDWAMODE=CC_SHADOW;EPwm3Regs.CMPCTL.bit.SHDWBMODE=CC_SHADOW;EPwm3Regs.CMPCTL.bit.LOADAMODE=CC_CTR_ZERO;EPwm3Regs.CMPCTL.bit.LOADBMODE=CC_CTR_ZERO;//SetComparevaluesEPwm3Regs.CMPA.half.CMPA=EPWM3_MIN_CMPA;//SetcompareAvalueEPwm3Regs.CMPB=EPWM3_MAX_CMPB;//SetCompareBvalue//SetActionsEPwm3Regs.AQCTLA.bit.CAU=AQ_SET;//SetPWM3AoneventB,upcountEPwm3Regs.AQCTLA.bit.CBU=AQ_CLEAR;//ClearPWM3AoneventB,upcountEPwm3Regs.AQCTLB.bit.ZRO=AQ_TOGGLE;//ToggleEPWM3BonZero//InterruptwherewewillchangetheCompareValuesEPwm3Regs.ETSEL.bit.INTSEL=ET_CTR_ZERO;//SelectINTonZeroeventEPwm3Regs.ETSEL.bit.INTEN=1;//EnableINTEPwm3Regs.ETPS.bit.INTPRD=ET_3RD;//GenerateINTon3rdevent//StartbyincreasingthecompareAanddecreasingcompareBepwm3_info.EPwm_CMPA_Direction=EPWM_CMP_UP;epwm3_info.EPwm_CMPB_Direction=EPWM_CMP_DOWN;//Startthecoutat0epwm3_info.EPwmTimerIntCount=0;epwm3_info.EPwmRegHandle=&EPwm3Regs;epwm3_info.EPwmMaxCMPA=EPWM3_MAX_CMPA;epwm3_info.EPwmMinCMPA=EPWM3_MIN_CMPA;epwm3_info.EPwmMaxCMPB=EPWM3_MAX_CMPB;epwm3_info.EPwmMinCMPB=EPWM3_MIN_CMPB;}voidupdate_compare(EPWM_INFO*epwm_info){//Every10'thinterrupt,changetheCMPA/CMPBvaluesif(epwm_info->EPwmTimerIntCount==10){epwm_info->EPwmTimerIntCount=0;//IfwewereincreasingCMPA,checktoseeif//wereachedthemaxvalue.Ifnot,increaseCMPA//else,changedirectionsanddecreaseCMPAif(epwm_info->EPwm_CMPA_Direction==EPWM_CMP_UP){if(epwm_info->EPwmRegHandle->CMPA.half.CMPA<epwm_info->EPwmMaxCMPA){epwm_info->EPwmRegHandle->CMPA.half.CMPA++;}else{epwm_info->EPwm_CMPA_Direction=EPWM_CMP_DOWN;epwm_info->EPwmRegHandle->CMPA.half.CMPA--;}}//IfweweredecreasingCMPA,checktoseeif//wereachedtheminvalue.Ifnot,decreaseCMPA//else,changedirectionsandincreaseCMPAelse{if(epwm_info->EPwmRegHandle->CMPA.half.CMPA==epwm_info->EPwmMinCMPA){epwm_info->EPwm_CMPA_Direction=EPWM_CMP_UP;epwm_info->EPwmRegHandle->CMPA.half.CMPA++;}else{epwm_info->EPwmRegHandle->CMPA.half.CMPA--;}}//IfwewereincreasingCMPB,checktoseeif//wereachedthemaxvalue.Ifnot,increaseCMPB//else,changedirectionsanddecreaseCMPBif(epwm_info->EPwm_CMPB_Direction==EPWM_CMP_UP){if(epwm_info->EPwmRegHandle->CMPB<epwm_info->EPwmMaxCMPB){epwm_info->EPwmRegHandle->CMPB++;}else{epwm_info->EPwm_CMPB_Direction=EPWM_CMP_DOWN;epwm_info->EPwmRegHandle->CMPB--;}}//IfweweredecreasingCMPB,checktoseeif//wereachedtheminvalue.Ifnot,decreaseCMPB//else,changedirectionsandincreaseCMPBelse{if(epwm_info->EPwmRegHandle->CMPB==epwm_info->EPwmMinCMPB){epwm_info->EPwm_CMPB_Direction=EPWM_CMP_UP;epwm_info->EPwmRegHandle->CMPB++;}else{epwm_info->EPwmRegHandle->CMPB--;}}}else{epwm_info->EPwmTimerIntCount++;}return;}//===========================================================================//Nomore.//===========================================================================实验结果:六.问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 与思考如何改变占空比和周期。
本文档为【实验四 PWM 波形产生实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
xxj7584
暂无简介~
格式:pdf
大小:121KB
软件:PDF阅读器
页数:0
分类:
上传时间:2020-07-08
浏览量:17