打印
[技术问答]

如果正确开启和关闭003的PWM

[复制链接]
1236|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lyping|  楼主 | 2018-8-27 16:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
每次开启PWM的时候,数据不能立即更新,要等下个周期才正常,另外关闭的时候也会出现波形不完整的情况,现在是用到2路PWM取反一路中心对齐做互补PWM,总是在开启和关闭的时候波形不完整,有用过的大佬指点一下。
沙发
jiekou001| | 2018-8-27 18:57 | 只看该作者
是的,所有的PWM都是这样,要等当前周期完成才行。

使用特权

评论回复
板凳
lyping|  楼主 | 2018-8-27 19:06 | 只看该作者
现在主要的问题还在这里,开启了2路PWM,那怎么判断2路的波形都已经正常完成呢

使用特权

评论回复
地板
lyping|  楼主 | 2018-8-27 19:08 | 只看该作者
这是每次关闭的程序
        while(LOAD);
        PWMCON0=0x00;                                                //关闭PWM
        set_SFRPAGE;
        PIOCON1=0x00;                                                        //清除P04 PWM3  P05  PWM2
        clr_SFRPAGE;
        P04=0;
        P05=0;
        PNP=0x00;                                                                //关闭´PWM取反

使用特权

评论回复
5
lyping|  楼主 | 2018-8-27 19:18 | 只看该作者
这是每次的开启程序,每次打开PWM方向不同,所以需要取反不同的PWM
       while(LOAD);
        CLRPWM=0;
        PWMPH=0x00;                                                       
        PWMPL=0x68;
        if(OUT_PWM_COUNT&1)
        {
                PWM2H = 0x00;                                               
                PWM2L = 0x3d;                                        //PWM2                 2D
                                               
                PWM3H = 0x00;                                               
                PWM3L = 0x2d;                                        //PWM3                3D
                                               
                PNP=0x04;                                        //取反PWM2   PNP=0x04;
        }
        else
        {
                PWM2H = 0x00;                                               
                PWM2L = 0x2d;                                        //PWM2         2D
                                                       
                PWM3H = 0x00;                                               
                PWM3L = 0x3d;                                        //PWM3         3D
                                               
                PNP=0x08;                                        //取反PWM3   PNP=0x08;
        }
        set_SFRPAGE;
        PIOCON1=0x0c;                                        //P04 PWM3  P05  PWM2
        clr_SFRPAGE;
                                       
        PWMCON0=0x80;                                        //打开PWM

使用特权

评论回复
6
lyping|  楼主 | 2018-8-27 19:26 | 只看该作者
本帖最后由 lyping 于 2018-8-27 21:23 编辑

有时候启动的波形会这样,同时导通了,后面的又是正常的
有时候关的时候波形会这样,不是完整的

140105b83df3db11b6.png (29.39 KB )

140105b83df3db11b6.png

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

25

帖子

1

粉丝