⑴ 請教各位大俠,關於單片機長時間運行死機的問題
長時間運行死機的原因相對也算多:
①有振盪器(特別是陶瓷振盪器)振盪不良,長時間運行後,振盪器停振導致單片機死機。
②有單片機(特別是國產某晶)性能不佳,平均每1~1月就有一次死機。
③有設計(硬體抗擾)不佳,使用環境出現惡劣條件(各種干擾:靜電、電磁、脈沖……),導致單片機死機。
…………
對於①,重新上電,99%以上能恢復正常,1%振盪器就壞了。
對於②,重新上電,100%能恢復正常。
對於③,重新上電,50%~70%能恢復正常,剩下的,很可能被靜電擊穿MCU,導致永久性損壞。
解決方法:
對於①,採用晶體振盪器(就是晶振,金屬外殼那種,記得匹配好旁路電容)。
對於②,更換工業性能穩定的單片機品牌。
對於③,硬體設計考慮多點環境干擾,這對硬體工程師要求比較高,不是畢業生或工作經驗一年兩年的人能做的。必須有相關行業經驗的工程師,不然就是工作10年8年也沒這能力。(更換工業性能良好的單片機,可以將「重新上電恢復正常」提高到80%~90%,但不能解決死機。)
⑵ 為什麼單片機定時越短,中斷次數增多啦,反而出現死機
你的感覺是中斷次數多,就不容易死機嗎,是這樣的,如果是正常的運行程序,此時的單片機的資源用的是最少的,也就是cpu的負擔是最輕的,可是一旦有的中斷,你就開了中斷,每一個機器周期都要去查這些中斷標志,標志有效,那麼就要對當前的地址進行存儲,還要對看是否有同級中斷,是否滿足中斷的條件,滿足,轉向中斷服務,完了,還要自動清除這些標志,這些都是你看不見的,大量的工作都是硬體在自動完成,這也就是cpu負擔更重,如果你中斷太頻,內部硬體的電路出現問題的機率就會增大,當然死的快了。
⑶ 為什麼單片機有時候會在開啟電機時死機
電機啟動時一會產生較大的電磁干擾信號,第二啟動是瞬時電流較大,可能會在電網上產生較大浪涌,這些都會影響到附近的單片機,如果單片機電路抗干擾設計不夠好的話就會造成死機。
⑷ 單片機死機的原因求助高手
單片機死機的原因,通常是因為周圍環境干擾比較嚴重,如工廠車間各種機器,電焊機等工作時,就是產生很強的干擾脈沖,加上單片機的防干擾措施不到位,就是會被干擾破壞了正常的動行,造成飛程序,進入死機狀態。
如果是在這種環境下的單片機,就是做好防干擾措施。
⑸ 單片機出現死機現象
我個人覺得也可能是電源影響到的,難道你的電路沒有設置自動復位功能么?如果具有自動復位功能,那麼,如果是電壓影響的話,也會重新工作的啊,那麼,你的死機就是程序的問題了,可能這個工地的使用了某種特殊的功能或者設置導致的,建議你查查您的程序,如果沒有自動復位功能,哪就加個電容與電阻上去吧.我估計還是你的軟體有BUG。仔細查查吧。
⑹ 51單片機死機重啟的原因有哪些
rest的原因很多:
1. 如果堆棧溢出的話,你初始化時是不是加指令MOV SP,#60H初始化堆棧了嗎?因為上電復位以後8051類單片機的SP值是07H,這個值並不是很好,所以容易導致堆棧溢出。
2. 你看門狗是否啟用,如果看門狗啟用的話,你是不是適時喂狗了?也有可能看門狗定時器溢出,導致晶元復位。
3. 你的電源是否穩定,(可能導致晶元上電復位)如果用開關電源的話,建議在輸入端並接100uf以上的大電容濾去低頻諧波,並接一個0.1uf(104)的瓷片電容濾去高頻諧波分量。如果是市電降壓過來的話,要看是什麼東西降壓的。如果是變壓器降壓的,看看變壓器是否隔離。(最好用隔離的變壓器)。同時看看穩壓管是否良好。如果是電容降壓的話,建議輸入端增加П型網路濾波,並改用好的穩壓管,最好用光耦隔離市電干擾。
4. 你的復位電路是否正確,一般51電路用微分電路復位的。也有可能你的PCB布線不良,導致分布電容過大。你可以試試改小復位電路上的電容。把10uf的電容改成1uf的鉭電容試試。
5. 你的晶振(高頻干擾部分)PCB布線是應該盡量離單片機近點。布線應該越短越好。
⑺ 單片機低電壓導致的死機
單片機一般是 COMS 結構,電源電壓范圍已經很寬,如果電壓過低,內部程序以及外部的控制電路工作極不穩定,會造成控制錯誤,還不如停止單片機的工作,這就是低電壓復位。 低電壓復位就是檢測電源電壓的結果,就是「不讓單片機工作」。 我估計你說的「不讓單片機工作」,是指程序繼續工作,只是把控制停下,是低電壓下,程序工作是不可靠的。具體情況就要看你的設備而定了。現在寫程序一般都有看門狗這樣的檢測程序,如果死機的話,會重啟。當然,也不排除看門狗有問題,當然,更多的是程序本身有問題而導致的! 外部可能引起死機可能就是電壓不穩、靜電過大等原因。單片機程序死機,跑飛了可以從以下幾個方面查找原因:
1. 意外中斷。是否打開了某個中斷,但是沒有響應和清除中端標志,導致程序一直進入中斷,造成死機假象;
2. 中斷變數處理不妥。若定義某些會在中斷中修改的全局變數,這時要注意兩個問題:首先為了防止編譯器優化中斷變數,要在這些變數定義時前加volatile,其次在主循環中讀取中斷變數前應該首先關閉全局中斷,防止讀到一半被中斷給修改了,讀完之後再打開全局中斷;否則出現造成數據亂套。
⑻ 單片機系統死機但是reset可以觸發
這種情況是正常的,因為單片機都有這個按鈕,這就是預防單片機出現問題的時候,重新啟動
⑼ 單片機死機的原因有哪些
硬體方面,比如某一口一個狀態出現軟體才能往下執行,可惜該口壞掉了,出不了這個狀態,軟體到此就停止不動了;比如地址線亂了,軟體當然沒法執行了,肯定死翹翹;比如晶振不起振,軟體當然沒法執行;比如地址鎖存器壞掉了,地址與數據混到一塊分不清當然也要死機;比如復位電路不好,總是復位,或復位不了,當然也沒法正常執行.......等等,軟體正常運行的條件,就是硬體電路正常,沒有這個基礎,怎麼談軟體故障。
軟體方面:比如死循環,如沒有中斷的情況下,sjmp $,執行到此肯定死胡同了;比如轉移到一個非程序區,肯定死機,常見的干擾就是多出現該情況;比如進入中斷服務程序,沒有關中斷而再次處罰中斷,也能死機的;在用MOVC實現分支轉移時,處理不當也可以死機;數據溢出也能死機........等等很多了。
⑽ 單片機死機從新上電好了
死機的可能性較多:
軟體BUG
電源紋波問題
外部串擾等
解決方法:
1 全面清查軟體代碼
另外應該做軟體看門狗,在死鎖時自動重啟。Reset電路也要做好
2 需要測試電源是否額定值(不要用晶元最低電壓值,若無節電要求,應選擇相對較高值),且紋波在接受范圍?去藕、濾波電路需要做好
3 介面保護電路做好。