关于DSPIC33FJ16GS504 PWM死区问题

2020-02-06 10:07发布

PWM 是设置互补输出,中心对称模式,    PWMCON1bits.ITB = 1;                   //=1 PHASEx做为PWM的周期寄存器 =0 PTPER做为PWM的周期寄存器   只有选择了ITB=1 才能选中心对称PWM
    PWMCON1bits.DTC = 0;                    //死区允许/正死区
    PWMCON1bits.CAM = 1;                    //中心对称PWM 模式
    PWMCON1bits.FLTIEN = 0;                //禁止故障中断
    PWMCON1bits.TRGIEN = 0;                //特殊中断


    IOCON1bits.PENH = 1;                    // PWM1H引脚为PWM 模式
    IOCON1bits.PENL = 1;                   // PWM1L引脚为PWM 模式
    IOCON1bits.PMOD = 0;                   // PWM引脚为互补输出模式   
    IOCON1bits.OVRENH = 0;                                                         
    IOCON1bits.OVRENL = 0;                                                        
    IOCON1bits.POLH = 0;                                                           
    IOCON1bits.POLL = 0;
  IOCON1bits.OVRDAT = 0;
DTR1    =  0;    //PWMH死区            
ALTDTR1 = 80;   // PWML死区 50=800NS 100=1.6US  

死区的时间是按要求出来了,一切都正常,  问题来了,我的PWMH脚一直是高电平了,或者说占空比在100%  为啥PWML引还出死区信号,, PWMH脚一直高电平了,PWML却出死区的波型。 ?
两路互补PWM信号,设置了死区时间,如果一路(PWMH)占空比100%,那么另一路(PWML)占空比应该是0%。
但是另一路(PWML)却会再出现窄脉冲,死区时间。关掉死区设置它就没有了。
不明白为啥会这样,请问高手怎么去解决?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
FORDREAM0
1楼-- · 2020-02-06 10:57
我的理解是:当你的PWMH为高时,PWML窄脉冲持续时间(1般为几个微秒)就是你插入的死区时间,如果你关闭死区时间功能,这个窄脉冲自然就没有了,你上面描述的是正常现象吧
死去时间就是防止PWMH为高时,PWML马上变低从而导致H桥同时导通而短路,所以每个周期的PWMH为高时,PWML有一段低,是为死区时间,
不知道我这样说对不对
FORDREAM0
2楼-- · 2020-02-06 11:30
笔误:是每个周期开始时PWMH为高,PWML先保持一段高电平,是为死区时间,之后再变为低电平
lihaizhao821122
3楼-- · 2020-02-06 12:28
 精彩回答 2  元偷偷看……
rifjft
4楼-- · 2020-02-06 13:11

  话说,这类芯片的PWM模块不是可以动态调整端口的电平吗。像MC系列的PWM模块,应用在步进驱动中的衰减调整或者是无刷驱动中的消磁控制,都可以借用端口电平的动态改写功能。所以说要固定PWM模块的输出端口电平,最好是用模块本身的功能实现。 另外,会不会是这芯片本身限制不能把占空比设定最低或最高?
 

一周热门 更多>