首页 理论教育 嵌入式系统实践:项目2周期检测器

嵌入式系统实践:项目2周期检测器

时间:2023-11-19 理论教育 版权反馈
【摘要】:外部有一5V TTL电平的脉冲周期信号,频率范围为1~100kHz,脉冲信号输入至TPM2的通道0引脚TPM2CH0,试编写程序,测量出脉冲信号的周期并显示。该电路与8.5.1电子秒表项目类似,采用1个4连排数码管用于显示,选择PTE端口连接驱动器74LS244输出a~dp段码,PTB端口的PTB0~PTB3连接数码管的位码选通端,使用TPM2CH0引脚连接外部周期脉冲信号,该引脚在LQFP_44引脚封装的MC9S08AC16单片机中为第6引脚。

嵌入式系统实践:项目2周期检测器

1.实践要求与方案设计

(1)要求

脉冲信号周期检测器电路示意图如图8-11所示。外部有一5V TTL电平的脉冲周期信号,频率范围为1~100kHz,脉冲信号输入至TPM2的通道0引脚TPM2CH0,试编写程序,测量出脉冲信号的周期并显示。

978-7-111-50417-7-Chapter08-25.jpg

图8-11 脉冲信号周期检测器电路示意图

(2)方案设计

要测量引脚TPM2CH0上脉冲信号的周期,可把TPM2CH0引脚设定在输入捕捉模式,对信号相邻的两个上升沿或下降沿进行捕捉。捕捉到第一个上升或下降沿时保存此时的计数值到16位变量Capl_Num,捕捉到第二个上升或下降沿时保存此时的计数值到另一16位变量Cap2_Num,两者之差即为在一个脉冲信号周期内的TPM2计数器计数个数N。若信号周期较长,有可能在捕捉一次一个上升或下降沿时定时器产生溢出,这时简单的相减就没有意义,需要对数据进行处理以得到准确的周期计数个数N。本例中输入脉冲信号频率范围为1~100kHz,显示周期单位为μs。

通常TPM2的计数器周期是已知的,它可以由总线时钟、固定系统时钟或外部时钟进行1、2、4、8、16、32、64或128分频得到。我们可以选择总线时钟作为TPM模块时钟,使用默认4MHz总线时钟,计数器分频因子设为4,则计数器的计数周期为1μs,被测脉冲信号的周期就为Nus。输入捕捉功能测量信号周期原理图如图8-12所示。

2.硬件电路设计

按照图8-11所示的脉冲信号周期检测器电路图完成电路连接。该电路与8.5.1电子秒表项目类似,采用1个4连排数码管用于显示,选择PTE端口连接驱动器74LS244输出a~dp段码,PTB端口的PTB0~PTB3连接数码管的位码选通端,使用TPM2CH0引脚连接外部周期脉冲信号,该引脚在LQFP_44引脚封装的MC9S08AC16单片机中为第6引脚。

978-7-111-50417-7-Chapter08-26.jpg

图8-12 输入捕捉功能测量信号周期原理图(www.xing528.com)

3.软件设计与调试

按照设计方案中对定时器及其通道的初始化配置,我们选择4MHz总线时钟,并对其进行4分频,定时时间10ms,使能定时溢出中断。定时器2通道0使用在上升沿输入捕捉模式并使能通道中断,得到如下初始化函数。

978-7-111-50417-7-Chapter08-27.jpg

程序在计算脉冲信号一个周期内的计数周期个数Cap_N时,若仅考虑Cap_N<0xFFFF的情况,也就是假定被测脉冲信号的周期处于(1~65535)个计数周期内的情况,此时Cap_N=Cap2_Num-Capl_Num。当出现Cap2_Num<Capl_Num的情况,也就是第2次捕捉之前发生了TPM2计数溢出,所以要在计算结果上补上TPM2的溢出数0xFFFF,即Cap_N=Cap2_Num-Capl_Num+0xFFFF。

若不考虑Cap_N<0xFFFF的限制,即信号周期较长超过了定时器的溢出时间,那么要进行计算Cap_N值可以按下式进行计算。

Cap_N=Cap2_Num-Capl_Num+(TPM2溢出次数×溢出周期模数

我们可以在通道中断中进行两次捕捉值Cap2_Num和Capl_Num的保存操作,在溢出中断中对溢出次数T2OV_Num进行统计,在主函数中实现周期计数值计算与显示控制,具体程序代码如下。

978-7-111-50417-7-Chapter08-28.jpg

978-7-111-50417-7-Chapter08-29.jpg

978-7-111-50417-7-Chapter08-30.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈