芯片的復(fù)位腳我們再熟悉不過了鲫骗,一般都是拉低電平膨处,并保持一段時(shí)間就可以硬件復(fù)位芯片绳姨。
下面幾個(gè)案例是在實(shí)際調(diào)試芯片中由于復(fù)位腳處理不當(dāng)引起的問題库继。
1.芯片的復(fù)位腳一直處于低電平侍芝,導(dǎo)致cpu與芯片通信不上凉泄,這種問題還是挺好排查的辫呻。
2.一個(gè)gps芯片接到了cpu的串口1清钥,一個(gè)藍(lán)牙芯片接到了cpu的串口2上,這兩種器件單獨(dú)工作都沒有問題放闺,但當(dāng)使用藍(lán)牙后祟昭,再去使用gps,發(fā)現(xiàn)gps搜不到信號怖侦,原來gps的復(fù)位腳接到了藍(lán)牙串口2的流控腳上篡悟,使用藍(lán)牙會(huì)拉低該復(fù)位腳,導(dǎo)致gps搜索不到衛(wèi)星信號匾寝。
3.調(diào)試一款觸摸屏,發(fā)現(xiàn)休眠后芯片無法正常工作搬葬,查到休眠起來后,沒有檢測到中斷艳悔,導(dǎo)致初始化不成功急凰。
由于程序上已經(jīng)有復(fù)位操作,故一直懷疑中斷上的設(shè)置上有問題(該平臺的中斷比較特殊)猜年,偶然發(fā)現(xiàn)將芯片的中斷腳接到低電平一段時(shí)間然后放開抡锈,觸摸屏就工作正常了疾忍。
后來,將觸摸屏的復(fù)位腳接到低電平企孩,芯片也能正常工作锭碳。
拿示波器去量復(fù)位引腳,發(fā)現(xiàn)復(fù)位引腳的確沒有拉低勿璃,然后該平臺有特殊的方式去拉低一個(gè)引腳(這種平臺最令人苦惱擒抛,好好的內(nèi)核函數(shù)不去實(shí)現(xiàn),偏偏自己搞一套api)补疑。
至于拉低中斷腳也能令芯片工作正常歧沪,是由于該中斷觸發(fā)了芯片的軟復(fù)位。這里莲组,這里軟件上的東西也不能全信,最好通過硬件手段去確認(rèn)一下诊胞。
1 單片機(jī)的硬件復(fù)位和門狗復(fù)位都是對單片機(jī)的復(fù)位引腳加一個(gè)復(fù)位電平產(chǎn)生的。
此時(shí)單片機(jī)將進(jìn)行復(fù)位操作:pc=0000h p0=p1=p2=p3=0ffh sp=07h
锹杈,其它特殊寄存器將被清零撵孤。
復(fù)位結(jié)束后,單片機(jī)重新開始運(yùn)行竭望。
2 軟件復(fù)位;一般為了防止程序跑飛 可以在程序存儲器中沒有指令的地方 全部寫入LJMP 0000H
指令邪码。
一旦單片機(jī)運(yùn)行跑飛,進(jìn)入LJMP 0000H
指令區(qū)將還返回單片機(jī)的第一條指令咬清,重新運(yùn)行單片機(jī)的正常程序闭专。
軟件復(fù)位時(shí),P0 P1 P2 P3
和特殊寄存器的內(nèi)容都不會(huì)再改變。這點(diǎn)與硬件復(fù)位不同旧烧。