利用單片機和CPU開發(fā)產品,在軟件開發(fā)時一般會采用很多通用的抗干擾技術,如軟件陷阱、指令允余、看門狗和數(shù)字濾波等等,但實際運用中還是很不可靠,如經常莫名其妙地死機、程序跳段、I/O數(shù)據(jù)錯誤等,并且故障的重復性很不確定,也不是周期性地重復。往往用戶使用中出現(xiàn)故障,但又無法重現(xiàn),反復檢查硬件也沒查出原因,很讓人頭痛。
其實,防止干擾最有效的方法是去除干擾源、隔斷干擾路徑,但往往很難做到,所以只能看單片機抗干擾能力夠不夠強了。單片機干擾最常見的現(xiàn)象就是復位;至于程序跑飛,其實也可以用軟件陷阱和看門狗將程序拉回到復位狀態(tài);所以單片機軟件抗干擾最重要的是處理好復位狀態(tài)。
一般單片機都會有一些標志寄存器,可以用來判斷復位原因;另外也可以自己在RAM中埋一些標志。在每次程序復位時,通過判斷這些標志,可以判斷出不同的復位原因;還可以根據(jù)不同的標志直接跳到相應的程序。這樣可以使程序運行有連續(xù)性,用戶在使用時也不會察覺到程序被重新復位過。
可以在定時中斷里面設置一些暫存器累加,然后加到預先設定的值(一個比較長的時間),SET標志位,這些動作都在中斷程序里面。而主程序只需要查詢標志位就好了,但是注意標志位使用后,記得清除,還有中斷里面的時基累加器使用以后也要記得清除。