• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

问个PWM的问题?请高手指点.

DSP2812的PWM单元产生两路PWM脉冲,我想让其中一路PWM7超前(或者滞后)于另一路PWM1,该怎么样实现?大家都是用什么方式塑造这两路脉冲的?
   附图是我想要的两路脉冲:
     我用了EVA中的一路PWM1和EVB中的另一路PWM2,然后采用EvbRegs.CMPR4 = EvaRegs.CMPR1-30,使得PWM7确实超前了PWM1,但是,与此同时带来的问题是使得PWM7的脉宽变大了(比如我只想要0.06T的脉宽),我该怎样减少PWM7的脉宽?
    我用了
    {if (EvbRegs.T3CNT < EvbRegs.CMPR4)
        EvbRegs.ACTRB.bit.CMP7ACT = 0;
    else if(EvbRegs.T3CNT < EvbRegs.CMPR4+45)
       EvbRegs.ACTRB.bit.CMP7ACT = 3;
    else
       EvbRegs.ACTRB.bit.CMP7ACT = 0;}
    目的是想通过强制高或强制低满足我的PWM7,只在EvbRegs.CMPR4    可是新的问题又来了,因为我采用的是连续增/减模式,增半部分和减半部分理论上都会出现小脉冲,我该怎么办?

500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/49/1169701958.jpg?x-oss-process=image/watermark,g_center,image_YXJ0aWNsZS9wdWJsaWMvd2F0ZXJtYXJrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzQwCg,t_20');}" onmousewheel="return imgzoom(this);">
全部回复(2)
正序查看
倒序查看
waidianzi
LV.1
2
2007-08-01 16:44
你好...软件实现起来可能不太好弄,至少我在AVR中想了想,有点麻烦!  我觉得还是在硬件上调会容易的多哈!
0
回复
金狐狸
LV.3
3
2007-08-02 20:15
@waidianzi
你好...软件实现起来可能不太好弄,至少我在AVR中想了想,有点麻烦!  我觉得还是在硬件上调会容易的多哈!
初始值设为不同即可,然后根据你需要的脉宽来调节比较寄存器.它们各自是独立控制的,然后你隔一段时间检查一下初始值的差值,想调节相位调节差值就可以了.
0
回复