测脉冲频率几种方法的比较

用单片机测频率脉冲可以用外中断+定时器、定时器的输入捕获、或编码器模块(例如LPC 的QEI可实现对电机的转速、位置测量和报警)

单片机的外中断对外部脉冲的触发条件有2种:

  • 边沿触发:适合脉冲,比较常用
  • 电平触发:使用时要:进入时关闭中断,退出时再开中断以防止电平持续时间过长,ISR还未处理完中断又发生中断导致的反复中断触发。

外中断+定时器法:

  • 外中断完成对外部脉冲的计数,定时器完成设定测量周期,定时器的中断优先级要比外中断高以实现在测量周期到达后关闭外中断。
  • 缺点:利用单片机的内部资源多(外中断、定时器),主要靠软件处理完成,速度慢,CPU利用率低。
  • 适合条件:频率不高的场合。

定时器的输入捕获法:

  • 输入捕获的概念:通过设定相应PIN脚(定时器的输入捕获通道)的触发条件(边沿触发、电平触发),在触发事件发生时,内部自动将定时器计数器的值送入捕获寄存器,通过计算两次捕获寄存器的差值就得到输入脉冲信号的频率。
  • 触发时刻通过查询捕获标志寄存器的状态或可选产生的中断进行操作
  • 优点:单片机内部硬件自动完成,效率高、速度快、占用内部外围资源和cpu占用率低。
  • 注意:如果外部脉冲频率比较高,最好通过DMA进行缓冲防止数据因来不及处理而被覆盖掉;如果定时器的计数溢出,这时候可以取其补码。

定时器的输出匹配:

  • 概念:通过设定匹配值。当定时器的计数值与匹配值相等时触发PIN脚(定时器输出匹配通道)产生:高低电平、或翻转动作。实际上是将具有时间控制要求与IO控制的功能整合。

编码器测脉冲:比如LPC的单片机有此模块可有硬件自动完成对外部脉冲的计数、对电机的速度位置的检测和报警控制。

时间: 2024-10-17 08:49:08

测脉冲频率几种方法的比较的相关文章

电工知识:3种方法测电容的好坏,万用表三个档位的巧妙应用

电工知识:3种方法测电容的好坏,万用表三个档位的巧妙应用 2018-01-23 00:23 我是大俵哥 话不多说直接干货 三种测量方法,分别用万用表的电容档,电阻档,二极管蜂鸣档(大多是合体的一个档位) 电容单位法拉,千进制毫微纳皮 1,电容档 首先电容放电,小容量耐压低的电容简单正负极短接几秒就行,大电容的话就接了电阻接个其他负载都可以,简单放电以后,把万用表打到合适的量程,参考电容上的容量. 红黑笔接触电容的两级,如果是电解电容就红笔接正黑笔接负极. 10微法的电容,我们可以选择200微法量

用Fiddler可以设置浏览器的UA 和 手动 --Chrome模拟手机浏览器(iOS/Android)的三种方法,亲测无误!

附加以一种软件的方法是:用Fiddler可以设置浏览器的UA 以下3种方法是手动的 通过伪装User-Agent,将浏览器模拟成Android设备. 第一种方法:新建Chrome快捷方式 右击桌面上的Chrome浏览器图标,在弹出的右键菜单中选择“复制”,复制一个图标副本到桌面.右击该副本,选择“属性”,打开相应的对话框,在“目标”文本框的字符后面添加以下语句:“--user-agent="Android"”,如下图: 注意user前面是两个“-”,并且“chrome.exe”与“--

linux下配置ip地址四种方法(图文方法)

配置ip地址四种方法,方便学习linux的朋友 参考学习:ifconfig命令详解  http://zhaoshilei.blog.51cto.com/6455149/1895771 (1)Ifconfig命令   第一种使用ifconfig命令配置网卡的ip地址.此命令通常用来零时的测试用,计算机启动后 ip地址的配置将自动失效.具体用法如下.Ipconfig  ethx   ipadd    netmask      x.x.x.x. 其中ethx中的x代表第几快以太网卡,默认第一块为0.i

分析iOS Crash文件:符号化iOS Crash文件的3种方法

转自:http://www.cocoachina.com/industry/20140514/8418.html 转自wufawei的博客 当你的应用提交到App Store或者各个渠道之后,请问你多久会拿到crash文件?你如何分析crash文件的呢? 上传crash文件 你的应用应当有模块能够在应用程序crash的时候上传crash信息. 要么通过用户反馈拿到crash文件,要么借助自己或第3方的crash上传模块拿到crash文件. 今天要分析的场景是你拿到用户的.crash文件之后,如何

Fedora安装qt总结四种方法

在fedora上安装qt有四种方法,本人由于初次接触fedora,所以还是耐心的把三个方法都测试了一遍. 1.  下载源码,手动编译,选择路径安装,请参考<fedora15下搭建QT开发环境及编译QT>,博主亲测通过. 优点:       可以自主选择需要的qt版本可以自主选择安装路径 缺点: 编译耗时,其次需要手动安装很多依赖库. 2.  通过yum命令安装,请参考<yum安装qt>,这个其实和第四种方法本质是一样的,一个命令式,一个通过界面而已. sudo yum instal

ubuntu/linux mint 创建proc文件的三种方法(一)

在做内核驱动开发的时候,可以使用/proc下的文件,获取相应的信息,以便调试. 大多数/proc下的文件是只读的,但为了示例的完整性,都提供了写方法. 方法一:使用create_proc_entry创建proc文件(简单,但写操作有缓冲区溢出的危险): 方法二:使用proc_create和seq_file创建proc文件(较方法三简洁): 方法三:使用proc_create_data和seq_file创建proc文件(较麻烦,但比较完整): 示例四:在proc文件中使用内核链表的一个示例(用的方

方框列数随着浏览器宽度改变而改变的几种方法

方框列数随着浏览器宽度改变而改变的几种方法 一,使用浮动float <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>考察浮动</title> <style type="text/css"> #content { background-color: red; position

mysql数据库改名的三种方法

前不久去面试,被问到Innodb引擎的表如何改数据库名,当时我也只回答了MyISAM改如何操作,被一些细节问题打败,真是操蛋. 如果表示MyISAM那么可以直接去到数据库目录mv就可以. Innodb完全不行,自己测试过,会提示相关表不存在. 第一种方法: RENAME database olddbname TO newdbname 这个是5.1.7到5.1.23版本可以用的,但是官方不推荐,会有丢失数据的危险 第二种方法: 1.创建需要改成新名的数据库.2.mysqldum 导出要改名的数据库

php读取网络文件curl,fsockopen,file_get_contents,file,fopen几种方法

php读取网络文件 curl, fsockopen ,file_get_contents 几个方法的效率对比 最近需要获取别人网站上的音乐数据.用了file_get_contents函数,但是总是会遇到获取失败的问题,尽管按照手册中的 例子设置了超时,可多数时候不会奏效: $config['context'] = stream_context_create(array(‘http’ => array(‘method’ => “GET”,   ’timeout’ => 5//这个超时时间不