zhangmw536 发表于 2023-3-14 15:30:11

INT3测量频率信号问题 | 已解决,用 CCP 模块测量

我用的STC8G1K08A发现用P5.5作为外部中断INT3测量频率信号时,大于100H时正常,当输入信号小于100Hz后出现测量结果为倍频的现象。请指点

梁工 发表于 2023-3-14 16:03:53

基本可以确定,信号 有抖动导致。
外中断检测是硬件自动实现的,每个主频时钟周期都检测是否出现下降沿,出现则设置中断标志,申请中断,所以外中断响应脉冲就是2T的时间,如果是20MHz主频,则能检测到的最小中断脉冲宽度为0.1us,所以一点毛刺都能引起中断。
解决方法:增加简单的RC滤波即可。比如最高频率为10KHz,则RC值=30us左右即可。

神农鼎 发表于 2023-3-14 16:09:53



下面是 STC8G1K08A-36I-SOP8的管脚图

神农鼎 发表于 2023-3-14 16:12:37



P5.5 有 CCP2/PCA2/PWM2,建议改用 CCP/PCA功能测量外部信号


zhangmw536 发表于 2023-3-15 12:37:42

学到了,谢谢梁工的解答,谢谢神农的资料,谢谢了。我回去试试

zhangmw536 发表于 2023-3-24 14:52:40

信息反馈:本人采用PCA捕获方式,顺利完成脉宽测量任务,非常准确,再也没有出现倍频现象。不论用12分频或1分频都取得良好效果(f=0.2Hz~10kHz)。也希望其他开发者明白:用STC测量脉宽或者脉冲计数都不要用外部中断方式,PCA/CCP是专业的选择。

梁工 发表于 2023-3-24 16:46:21

zhangmw536 发表于 2023-3-24 14:52
信息反馈:本人采用PCA捕获方式,顺利完成脉宽测量任务,非常准确,再也没有出现倍频现象。不论用12分频或1 ...

使用 INT0+Timer0 或 INT1+Timer1 的门控方式测量高电平脉冲也是非常准确和方便的。
楼主遇到的问题是因为信号有抖动(毛刺),低频时更常见,而外中断反应又非常快,所以会误测,通常用个合适的RC就可以滤掉。

gjf 发表于 2023-12-25 17:01:23

stc8h可以用Timer3+int1来测量高电平脉冲宽度吗?

_奶咖君_ 发表于 2023-12-25 17:29:24

gjf 发表于 2023-12-25 17:01
stc8h可以用Timer3+int1来测量高电平脉冲宽度吗?

STC8H 直接看PWM章节,,里面有输入捕获的内容

gjf 发表于 2023-12-25 17:56:39

STC8H 已经用做PWM输出了,还能做输入检测吗?pwm输出和输入捕捉功能可以同时使用吗?
页: [1] 2
查看完整版本: INT3测量频率信号问题 | 已解决,用 CCP 模块测量