当前位置: 代码迷 >> 单片机 >> 怎么同时测四路频率
  详细解决方案

怎么同时测四路频率

热度:106   发布时间:2016-04-28 14:58:50.0
如何同时测四路频率?
我用的PIC单片机,怎么同时测四路不同频率呢。频率都是10-----100HZ之间,谢谢!
------解决方案--------------------
如果信号输入整形好了的话,接到4个I/O,打开I/O中断,在中断程序中计数,计10S然后取平均
------解决方案--------------------
单片机的I/O口,有些是可以触发中断的,需要查你的器件手册
------解决方案--------------------
不用中断也行,反正频率低,那就一直检测I/O口,高低电平转换一轮就计一个数
------解决方案--------------------
频率是方波,直接接PIC:IO口读取.
频率不是波,整形成方波后,接PIC:IO口读取.
------解决方案--------------------
需要同时检测吗,用pic这么低级的芯片我觉的一路一路测就差不多了。
------解决方案--------------------

有四通道的ADC,一般采用分时查询的原理,参照手册设置一下就行。

http://www.ti.com/product/ads4449
------解决方案--------------------
引用:
恩,这个一个方波。
IO读取怎么来做呢?

最简单的,保存I/O口状态,每次读I/O,和保存的状态比较,一样就跳过,不一样则更新保存的状态,新状态为0或1时,计数加一
------解决方案--------------------
引用:
恩,这个一个方波。
IO读取怎么来做呢?


需要用到定时器,中断。检测到上升沿时中断,然后定时器开始计数,确定两个上升沿之间的时间(及周期)。
------解决方案--------------------
这是要做示波器的节奏?
------解决方案--------------------
这个不难。

用一个定时器,最好可以中断。不能也没关系,可以轮询检测定时器是否到时,如果到时,调用定时器中断服务函数。

定时器的中断频率(采样频率)至少是所测频率上限的 2 倍。更高一些则误差更小。

在中断服务中:

1 使能定时器下一次计时。
2 顺序检测 4 路 GPIO 输入的电平,用 4 个全局变量计数连续为高或低的计数值。也就是,如果连续则加 1,如果改变则在复制此值到另一变量后恢复到 0。
3 检测完 4 路,如果某一路电平发生了跳变,就可以计算这一路的半周期了,即定时器的时长乘以计数值。乘以 2 就是周期,再取倒数,就是频率。

------解决方案--------------------
这个不难。

用一个定时器,最好可以中断。不能也没关系,可以轮询检测定时器是否到时,如果到时,调用定时器中断服务函数。

定时器的中断频率(采样频率)至少是所测频率上限的 2 倍。更高一些则误差更小。

在中断服务中:

1 使能定时器下一次计时。
2 顺序检测 4 路 GPIO 输入的电平,用 4 个全局变量计数连续为高或低的计数值。也就是,如果连续则加 1,如果改变则在复制此值到另一变量后恢复到 0。
3 检测完 4 路,如果某一路电平发生了跳变,就可以计算这一路的半周期了,即定时器的时长乘以计数值。乘以 2 就是周期,再取倒数,就是频率。
非常同意楼上的,孩纸,动手去试吧。。。有抄袭的嫌疑。。。对不住楼上了
  相关解决方案