完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
要在epwm1a和epwm1B产生频率不同的波形应该怎么编程?下面的程序产生的占空比时相同的,应该怎么修改下列程序?
void InitEPwm1() { //Modulatedwave(); EPwm1Regs.TBPRD = 30000; // 设置开关周期 EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // 相位置零 EPwm1Regs.TBCTR = 0x0000; // 计数器清零 //时间基准控制寄存器 EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // 向上波形比较 EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 禁止相位装载 EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // 高速时间基准分频 EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; // 时间基准分频 //计数比较控制寄存器设置 EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every ZERO EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // Set actions EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; EPwm1Regs.AQCTLA.bit.CBU = AQ_CLEAR; // Set PWM1A on Zero EPwm1Regs.AQCTLB.bit.CAU = AQ_CLEAR; // Set PWM1B on Zero EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;} void SPWM_cal(void) { A1_dc=Chopperwave*sin(100*PI*t+0); if(A1_dc<0) A1_dc=0; EPwm1Regs.CMPA.half.CMPA = 1000; if(1000+A1_dc*30000<=30000) EPwm1Regs.CMPB = 1000+A1_dc*30000; else EPwm1Regs.CMPB = A1_dc*30000-29000;} |
|
相关推荐
13个回答
|
|
if(1000+A1_dc*30000<=30000)
EPwm1Regs.CMPB = 1000+A1_dc*30000; 应该是这里出问题了,你应该串口打印一下A1_dc和A1_dc*30000的值查一下,只要在你的主函数中更改EPwm1Regs.CMPB使得与CMPA不一样,就会1a和1b占空比不同 |
|
|
|
|
|
|
|
加入串口SCI的程序,将板子与电脑通过串口连接起来,调用printf("")函数,打印你需要查看的量,电脑打开串口调试助手,就可以看到了
|
|
|
|
这个值我用示波器观察就可以了,我想问的是怎么进行软件编程让1A和1B输出的占空比不同。 |
|
|
|
EPwm1Regs.CMPB与CMPA不一样时,占空比就不一样了,波形也就不一样,你写的SPWM程序看不出你的意思
|
|
|
|
从程序上看 A1_DC=0 比较寄存器赋值是一样的 你先看看A1_DC值是多少 带着仿真器看
|
|
|
|
是的,A1_DC=0时,EPwm1Regs.CMPA.half.CMPA = 1000;是一个固定的值 |
|
|
|
这么说我可以给1A,1B不同的值,我将程序改成这样,报错。为 EPwm1Regs.CMPA.half.CMPA可能为fioat值 void SPWM_cal(void) { A1_dc=Chopperwave*sin(100*PI*t+0); A2_dc=Chopperwave*sin(100*PI*t+0.1); if(A2_dc*30000<=30000) EPwm1Regs.CMPA.half.CMPA = A1_dc*30000; else EPwm1Regs.CMPB = A1_dc*30000-29000;} if(A1_dc*30000<=30000) EPwm1Regs.CMPB = A1_dc*30000; else EPwm1Regs.CMPB = A1_dc*30000-29000;} 按理说这样就应该改变了值啊 |
|
|
|
|
|
|
|
根据计数方式,设置A、B的值就可以产生想要的波形
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
使用DSP28377D外扩RAM写入一个地址数据相邻地址数据也会改变
1178 浏览 1 评论
嵌入式操作教程_数字信号处理_音频编解码:3-6 AAC音频解码实验
479 浏览 0 评论
数字信号处理实验操作教程:3-3 mp3音频编码实验(AD7606采集)
1364 浏览 0 评论
嵌入式DSP教学实验箱操作教程:2-20 数模转换实验(模拟SPI总线输出电压值)
1643 浏览 0 评论
目前在2837x系列用的最多的、性能最好、性价比最高的是哪一款?
1388 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-4 21:28 , Processed in 0.438079 second(s), Total 81, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号