打印
[技术问答]

SC95FW40系列PWM波形更新疑问

[复制链接]
850|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 cortextcs 于 2019-6-27 15:27 编辑

以下是PWM占空比寄存器地址和寄存器每一位的介绍。12位 PWM的占空比分为高4位和低8位。按照13.3章的说法,“更改PDTxy的值,占空比不会立即改变,而是等待本周期结束,在下个周期改变”。







举个比较坏的情况,
分为两种情况:
(1)软件先更新高4位,再更新低4位。
比如当前的PWM占空比值是0x01FF。那就是高4位是0x01,低8位是0xFF。在某个时刻,我要修改占空比的值为0x0200,高4位是0x02,低8位是0x00。但很有可能我刚更新完高4位,PWM的计数器刚好计数一个周期,那这个时候更新PWM值岂不是变成0x02FF了?因为低8位没来得及更新,等低8位再次更新的时候,PWM实际要再等待下个周期再更新。

(2)软件先更新低8位,再更新高4位。
比如当前的PWM占空比值是0x0200。那就是高4位是0x02,低8位是0x00。在某个时刻,我要修改占空比的值为0x01FF,高4位是0x01,低8位是0xFF。同样的,我可能更新完低8位后,高4位没来得及更新,PWM的计数器更好完成一个周期。此时PWM的应该就是0x02FF。

疑问:
是不是需要按照规定的先后顺序写入?或者是哪里有介绍我没仔细看。


使用特权

评论回复

相关帖子

沙发
赛元MCU3| | 2019-6-27 15:58 | 只看该作者
赛元SC92F系列MCU应用指南.pdf (1.15 MB)
附件为应用指南,
请看一下PWM注意事项

当前周期不受到影响,
下一个周期才起效的。
注意先 低, 再 高 设置顺序。

使用特权

评论回复
板凳
cortextcs|  楼主 | 2019-6-27 16:45 | 只看该作者
赛元MCU3 发表于 2019-6-27 15:58
附件为应用指南,
请看一下PWM注意事项

那应该就没问题,也就是有先后顺序。内部硬件机制就是更新了低位还不算,一定是要更新了高位,然后在下一个周期才更新

使用特权

评论回复
地板
dengzhengbing| | 2019-8-5 11:27 | 只看该作者
#define PWMRD_40      (*(unsigned int  volatile xdata *)0x740)                //占空比调节寄存器
#define PWMRD_41      (*(unsigned int  volatile xdata *)0x742)                //占空比调节寄存器
PWMRD_41        =        ENP|200;

使用特权

评论回复
5
dengzhengbing| | 2019-8-5 11:28 | 只看该作者
#define        ENP                                        0x8000                        //PWM通道不反相输出
#define        INV                                        0xc000                        //PWM通道反相输出
#define PWMRD_40      (*(unsigned int  volatile xdata *)0x740)                //占空比调节寄存器
#define PWMRD_41      (*(unsigned int  volatile xdata *)0x742)                //占空比调节寄存器
PWMRD_41        =        ENP|200;       

使用特权

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

本版积分规则

1

主题

6

帖子

0

粉丝