很多工业与仪表系统都需要测量脉冲输入的持续时间,如转速传感器、外部系统的门控与选通脉冲,以及PWM(脉冲宽度调制)输入的频率等。设计者是采用片上定时器和边沿驱动的中断。但是,如果这些元件不可用,可以用片上的串行同步接收器做这类测量。
可以根据需要的时序精度,设定串行接收器的波特率。接收器每8 bit后中断微控制器。可以在应用程序中插入脉冲宽度采集例程,用于读取ISR(中断服务例程)接收到的字节。它会统计和累加接收到的0和1字节,以测量出进入脉冲的持续时间(图1)。
算法测量a的是两个连续上升沿之间的持续时间。当微控制器收到一个既不是0xff也不是0x00的字节时,就检测到了一个上升沿或下降沿。如果一个字节小于0x80H (100 000b),则该字节表示一个上升沿。如果字节等于或大于该值,则该字节表示一个下降沿。
前上升沿将位计数器重置为上升沿字节中拖尾1的个数,方法是将向右移位。位计数器在每个字节来到时加8,也包括标志下降沿的那个字节。当计数器接收到后上升沿(由下一个上升沿字节标志,它大于0x80H但小于00H)时,它再次统计该字节中领先0的个数,并将此数加到累加位计数器上。此时的累加位计数与脉冲链的时间周期相关,其因数等于波特率。
图2表示一个200Hz的脉冲链,两个上升沿之间的时间为5ms。波特率为256kbaud。在一个测量周期内,假设前上升沿的标志为0011 1111b。微控制器将其向右移位,统计拖尾1的数目,位计数器初始化为6。这个计数对应的时间约为23.43 μs。
接下来,上升沿字节前的每个字节都使位计数器加8。简单计算表明,共有159字节,即1272位。此时,计算的总位数为1278位,包括在第一个上升沿字节中收到的6个1。
现在,脉冲链遇到了拖尾的上升沿字节,其值为0011 1111b。做这个计数时,需要将0左移,统计为两个位。两上升沿之间的总位数就是1280bit。在256 kbaud速率下,这个数字精确地对应于5 ms或200 Hz。
可以根据自己的应用需求,对这种位计数概念作修改。如果只需要测量低周期的脉冲,需要探测一个下降沿,并累计位数,直到遇见一个上升沿。可以将这种概念用于读取进入的PWM信号,方法是读取一个已知进入脉冲频率的高周期。
关键字:测量脉冲宽度 微控制器 串行端口
引用地址:
可测量脉冲宽度的微控制器串行端口
推荐阅读最新更新时间:2024-05-02 21:23
STM32单片机串口空闲中断+DMA接收不定长数据
在上一篇文章STM32单片机串口空闲中断接收不定长数据中介绍了利用串口空闲中断接收不定长数据,这种方式有一个问题就是串口每接收到一个字节就会进入一次中断,如果发送的数据比较频繁,那么串口中断就会不停打断主程序运行,影响系统运行。那么能不能在串口接收数据过程中不要每接收一个数据中断一次,只有在一帧数据接收结束完成后只中断一次? 用串口的空闲中断加上DMA功能,就可以实现每帧数据接收完成后只中断一次,而在数据接收过程中,由DMA存储串口接收到的每个字节。 关于串口的空闲检测和DMA在STM32参考手册中有详细介绍。 下面看如何初始化串口空闲中断和 DMA。 void uart2_init( u16 baud )
[单片机]
51单片机分频、机器周期、时钟周期、状态周期
(1)振荡周期=时钟周期:是指为单片机提供时钟脉冲信号的振荡源的周期。即晶振 (2)状态周期:每个状态周期为时钟周期的2倍,是振荡周期经二分频后得到的。 详解:在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示) (3)机器周期:一个机器周期包含6个状态周期S1~S6,也就是12个时钟周期。在一个机器周期内,CPU可以完成一个独立的操作 机器周期 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干
[单片机]
以89C51单片机为核心器件的自动控制系统编码译码显示实验电路设计
引 言 在日常数字逻辑电路实验中编码译码显示实验电路是编码、译码、显示三个电路的综合运用, 在数字逻辑实验电路中具有重要的地位, 在实验的过程中, 时常会出现显示结果的抖动, 经研究出现这种现象主要原因是:编码电路的编码信号输入采用手工拨盘方式, 产生的编码输入信号往往不稳定; 另外, 电路控制性能较差,不能达到自动复位, 为此有必要对现有电路进行改进,在电路的设计上采用89C51 单片机为控制电路制作而成, 自动提供稳定编码输入信号, 显示结果稳定性和电路控制性能大大提升, 提高了教学实验质量。 1 编码译码显示实验电路的基本结构 编码译码显示电路的基本结构如图1 所示, 主要由控制电路、编码信号发生器、编码译码显示电路等组
[单片机]
10KM远距多个单片机的主从方式串行通信分析
一、问题的提出 51系列单片机具有方便的串行通信功能,当串行口以方式2或方式3工作时,置SM2一l。此种情况下,仅当串行口接收到的第9位数据RBS为1时,才激活中断标志RI;否则不产生中断,信息被丢失。利用串行口的这个特性,便可实现主机一分机的串行通信。 对于分机一主机的通信,可以采用每台分机对主机的一对一通信。这种方式大大增加了主机的串行接口电路和传输电缆。如采用图1- 47所示结构,分机O~N的输出串接在一起,则会造成传输线2上信号紊乱,甚至会烧毁分机串行输出口。 另外,采用TTL电平通信,传输距离只有几米;如果采用RS一232C,传输距离也不过几十米,达不到10 km范围内的传输要求。 为解
[单片机]
PIC单片机(PIC16F877A)DS18B20温度传感器驱动程序
#include pic.h #define uchar unsigned char #define uint unsigned int #define rs_h (PORTC|=0x01) #define rs_l (PORTC&=0xfe) #define rs_o (TRISC&=0xfe) #define rw_h (PORTC|=0x02) #define rw_l (PORTC&=0xfd) #define rw_o (TRISC&=0xfd) #define en_h (PORTC|=0x04) #define en_l (PORTC&=0xfb) #define en_o (TRISC&=
[单片机]
51单片机学习笔记——基于汇编语言(1)
该系列文章基于80C51单片机,Keil2(这个版本是比较古老,不过keil2和keil5其实区别不大) 1、80C51系列单片机硬件结构 在开始讲单片机之前,相信大家已经对进制转换与码值已经有了一定的了解,如果完全没学过,可以随便弄本C语言啥的书,一般应试教育的计算机入门类教材第一章都会讲这个2333。 学单片机我们就要先了解一下它的硬件结构 1.1 内部结构 单片机的硬件组成有 1、1个8bit的CPU 2、1个片内振荡器和时钟电路 3、程序存储器,4KB(其实我用的有64K,相信大部分人也是,4k估计是Intel原始设计)的掩膜ROM,用于存放程序、原始数据和表格 4、数据存储器 5、64KB总线扩展控制器(
[单片机]
SAM4E单片机之旅——12、USART
清楚了UART的用法之后,现在来研究一下USART的用法。和上一次差不多,这次也通过USART的串口来实现和PC的通信。和上一次不同的是,USART本身就有接收超时的功能,所以这次就不用TC了。 USART和UART相比,功能多了许多,可以配置的选项也更多。虽然最主要的差别是USART可以实现同步通信,但PC的串口没有这个功能,所以我们就先不拿这个功能开刀了。 一、 思路 实现思路和上一次使用UART的PDC差不多,区别只是这次直接使用USART的接收超时功能,而不用TC。 二、 电路图 使用的USART口为USART1,这个串口在上次使用的DBGU口的旁边。 有个使能引脚连在PA23上。使用时需要将PA23拉为低电平才
[单片机]
2021年MCU排名出炉,前五大厂商继续扩大市场份额
用于嵌入式控制和计算功能的MCU,正在伴随着嵌入式和传感器的自动化程度加大而进一步普及,同时,缺货风潮使得MCU在2021年 的普及是供应商无法跟上因 Covid-19 病毒大流行引发的 2020 年全球经济衰退而在 2021 年强劲反弹的关键因素。 MCU 销售额在 2019 年因全球经济疲软下跌 7%,然后在 2020 年继续下跌 2% ,但是MCU 销售额在 2021 年反弹,增长 27%,达到创纪录的 202 亿美元。创自 2000 年以来最高增速。MCU 的平均售价 (ASP) 在 2021 年攀升了 12%,同时MCU 出货量受产业链影响在 2021 年仅增长 13% 至 312 亿颗。 根据 IC Insig
[单片机]