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

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

[复制链接]
  • TA的每日心情
    开心
    昨天 07:37
  • 签到天数: 93 天

    [LV.6]常住居民II

    10

    主题

    46

    回帖

    600

    积分

    高级会员

    积分
    600
    发表于 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,而且要及时生效。




    回复 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9357

    回帖

    1万

    积分

    管理员

    积分
    13896
    发表于 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


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9357

    回帖

    1万

    积分

    管理员

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:37
  • 签到天数: 93 天

    [LV.6]常住居民II

    10

    主题

    46

    回帖

    600

    积分

    高级会员

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

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

    点评

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

    使用道具 举报

  • TA的每日心情
    奋斗
    5 天前
  • 签到天数: 143 天

    [LV.7]常住居民III

    29

    主题

    558

    回帖

    2128

    积分

    荣誉版主

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

    就是手册里的


    截图202310221859061647.jpg

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:55
  • 签到天数: 136 天

    [LV.7]常住居民III

    26

    主题

    1316

    回帖

    4101

    积分

    论坛元老

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


    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:37
  • 签到天数: 93 天

    [LV.6]常住居民II

    10

    主题

    46

    回帖

    600

    积分

    高级会员

    积分
    600
     楼主| 发表于 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, 2024-5-10 06:52 , Processed in 0.067335 second(s), 59 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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