芯片的復(fù)位腳我們?cè)偈煜げ贿^(guò)了,一般都是拉低電平,并保持一段時(shí)間就可以硬件復(fù)位芯片。
下面幾個(gè)案例是在實(shí)際調(diào)試芯片中由于復(fù)位腳處理不當(dāng)引起的問(wèn)題。
1.芯片的復(fù)位腳一直處于低電平,導(dǎo)致cpu與芯片通信不上,這種問(wèn)題還是挺好排查的。
2.一個(gè)gps芯片接到了cpu的串口1,一個(gè)藍(lán)牙芯片接到了cpu的串口2上,這兩種器件單獨(dú)工作都沒(méi)有問(wèn)題,但當(dāng)使用藍(lán)牙后,再去使用gps,發(fā)現(xiàn)gps搜不到信號(hào),原來(lái)gps的復(fù)位腳接到了藍(lán)牙串口2的流控腳上,使用藍(lán)牙會(huì)拉低該復(fù)位腳,導(dǎo)致gps搜索不到衛(wèi)星信號(hào)。
3.調(diào)試一款觸摸屏,發(fā)現(xiàn)休眠后芯片無(wú)法正常工作,查到休眠起來(lái)后,沒(méi)有檢測(cè)到中斷,導(dǎo)致初始化不成功。
由于程序上已經(jīng)有復(fù)位操作,故一直懷疑中斷上的設(shè)置上有問(wèn)題(該平臺(tái)的中斷比較特殊),偶然發(fā)現(xiàn)將芯片的中斷腳接到低電平一段時(shí)間然后放開(kāi),觸摸屏就工作正常了。
后來(lái),將觸摸屏的復(fù)位腳接到低電平,芯片也能正常工作。
拿示波器去量復(fù)位引腳,發(fā)現(xiàn)復(fù)位引腳的確沒(méi)有拉低,然后該平臺(tái)有特殊的方式去拉低一個(gè)引腳(這種平臺(tái)最令人苦惱,好好的內(nèi)核函數(shù)不去實(shí)現(xiàn),偏偏自己搞一套api)。
至于拉低中斷腳也能令芯片工作正常,是由于該中斷觸發(fā)了芯片的軟復(fù)位。這里,這里軟件上的東西也不能全信,最好通過(guò)硬件手段去確認(rèn)一下。
1 單片機(jī)的硬件復(fù)位和門(mén)狗復(fù)位都是對(duì)單片機(jī)的復(fù)位引腳加一個(gè)復(fù)位電平產(chǎn)生的。
此時(shí)單片機(jī)將進(jìn)行復(fù)位操作:pc=0000h p0=p1=p2=p3=0ffh sp=07h,其它特殊寄存器將被清零。
復(fù)位結(jié)束后,單片機(jī)重新開(kāi)始運(yùn)行。
2 軟件復(fù)位;一般為了防止程序跑飛 可以在程序存儲(chǔ)器中沒(méi)有指令的地方 全部寫(xiě)入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ù)位不同。