最近我在用微控制器设计一个自动测试站时碰到了一个非标准的任务:检测DUT(待测设备)中输出脉冲的有无。你可能觉得这个工作很容易实现,只要在DUT输出上接一个LED就行。闪烁的LED就可以证明脉冲的存在。如果这是你需要做的唯一测试,那么这个方案是可行的。不过在我这个站上,脉冲测试只是一系列测试与测量中的一项。测试站只有在完成所有测试后,才显示最终的结果(合格或不合格)。因此,它应以二进制格式表示每个测试的结果,即合格是yes,失败是no。本设计实例描述了一个解决这个问题的简单方式。
被检测的脉冲进入飞思卡尔MC68HRC908JK1微控制器的(中断请求)脚(图1)。每个脉冲周期为500ms,产生一个外部中断。在2s内至少应发生三个中断。该程序会等待2s,如果在该时间内没有出现外部中断,则它声明脉冲测试失败,PB1脚的红色LED开始发光,测试停止。否则,经过3次中断后,程序开始下一次测试。为将脉冲测试与其它测试分开来评估,本演示程序结束在一个无限循环中,而不是开始下一个测试。当PB0脚的绿色LED发光时,表示脉冲测试成功完成。LED采用有内置限流电阻的型号,如Kingbright公司的 W934GD5V和W934ID5V。
本设计采用一种低端的8bitMC68HRC908JK1微控制器,因为它的成本低,并且能够有10个8bitADC通道。代码清单1是该器件的固件代码。采用20kΩ电阻和10pF电容时,对约为4MHz的振荡频率计算时间延迟。这种方案适用于任何类型的微控制器,因为它使用了标准的汇编指令。你只需要在不同的振荡频率下计算时间延迟。
|