打印
[PSoC™]

PWM 修改比较值的常用方法

[复制链接]
559|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
IFX_Lingling|  楼主 | 2024-9-2 15:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

直接调用的PWM_WriteCompare()对比较值进行修改,这不是一个规范的操作,会导致glitch的产生。PWM 运行状态下,修改PWM比较值的正确方法是使能PWM的Switch 功能和Compare的SWAP功能,然后把PWM的OV输出与Switch输入短接在一起,然后每次都把要修改的Compare值写到Compare buffer中(writeCompareBuffer)去,这样在当前周期结束后,OV信号会触发之前写入的compare 值复制到compare register 并且马上起效。

comparebuf的数据是switch事件发生的时候才会被交换到compare寄存器,也就是我们控制的API:PWM_WriteCompare(CompareVal); 所以设计代码的时候考虑在CC事件发生的时候SWAP这个数,也就是把buffer里面的数据copy出来,然后下一个周期生效。如果需要写入新的数,
那就是TC事件发生的时候写入,CC事件发生之后交换。这样时序上面比较清晰(这个功能的示例代码看Archive02)。 PWM Buffer.cyprj.Archive02.zip (442.56 KB)

使用特权

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

本版积分规则

认证:
简介:关于英飞凌——我们致力于打造一个更加便利、安全和环保的世界,在赢得自身成功发展的同时,积极践行企业社会责任。

105

主题

189

帖子

5

粉丝