32G12K128,技术问题 PWM端口配置,计数器异常,求大佬|已解决
芯片:32G12K128系统频率:33.1776Mhz
环境:KEIL 251
PWM端口配置为脉冲捕获,当配置CCn捕获上升沿,并连接到一固定脉冲,计数器读出来的值异常。
当修改CC1捕获下降沿,此时计数器好像就正常了。
其他尝试:
换成CC4端口捕获固定脉冲的上升沿,计数器的值依旧异常。
但当脉冲有变化的话时候,例如人为得将捕获端口接到高电平,计数器的值看起来也正常,是数值比较大的数;
把捕获端口设置为高阻输入,测量固定脉冲时计数器值仍然异常。
除变量名称等,以上代码和STC32手册的测量脉冲周期示例代码基本一致 同一组PWM定时器既捕获又输出的情况下容易出现错乱。
建议使用延时产生脉冲的情况下再试试 王昱顺 发表于 2025-1-20 11:00
同一组PWM定时器既捕获又输出的情况下容易出现错乱。
建议使用延时产生脉冲的情况下再试试 ...
谢谢解答,测量外部脉冲就没问题了。不是同一组PWM也会有问题。 tity 发表于 2025-1-20 15:07
谢谢解答,测量外部脉冲就没问题了。不是同一组PWM也会有问题。
测量时,PWM并不知道你的脉冲是外部还是内部产生的,所以不应该有区别,再仔细检查下。 因为同组PWM捕获测量的周期值与PWM输出的周期相同,都是ARRH,ARRL。
由于同一组的PWM输出和捕获同步,如果直接反馈接入,则每次捕获都刚好PWM溢出,所以计算出的周期值始终是0。
解决方法:
1. 同一组PWM里面如果要输出和捕获同时进行,需要将ARR设置为FFFF。
2. 修改捕获计数方法:cnt = ((cnt1 - cnt2) % (PWMA_ARR + 1));
3. 捕获/输出分开两组PWM,例如:PWMA捕获,PWMB输出。
使用王工建议的用延迟产生脉冲这个方法,确实计数就正常了。
我以为同组PWM的意思是PWM1下不同的引脚,原来是PWMA{:4_167:}...误会了。
现在明白多了,谢谢各位大佬,受益匪浅。
页:
[1]