清风迎明月 发表于 2023-10-21 16:56:57

关于高级PWM比较捕获输出时预装载的疑问


请教一下高级PWM使用的问题
捕获/比较模式寄存器 1(PWMA_CCMR1)的使用时,其中的OC1PE位是输出比较1预装载使能位。
选择PWM1模式时:


若设置PWMA_CCMR1=0x60后,即OC1PE位置0,程序执行时,是不是只要遇到对PWMA_CC1R赋值后,即可生效,

若设置PWMA_CCMR1=0x68后,即OC1PE位置1,程序执行时,是不是只要遇到对PWMA_CC1R赋值后,只有事件更新时才会将赋值加载给当前寄存器?


但是手册又有个说明:
注 2:为了操作正确,在 PWM 模式下必须使能预装载功能。但在单脉冲模式下(PWMn_CR1 寄存器的 OPM=1),它不是必须的。
注:OC1PE 必须在通道打开时(PWMA_CCER1 寄存器的 CC1E=1)才是可写的。



这是不是说PWM模式下必须要使用预装载功能?必须PWMA_CCMR1=0x68,不能用PWMA_CCMR1=0x60?
但是我想随时写入PWMA_CC1R,而且要及时生效。




神农鼎 发表于 2023-10-21 18:04:10

今天研发休息,周一上班肯定有研发同事回答您
可先看下 山东大学 的教学视频 PWM 部分

https://www.stcaimcu.com/forum.p ... 3184&extra=page%3D1

一,STC8H系列 1T 8051中文数据手册更新 ,2023/10/18
http://www.stcmcudata.com/STC8F-datasheet/STC8H.pdf

二,STC32G12K128 系列32位8051中文数据手册更新 ,2023/10/18
http://www.stcmcudata.com/STC8F-datasheet/STC32G.pdf

三,STC32F12K54 系列32位8051中文数据手册更新 ,2023/10/18
http://www.stcmcudata.com/STC8F-datasheet/STC32F12K54.pdf


神农鼎 发表于 2023-10-21 18:05:27


清风迎明月 发表于 2023-10-22 15:49:36

神农鼎 发表于 2023-10-21 18:05


这个图不错,好像在STC8的手册里没有见到过

gentleman 发表于 2023-10-22 18:59:19

清风迎明月 发表于 2023-10-22 15:49
这个图不错,好像在STC8的手册里没有见到过

就是手册里的{:4_168:}




乘风飞扬 发表于 2023-10-23 10:17:33

若设置PWMA_CCMR1=0x60后,即OC1PE位置0,程序执行时,是不是只要遇到对PWMA_CC1R赋值后,即可生效,
==是
若设置PWMA_CCMR1=0x68后,即OC1PE位置1,程序执行时,是不是只要遇到对PWMA_CC1R赋值后,只有事件更新时才会将赋值加载给当前寄存器?
==是

但是手册又有个说明:
注 2:为了操作正确,在 PWM 模式下必须使能预装载功能。但在单脉冲模式下(PWMn_CR1 寄存器的 OPM=1),它不是必须的。
注:OC1PE 必须在通道打开时(PWMA_CCER1 寄存器的 CC1E=1)才是可写的。
==在PWM模式下建议使能预转载功能,避免在输出PWM周期内修改了PWMA_CCRx寄存器导致当前脉冲周期异常(已输出的半个周期+修改后的脉冲)。
==预装载功能可以通过以下指令设置:
PWMA_CCMR1=0x60;
PWMA_CCER1=0x01;   //CC1E=1
PWMA_CCMR1|=0x08;

这是不是说PWM模式下必须要使用预装载功能?必须PWMA_CCMR1=0x68,不能用PWMA_CCMR1=0x60?
但是我想随时写入PWMA_CC1R,而且要及时生效。
==在PWM模式下建议使能预转载功能,生效时间差最多也就一个PWM周期。


清风迎明月 发表于 2023-10-23 15:06:26

乘风飞扬 发表于 2023-10-23 10:17
若设置PWMA_CCMR1=0x60后,即OC1PE位置0,程序执行时,是不是只要遇到对PWMA_CC1R赋值后,即可生效,
==是
...

明白,thx
页: [1]
查看完整版本: 关于高级PWM比较捕获输出时预装载的疑问