本帖最后由 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。
疑问:
是不是需要按照规定的先后顺序写入?或者是哪里有介绍我没仔细看。
|