找回密码
 立即注册
查看: 1255|回复: 6

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

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:263
  • 最近打卡:2025-04-03 13:38:29

10

主题

52

回帖

1354

积分

金牌会员

积分
1354
发表于 2023-10-21 16:56:57 | 显示全部楼层 |阅读模式

请教一下高级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,而且要及时生效。




回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-05-03 10:05:34

718

主题

1万

回帖

1万

积分

管理员

积分
15646
发表于 2023-10-21 18:04:10 | 显示全部楼层
今天研发休息,周一上班肯定有研发同事回答您
可先看下 山东大学 的教学视频 PWM 部分

截图202310211802527171.jpg
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


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-05-03 10:05:34

718

主题

1万

回帖

1万

积分

管理员

积分
15646
发表于 2023-10-21 18:05:27 | 显示全部楼层
截图202310211805237319.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:263
  • 最近打卡:2025-04-03 13:38:29

10

主题

52

回帖

1354

积分

金牌会员

积分
1354
发表于 2023-10-22 15:49:36 | 显示全部楼层

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

点评

就是手册里的 [attachimg]24884[/attachimg]  详情 回复 发表于 2023-10-22 18:59
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:217
  • 最近打卡:2024-11-15 09:12:27

29

主题

722

回帖

2790

积分

荣誉版主

积分
2790
发表于 2023-10-22 18:59:19 | 显示全部楼层
清风*** 发表于 2023-10-22 15:49
这个图不错,好像在STC8的手册里没有见到过

就是手册里的


截图202310221859061647.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 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周期。


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:263
  • 最近打卡:2025-04-03 13:38:29

10

主题

52

回帖

1354

积分

金牌会员

积分
1354
发表于 2023-10-23 15:06:26 | 显示全部楼层
乘风*** 发表于 2023-10-23 10:17
若设置PWMA_CCMR1=0x60后,即OC1PE位置0,程序执行时,是不是只要遇到对PWMA_CC1R赋值后,即可生效,
==是
...

明白,thx
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 12:49 , Processed in 0.142296 second(s), 91 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表