可编程计数器的时长捕获与数据安全设计
2021-08-16李红波
仪表技术与传感器 2021年7期
关键词:方法
李红波,李 盛,王 洋,陈 恒
(西京学院理学院,陕西西安 710123)
0 引言
电子计数器是最为常见的测量时间间隔的电子测量仪器之一[1-3],常被部署在可编程器件中,具有良好的应用效果[4-5]。尤其是嵌在MCU中的可编程计数器与捕获电路相结合来测量时间间隔,特别适用于信号脉宽、信号周期等测量的嵌入式应用系统中[6-7]。然而,计数器的固有二进制位数少(16位计数器最为常见),捕获测时的最大时长有限,不能满足长时甚至超长时间间隔的测量。相比硬件扩展计数器位数的方法[8],采用软件方法来扩展计数器的位数则更适合基于MCU的系统[9],但是软件扩展中又存在计数器捕获中断和溢出中断协作不良问题,会导致捕获时长数据出现致命性错误。本文在分析计数器位数扩展的方法基础上,首次明确了安全问题的根源,指出计数器位数扩展中存在着新的工作态——竞争态,并利用工作态检测法和RTOS系统的多任务事件同步机制防范和解决中断事件的时序问题,纠正了数据错误问题。
1 可编程计数器的捕获测时原理
可编程计数器的捕获结构如图1(a)所示。计数器工作时,16位加1计数器CNT一直在统计内部时钟源fosc脉冲数,当捕获信号EXS先后到来时,或上升沿或下降沿,依次顺序触发,并记录事件时刻的CNT计数值到捕获寄存器CAPREG,通过相邻两次的捕获值做差来获得事件间隔的计数值,如图1(b)中,在时刻tn-1和tn先后出现了捕获事件ICPS,捕获值分别是CapRegn-1和CapRegn,那么间隔计数值就等于CapRegn减去CapRegn-1。……
登录APP查看全文
