在本系统中,T/C1编程为定时方式时,在12MHz晶振下其最大定时时间只有65.536ms,需采用软件来扩展计数器的容量。即计数器每溢出中断一次,片内RAM的内容加一计数,这样大大扩了单片机的计数范围。但同时也引入了中断响应的时间误差,我们称之为“软件误差”。频率计的核心是时间基准的正确性,因此在中断后重置定时器时间常数时,不能简单地采用重置办法。从单片机的中断响应系统及其响应过程可知:(1)定时器每次溢出中断时,WAIT语句必须执行完才能响应,该条指令的执行时间为2μs,我们取其平均延迟时间为1μs;(2)CPU响应中断到执行中断服务程序首条指令至少需3个完整的机器周期,即延时3μs;(3)中断服务程序中实际的定时时间是在执行完时间常数的装载指令后才开始,两条装载指令占用4μs。根据以上分析。每次中断后,将延迟约8μs后才开始定时。实际获得的定时时间必须考虑到8μs的延迟,该频率计采用软件补偿的处理方法来降低其影响。由于软件修正相当方便在仪器调试中可作进一步的调整,因此基本上可消除软件误差。
频率计根据被测信号频率的大小,软件控制自动切换频率检测时间,或自动转换为周期测量,其软件设计采用模块化结构设计,程序设计与调试都很方便,功能扩充也很灵活。单片机上电复位后,首先执行主程序,完成有关芯片和定时器的初始化,设置数据缓冲区、显示方式、数据计数器初值及频率初测方式等。开中断后,随时检测外部中断和定时器所发出的中断请求信号,一旦有则转入相应的中断服务程序,否则返回显示程序,显示所测的频率值。
5. 结束语
本文通过比较以往电子计数测频原理、电子计数测周期原理的分析,结合单片机定时/计数器的工作原理,给出了等精度测量原理以及软件误差的消除方法。实现起来简单可靠且性能稳定、精度高、性价比低等优点。