硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5106|回复: 11
收起左侧

[有问必答] 脉冲计数,用外部中断?还是用定时器的计数功能?优缺点在哪里?

[复制链接]
回帖奖励 1 个金币 回复本帖可获得 1 个金币奖励! 每人限 1 次(中奖概率 10%)

8

主题

11

回帖

35

积分

新手上路

积分
35
发表于 2018-1-10 10:00:23 | 显示全部楼层 |阅读模式
各路大神:
1、我要做一个PM2.5检测仪,前端电路检测到的微粒个数,反映在波形上就是一个一个的脉冲,一个脉冲代表一颗微粒。
2、之前用的430单片机,好处就是它的IO口有外中断功能(一般是P1,P2口),每一个IO引脚有独立的中断标志位,有中断发生,标志位置位,脉冲计数,然后清标志位。
3、担心频率太高计数不准,所以现在换成stm32.

那么问题来了:
1、外部中断计数方案能行不? 一般可以统计的信号的频率能有多高?
2、定时器计数功能该怎么做? 一般可以统计的信号的频率能有多高?
3、有网友给我说类似频率计,也在TI社区论坛提过问,有说用外部中断的,也有说用定时器计数的。我想问 外部中断 和 定时器计数 优缺点,具体在应用当中选择标准。

请各路大神不吝赐教!!!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106882
QQ
发表于 2018-1-10 10:50:08 | 显示全部楼层
区别是定时器计数能计算脉宽。
速度的话能有个几十KHz。上百KHz应该凑合也能跑起来,因为要不断进中断进行计数,所以比较影响系统整体性能。

例子的话就是使用官方给的输入捕获Input Capture或PWM Input均可。

回复

使用道具 举报

8

主题

11

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2018-1-10 14:45:20 | 显示全部楼层
eric2013 发表于 2018-1-10 10:50
区别是定时器计数能计算脉宽。
速度的话能有个几十KHz。上百KHz应该凑合也能跑起来,因为要不断进中断进行 ...

经过测试脉冲信号频率最高接近1MHZ,可以做到1us计1个么?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106882
QQ
发表于 2018-1-10 15:37:34 | 显示全部楼层
雅虎9527 发表于 2018-1-10 14:45
经过测试脉冲信号频率最高接近1MHZ,可以做到1us计1个么?

你的系统不干别的,纯计数的话可以的。
回复

使用道具 举报

39

主题

929

回帖

1051

积分

至尊会员

积分
1051
发表于 2018-1-10 18:01:10 | 显示全部楼层
中断方式的话,每个脉冲中断一次,如果频率过高,CPU会处理不过来。1KHz的频率每1ms中断一次,1MHz的频率会导致1us中断一次,CPU能处理过来吗?高频率合适采样定时模式,低频率适合中断模式。
其实最好的办法是用FPGA来处理,我曾帮别人用PSOC5做过频率检测,用是用verilog编程处理的,又准又快。不过新手最好别这样用,有些难度,我现在也只是皮毛。
回复

使用道具 举报

73

主题

1195

回帖

1414

积分

至尊会员

积分
1414
发表于 2020-6-1 17:53:07 | 显示全部楼层
eric2013 发表于 2018-1-10 15:37
你的系统不干别的,纯计数的话可以的。

1Khz的频率使用中断方式技术脉冲,硬汉哥,stm32f103可以的吧?
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2020-6-2 10:05:27 | 显示全部楼层
外部中断,要用标志位判断来的是上升沿还是下降沿。用定时器计数,直接计算脉冲的周期
回复

使用道具 举报

73

主题

1195

回帖

1414

积分

至尊会员

积分
1414
发表于 2020-6-2 12:27:26 | 显示全部楼层
hejun96 发表于 2020-6-2 10:05
外部中断,要用标志位判断来的是上升沿还是下降沿。用定时器计数,直接计算脉冲的周期

是的。。
回复

使用道具 举报

19

主题

371

回帖

428

积分

高级会员

积分
428
发表于 2020-6-3 21:43:32 | 显示全部楼层
2个CPU,一个引脚少便宜的专门用来计数统计
回复

使用道具 举报

210

主题

1044

回帖

1684

积分

至尊会员

More we do, more we can do.

积分
1684
发表于 2020-6-8 14:06:06 | 显示全部楼层
信号源质量够好的话,用TIM的外部时钟模式,直接计数,低于主频的频率都可以。
回复

使用道具 举报

1

主题

92

回帖

100

积分

初级会员

积分
100
发表于 2020-6-8 15:24:13 | 显示全部楼层
我测发动机转速,用的计数
回复

使用道具 举报

41

主题

215

回帖

338

积分

高级会员

积分
338
发表于 2021-6-9 08:46:16 | 显示全部楼层
哈哈,挖个坟。
楼主的问题是测量脉冲的个数。大家都放飞自我,想到测频率了。
外部中断计数需要进中断,频率高了单片机就做不了其它事情。
将外部脉冲作为定时器的时基,然后每隔1秒读出定时器的cnt,这个可以。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-9 00:47 , Processed in 0.334382 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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