首页 资讯 应用 高压 设计 行业 低压 电路图 关于

单片机

旗下栏目: PLC 嵌入式 单片机 DCS

使用IO口中断测量脉冲频率时应该注意的问题

单片机 | 发布时间:2018-11-08 | 人气: | #评论# | 本文关键字:IO口中断测量脉冲频率
摘要:情景描述: 外部脉冲接到OKI482的IO口中断,使用IO中断测量脉冲频率(周期)。 配置一个16位的定时器,定时器定时周期为1s,定时器时钟源为32768Hz。 在IO中断中读取定时器计数器的值TM1C和T

情景描述:
外部脉冲接到OKI482的IO口中断,使用IO中断测量脉冲频率(周期)。
配置一个16位的定时器,定时器定时周期为1s,定时器时钟源为32768Hz。
在IO中断中读取定时器计数器的值TM1C和TM0C,脉冲到来的时间为 (TM1D*256 + TM0D + 系统秒*32768),单位为1/32768秒。
在调试中发现程序计算得到的结果(时间值)和TM1D、TM0D的值相差20。程序如下:
1. c = TM1C;
2. c <<= 8; 3. c += TM0C; 4. temp = time1*32768; 5. c += temp; 原因在于程序第三行读取TM0C的值的时候该寄存器的值已经发生了变化。所以应该进入中断后首先读取寄存器的值,然后在进行处理。而且,应该先读取TM0D,后读取TM1D,因为TM0D是计数器的第八位。 代码如下: 1. d = TM0C; 2. c = TM1C; 3. c <<= 8; 4. c += d; 5. temp = time1*32768; 6. c = c + temp; 小结,与使用430硬件捕获的区别。 在使用430硬件捕获的时候,当脉冲上升沿或下降沿来临的时候定时器计数器的值会由硬件拷贝到另一个读取寄存器,进入捕获中断后软件只需要直接读取该寄存器即可。

责任编辑:IO口中断测量脉冲
首页 | 电气资讯 | 应用技术 | 高压电器 | 电气设计 | 行业应用 | 低压电器 | 电路图 | 关于我们 | 版权声明

Copyright 2017-2018 电气自动化网 版权所有 辽ICP备17010593号-1

电脑版 | 移动版 原创声明:本站大部分内容为原创,转载请注明电气自动化网转载;部分内容来源网络,如侵犯您的权益请发送邮件到[email protected]联系我们删除。