zuu 发表于 2024-5-20 15:53:16

STC8G CCP捕捉的一点疑问 | 已解决



程序基本上是参考例程。我用的是系统时钟24M测试,,频率高检测没问题150K也可以检测到,但是频率低,就检测不到了360Hz以下,检测不了

cnt 应该是在一个周期内,计数器的溢出次数 。。。例程是没有对cnt进行过任何清0操作,,那这个不就是会cnt越来越大吗。。当然可能程序的意图是,就让他自己慢慢变大。反正前后二次相减,是可以抵消的,是吧。。相对时间差



/////////////////////////////////////
发现问题了,没开溢出中断,唉

梁工 发表于 2024-5-20 17:31:39

使用1us做PWM时钟,则可以捕捉1~65535us的时间。
如果使用溢出中断来扩展计数,则要处理好临界问题,就是刚好捕捉后,进去读取数据时出现溢出。

zuu 发表于 2024-5-22 09:33:54

梁工 发表于 2024-5-20 17:31
使用1us做PWM时钟,则可以捕捉1~65535us的时间。
如果使用溢出中断来扩展计数,则要处理好临界问题,就是刚 ...

如果我用STC8H,PWM捕获,我要测量最小的频率5HZ,,
PWM好像没有溢出中断,怎么做溢出中断,还是只能控制在65536以内,降低PWM主频。

梁工 发表于 2024-5-22 10:51:51

zuu 发表于 2024-5-22 09:33
如果我用STC8H,PWM捕获,我要测量最小的频率5HZ,,
PWM好像没有溢出中断,怎么做溢出中断,还是只能控 ...

最小5Hz,就是最大200ms,可以使用4~10us的周期做PWM时钟,对应最大捕获时间262ms~655ms。加上溢出中断就要考虑临界情况(捕获后马上发生溢出),处理好也是可以的,但麻烦。捕获分辨率16位,对于大部分的应用都够了,设置合适的PWM时钟即可。

zuu 发表于 2024-5-22 14:17:44

梁工 发表于 2024-5-22 10:51
最小5Hz,就是最大200ms,可以使用4~10us的周期做PWM时钟,对应最大捕获时间262ms~655ms。加上溢出中断就 ...

恩,所以,还是要和我上面说的,控制PWM的时钟,控制在65535以内。。我试试

qqzgq 发表于 2024-7-27 10:24:19

即便控制在65536之内,如果计数器不清零,终究还是有溢出的现象啊。

_奶咖君_ 发表于 2024-7-27 10:29:03

qqzgq 发表于 2024-7-27 10:24
即便控制在65536之内,如果计数器不清零,终究还是有溢出的现象啊。

这个就看你怎么用了,,可以选择捕获到信号的边沿之后,让计数器重新计数然后到下一个边沿,,这段时间在这个65535之内就OK就能计算出来这两个边沿之间的时间。
页: [1]
查看完整版本: STC8G CCP捕捉的一点疑问 | 已解决