通用测试仪器
大多数微处理器有一些形式的硬件监测器,当硬件在没有注意的情况下停止执行代码时,监测器可将微处理器及其周围的硬件重置到一个已知的状态。但在重置硬件之前,它可能有利于记录固定存储器(NVM)中的监测器溢出事件用于调试。
图1中的电路采用了两个LMC555定时器,为了保存有用的系统数据,它们延迟了硬件的重置。该电路中有微处理器专用的监测器溢出引脚——WDOVF,以及一个I/O引脚。
LMC555定时器设置成他们的单稳态或者最快捷的模式,在这种模式中,在触发脉冲输入引脚感应到一个负脉冲之前,定时器的输出都为低值。触发后,输出引脚在时间TH内变为高值,TH由一个单电阻和电容确定如下:
为了进行恰当的定时操作,在输出高值时期结束之间,触发输入必须再次变为高值。经过TH以后,输出端变为低值,且在另一个负脉冲出现在触发引脚以前都保持低值。定时器也有一个活动的低重置引脚,切断后,不管触发引脚的输入水平,该引脚都保持输出低值。它也为下一个时间周期重置了定时器的内部触发器。
第一个LMC555探测到来自微控制器的监测器溢出触发,提供一个延迟,这允许固件在重置之前记录各种系统参数。第二个LMC555允许固件阻止紧急硬件重置。它是通过使WDOVF_CLEAR信号在最少时间段保持低值来实现的,这一时间的长短是由第一个定时器集成电路用到的内部RC元件决定的。
图2表示的是两个独立的监测器溢出事件发生的时间。第一个事件表明重置脉冲被延迟,没有重置硬件,第二个事件表明在预定的时间延迟过后发出重置脉冲。图示时间是用来自图1的RC元件值和来自Atmel微控制器的监测器溢出脉冲计算的TH,第一个定时器的TH为:
同样,第二个定时器的TH为:
系列电容器C3,上升电阻器R3及二极管D1保证了第二个定时器的触发TRG_2在定时器的输出端OUT_1处发生高-低转变之时都将保持高值。上升电阻器在OUT_1进行高-低转变之后给系列电容器充电,直到达到电源电压。与上升电阻和系列电容相关的RC时间常数要小于第二定时器的输出高值的周期。二极管使得第二定时器的触发引脚的输入电压升为电源电压。
在该例子中,当发生监测器溢出事件时,设定微控制器发出一个相关的短的低活跃度的脉冲输入专门的引脚,产生一个内部中断。一旦发生该事件,代码跳至中断服务程序,运行代码中几个特定的行。这些包括清除中断标记,通过保持WDOVF_CLEAR I/O引脚来阻止紧急硬件重置,将调试数据保存到NVM,防止中断,以及重置监测器溢出定时器。
在这种情况下,硬件监测事件,连同其他由事件决定的信息,都存储在NVM中以便将来查看。当监测定时器停止一秒钟时,它会绕过中断服务程序,最终重置硬件。
全部0条评论
快来发表一下你的评论吧 !