电子说
在调试MCU时,经常会遇到复位的情况。要找到复位的原因,我们就需要了解到有哪些因素会导致MCU复位。
1.外部输入复位
当我们改变MCU的reset引脚的电平,并保持一段时间,就可以复位MCU。
外部输入复位是重启MCU最有效的方式了。
2.上电复位(LVD)
我们发现MCU不接外部复位电路,也能正常启动起来,这就是上电复位在发挥作用。
如下图,当电源电压达到POR释放电压后,MCU开始内部初始化,一定时间后开始执行用户程序。
当然,如果电源电压掉到了POR检测电压以下时,MCU会被复位住。
3.低电压复位(LVD)
当我们希望MCU不在某一电压以下运行时,开启LVD是一个很好的选择。
当电源电源下降到LVD检测电压以下时,MCU会被复位住。
当电源电压上升的LVD释放电压以上时,MCU会被释放,重启运行。
4.看门狗复位(WDT)
当MCU因为干扰等因素导致进入死循环,这个时候需要一种机制让MCU重新启动,这种机制就是看门狗。
在开启看门狗后,如果不及时喂狗,那么它将毫不犹豫的复位MCU,使其重新开始执行用户程序。
5.系统时钟复位
如果系统时钟的设置,使MCU进入死锁状态,那么就会发生系统时钟复位。
6.修整数据复位
低电压复位(LVD)的检测值是可以由用户的选择的。
根据用户选择,得到修整数据,从而调整电阻梯以形成不同电压的比较值。
如果这个修整数据因为噪声等原因发生改变,那么将发生修整数据复位。
7.闪存待机复位
当设置闪存flash进入待机状态,如果这个时候试图去读取闪存flash中的数据,那么就会发生闪存待机复位。
除了第一种外部输入复位为外部因素外,其他复位都是内部因素。
当发生复位时,我们如何判断是哪一种因素导致的呢?
如果是使用东芝TLCS-870/C1系列的TMP89FS60,可以通过它的寄存器IRSTSR来判断。
IRSTSR是一个特殊的只读寄存器,它只能被外部输入复位或者上电复位(POR)初始化。
当发生复位时,我们去查看这个寄存器哪个位被置位了,就能知道是哪种内部因素导致的复位了。
如果发生复位后,这个寄存器没有被置位,那么我们就要去考虑是外部输入复位导致的,还是上电复位(POR)导致的了。
责任编辑人:CC
全部0条评论
快来发表一下你的评论吧 !