永发信息网

DSP PWM波占空比如何改变?

答案:3  悬赏:40  手机版
解决时间 2021-02-08 15:17
  • 提问者网友:我的未来我做主
  • 2021-02-07 16:04

* MCRA|=0x0FC0;

* ACTRA=0x0666;

* DBTCONA=0x0000;

* CMPR1=0x0100;

* CMPR2=0x0300;
* CMPR3=0x0500;

* T1PER=0x0600;

* COMCONA=0x8200;

* T1CON=0x1000;

如上,请问如何改能使发出10%,50%,90%占空比的PWM波?请诸位大侠帮忙!!
最佳答案
  • 五星知识达人网友:罪歌
  • 2021-02-07 16:15
首先要明白占空比的意义,就是高电平与整个周期的比,可以改变触发值

* CMPR2=0x0300;
* CMPR3=0x0500;
这个就是37.5%的占空比,


* CMPR2=0x0100;
* CMPR3=0x0900;
这个就是10%的占空比,


* CMPR2=0x0500;
* CMPR3=0x0500;
这个就是50%的占空比,


* CMPR2=0x0900;
* CMPR3=0x0100;
这个就是90%的占空比,

应该是这样,楼主试试,如果不对请告诉我,呵呵
全部回答
  • 1楼网友:未来江山和你
  • 2021-02-07 17:30
好久没弄这方面的了。印象里,改变比较周期寄存器的值,当定时器的值与其相同时,PWM输出状态改变,总的周期是定时器的定时值。根据这个原理,改变比较寄存器的值与定时器的最大值的比例。可以改变相应的占空比。这个在书里有比较详细的实现方法。
  • 2楼网友:人间朝暮
  • 2021-02-07 16:44
用eva事件管理器产生 重点看哈那张的内容 占空比有公式计算 自己动手做了才知道是怎么回事 #include "dsp28_device.h" #include "dsp28_globalprototypes.h" uint32 intcount; int increase; int decrease; void main(void) { initsysctrl(); //初始化系统函数 dint; ier = 0x0000; //禁止cpu中断 ifr = 0x0000; //清除cpu中断标志 initpiectrl(); //初始化pie控制寄存器 initpievecttable(); //初始化pie中断向量表 initgpio(); //初始化gpio口 initev(); //初始化ev intcount=0; //t1定时器周期中断计数器 increase=0; //占空比逐渐变小的变化趋势标志位 decrease=1; //占空比逐渐变大的变化趋势标志位 piectrl.pieier2.bit.intx4=1; //使能pie中断,t1定时器中断位于int2.4 ier|=m_int2; eint; //开全局中断 ertm; //开实时中断 evaregs.t1con.bit.tenable=1; //使能定时器t1计数操作 while(1) { } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯