芯片的复位脚我们再熟悉不过了,一般都是拉低电平,并保持一段时间就可以硬件复位芯片。
下面几个案例是在实际调试芯片中由于复位脚处理不当引起的问题。
1.芯片的复位脚一直处于低电平,导致cpu与芯片通信不上,这种问题还是挺好排查的。
2.一个gps芯片接到了cpu的串口1,一个蓝牙芯片接到了cpu的串口2上,这两种器件单独工作都没有问题,但当使用蓝牙后,再去使用gps,发现gps搜不到信号,原来gps的复位脚接到了蓝牙串口2的流控脚上,使用蓝牙会拉低该复位脚,导致gps搜索不到卫星信号。
3.调试一款触摸屏,发现休眠后芯片无法正常工作,查到休眠起来后,没有检测到中断,导致初始化不成功。
由于程序上已经有复位操作,故一直怀疑中断上的设置上有问题(该平台的中断比较特殊),偶然发现将芯片的中断脚接到低电平一段时间然后放开,触摸屏就工作正常了。
后来,将触摸屏的复位脚接到低电平,芯片也能正常工作。
拿示波器去量复位引脚,发现复位引脚的确没有拉低,然后该平台有特殊的方式去拉低一个引脚(这种平台最令人苦恼,好好的内核函数不去实现,偏偏自己搞一套api)。
至于拉低中断脚也能令芯片工作正常,是由于该中断触发了芯片的软复位。这里,这里软件上的东西也不能全信,最好通过硬件手段去确认一下。
1 单片机的硬件复位和门狗复位都是对单片机的复位引脚加一个复位电平产生的。
此时单片机将进行复位操作:pc=0000h p0=p1=p2=p3=0ffh sp=07h
,其它特殊寄存器将被清零。
复位结束后,单片机重新开始运行。
2 软件复位;一般为了防止程序跑飞 可以在程序存储器中没有指令的地方 全部写入LJMP 0000H
指令。
一旦单片机运行跑飞,进入LJMP 0000H
指令区将还返回单片机的第一条指令,重新运行单片机的正常程序。
软件复位时,P0 P1 P2 P3
和特殊寄存器的内容都不会再改变。这点与硬件复位不同。