单片机检测波形频率

[复制链接]
1851|9
 楼主| 陶志峰 发表于 2015-5-13 07:54 | 显示全部楼层 |阅读模式
各位大神:
本人请教一个问题。用单片机IO口加一个定时器。检测外部波形的频率(0Hz-1.5KHz)什么样的程序设计思想误差最小。
ayb_ice 发表于 2015-5-13 08:00 | 显示全部楼层
直接定时中断查询就可以了
 楼主| 陶志峰 发表于 2015-5-13 08:06 | 显示全部楼层
只一个定时器。主循环里面要用这个定时器。只能公用这一个定时器。没有单独的检测边沿触发然后定时开启。
gx_huang 发表于 2015-5-13 13:03 | 显示全部楼层
这个说容易也容易,说难也难。
低频,测量单个脉冲的周期;高频,测量一定时间内的脉冲个数。
 楼主| 陶志峰 发表于 2015-5-13 13:51 | 显示全部楼层
有谁写过 给一段码学习下 感谢
 楼主| 陶志峰 发表于 2015-5-13 14:25 | 显示全部楼层
gx_huang 发表于 2015-5-13 13:03
这个说容易也容易,说难也难。
低频,测量单个脉冲的周期;高频,测量一定时间内的脉冲个数。 ...

红外万能学习解码程序,优化的学习算法,学习型遥控插座——那里高就啊
gx_huang 发表于 2015-5-13 14:40 | 显示全部楼层
陶志峰 发表于 2015-5-13 14:25
红外万能学习解码程序,优化的学习算法,学习型遥控插座——那里高就啊 ...

上述只是业余爱好而已
cauhorse 发表于 2015-5-13 19:44 | 显示全部楼层
可以了解一下“MT测速法”。:)
叶伤 发表于 2015-5-15 11:18 来自手机 | 显示全部楼层
本帖最后由 叶伤 于 2015-5-15 11:25 编辑

定时器定时10ms,开启外部中断0。

在UC浏览器标准版一回车就回复了,靠。

u16  test_fre()
{
    cnt=0;
    tmr_标志寄存器=5;   //计算50ms脉冲数
    tmr_start();//开定时器
    ext_start();//开外部中断
    while(tmr_标志寄存器);//等待50ms结束
    ext_stop();//关外部中断
    return cnt;//返回脉冲数
}

void ext() interrupt ?
{
    cnt++;
}

void tmr() interrupt ?
{
    …;//重装定时器
    tmr_标志寄存器--;
}
   
叶伤 发表于 2015-5-15 11:27 | 显示全部楼层
f.l.g会被整成标志寄存器标志寄存器?么节奏
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

29

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部