0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何避免單片機死機

電子工程技術(shù) ? 2019-09-20 15:24 ? 次閱讀

一、振蕩器停止振蕩

又可以分為電源電壓不穩(wěn),或者強干擾引起的振蕩器停振。

二、PC指針跑飛

電源電壓不穩(wěn)或強干擾引起PC跑飛,如果看門狗不好,也會引起死機。

三、設(shè)計上對長引出線的IO沒有保護(hù),靜電打在IO口上引起單片機死鎖,破壞了硬件邏輯功能,導(dǎo)致死機。



四、復(fù)位收到干擾,引起反復(fù)復(fù)位,在反復(fù)復(fù)位當(dāng)中有可能會導(dǎo)致死機。綜上所述:

設(shè)計電路時,應(yīng)該注意:
1.電源穩(wěn)定
2.IO保護(hù)
3.振蕩器PCB布線要注意
4.復(fù)位電路設(shè)計和PCB布線
5.電源,信號線干擾路徑的保護(hù),加濾波TVS
6.高速信號輸出遠(yuǎn)離信號輸入端,如SPI總線,I2C總線布線要遠(yuǎn)離ADC,復(fù)位,時鐘等布線處,以及其他模擬前端。

一家之言,歡迎糾正

電源電壓的地不穩(wěn)定造成電源電壓瞬間負(fù)電壓導(dǎo)致單片機故障程序不發(fā)運行。

我的理解:

1、"跑飛"是因為程序隱患或外部干擾引起的誤動作,致使PC被寫入"出界"數(shù)據(jù),跑到了RAM區(qū),或者跑到了FLASH的空白區(qū)。如果PC指向了RAM區(qū),哪情況就不好說了!因為程序譯碼器可能得到任意譯碼結(jié)果。如果PC指向了FLASH空白區(qū),則可以事先將所有FLASH空白區(qū)填入某個你想要的數(shù)據(jù),迫使程序譯碼器在這里翻譯出你想要的指令,從而進(jìn)行相應(yīng)的處理。在IAR Workbench中好象有在空白區(qū)填充數(shù)據(jù)的設(shè)置。

2、"死機"是指PC進(jìn)入了"死循環(huán)",或者是MCLK等于近似為零的值。此時,要想救活MCU,非外狗不可。

*程序運行過程中,如果MCU電源出現(xiàn)問題(電源供電問題,或其它外部電路引起的電源擾動),比較容易出現(xiàn)"跑飛"現(xiàn)象。程序跑飛應(yīng)該是PC出錯;軟件和硬件都可能出這樣的問題。

死機應(yīng)該是CPU根本沒有運行,多是硬件方面的問題造成的,比如POR復(fù)位不成功,430比較容易出現(xiàn)掉電不完全后重新上電。

有了看門狗就不會死機?

死機是指CPU的程序指針進(jìn)入一個死循環(huán),無法執(zhí)行正常的程序流程。其外在表現(xiàn)常常是:正常功能喪失,按鍵無響應(yīng),顯示凝固。單片機死機后,只有復(fù)全才能走出死循環(huán),執(zhí)行正常的程序流程。眾所屬知,克服死機的最有效手段是加看門狗(WatchDog)。

目前用得最廣泛的看門狗實際上是一個特殊的定時器DogTimer。DogTimer按固定速率計時,計滿預(yù)定時間就發(fā)出溢出脈沖使單片機復(fù)位。如果每次在DogTimer溢出前強行讓DogTimer清零,就不會發(fā)出溢出脈沖。清零脈沖由CPU發(fā)出,在單片機程序中每隔一段語句放一個清DogTimer的語句--FeedDog語句,以保證程序正常運行時DogTimer不會溢出。

一旦程序進(jìn)入一個不含F(xiàn)eedDog語句的死循環(huán),DogTimer將溢出,導(dǎo)致單片機復(fù)位,跳出這個死循環(huán)。本文稱這種看門狗為典型看門狗,典型看門狗已被集成比,如MAX706、MAX791等[1];還有許多單片機本身集成了這種看門狗,如PIC16C57、MC68HC705等,

有一個錯誤觀點:加了看門狗,單片機就不會死機。實際上,看門狗有時間會完全失效。當(dāng)程序進(jìn)入某個死循環(huán),而這個死循環(huán)中又包含F(xiàn)eedDog語句,這時DogTimer始終不會溢出,單片機始終得不到復(fù)位信號,程序也就始終跳不出這個死循環(huán)。針對這一弊端,筆者設(shè)計了雙對限看門狗和定時復(fù)位看門狗。

雙時限看門狗有兩個定時器;一個為短定時器,一個為長定時器。短定時器定時為T1,長定時器定時為T2,0

這樣,當(dāng)程序進(jìn)入某個死循環(huán),如果這個死循環(huán)包含短定時器FeedDog語句而不包含長定時器FeedDog語句,那么長定時順終將溢出,使單片機復(fù)位。巧妙安排長定時器FeedDog語句的位置,可保證出現(xiàn)死機的概率根低。在水輪發(fā)電機組微機控制裝置中的對比應(yīng)用證明了這一點。

目前幾乎所有的看門狗都是依賴于CPU(依賴于CPU FeedDog)。這可以比作:一個保險設(shè)備能否起到保險作用還依賴于被它保護(hù)的對象的行為。顯然,依賴于CPU的看門狗是不能保證單片機在分之百不死機的。

在絕對不允許死機的裝置中,筆者設(shè)計了一種完全不依賴于CPU的看門狗--定時復(fù)位看門狗。定時復(fù)位看門狗的主體也是一個定時器,到預(yù)定時間就發(fā)出溢出脈沖,此溢出脈沖使單片機強行復(fù)位。定時復(fù)位看門狗不需要CPU FeedDog。

簡言之,定時復(fù)位看門狗就是定時地讓單片機強行復(fù)位。這樣,即使裝置死機,其最大死機時間也不會大于定時器定時時間。顯然,只要硬件完好,這種看門狗百分之百地保證了單片機不會長時間死機。

智能電表(包括IC卡電能表、復(fù)費率電能表、多功能電能表)中采用了定時復(fù)位看門狗,每1秒讓CPU強行復(fù)位,迄今數(shù)十萬電表運行了近五年,無一例死機報告。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6030

    文章

    44490

    瀏覽量

    632005

原文標(biāo)題:單片機死機了怎么辦?這6個方法你應(yīng)該知道

文章出處:【微信號:EngicoolArabic,微信公眾號:電子工程技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何有效避免MCU單片機死機問題

    單片機的都可能遇到過因外部干擾或因軟件BUG導(dǎo)致死機,這對于有功率負(fù)載的電路是極為不利的?,F(xiàn)在MCU都有了WDT看門狗,當(dāng)計數(shù)溢出就強制進(jìn)行復(fù)位。但如果單片機因某種原因(如靜電、浪涌等擊穿)直接
    發(fā)表于 07-25 09:17 ?1166次閱讀
    如何有效<b class='flag-5'>避免</b>MCU<b class='flag-5'>單片機</b><b class='flag-5'>死機</b>問題

    485總線上的單片機死機?

    進(jìn)行(執(zhí)行過程通過LED觀察)。主機延時一段時間后又重復(fù)上述過程,但從就出現(xiàn)問題了!有時第二輪循環(huán)中就有單片機死機(示波器觀察晶振停振,沒有時鐘信號,看門狗也沒用),有時經(jīng)過兩三輪后才會有
    發(fā)表于 09-26 14:42

    單片機/ARM死機或跑飛的診斷療法

    有時,在寫ARM時會遇到經(jīng)常死機的情況,莫名其妙,在這里我總結(jié)了一些單片機/ARM死機或者跑飛的一些常見的查找方法和我對此的一些拙見希望對大家有幫助?!?b class='flag-5'>死機”和“跑飛”隨著
    發(fā)表于 08-26 16:16

    單片機死機了怎么辦?

    口上引起單片機死鎖,破壞了硬件邏輯功能,導(dǎo)致死機。四、復(fù)位收到干擾,引起反復(fù)復(fù)位,在反復(fù)復(fù)位當(dāng)中有可能會導(dǎo)致死機。綜上所述:設(shè)計電路時,應(yīng)該注意:1.電源穩(wěn)定2.IO保護(hù)3.振蕩器PCB布線要注意4.
    發(fā)表于 09-10 07:30

    無線通訊單片機死機

    大家好,我現(xiàn)在做一個項目,無線遙控控制燈光,遙控碼是用單片機編的,現(xiàn)在遇到的問題是,當(dāng)無線發(fā)射模塊發(fā)碼的時候,單片機死機,有時候還把E2ROM的數(shù)據(jù)打亂,更糟糕的時候會把程序也打亂,必須重新燒錄
    發(fā)表于 10-21 01:22

    單片機/ARM死機或跑飛的診斷療法

    單片機/ARM死機或跑飛的診斷療法 有時,在寫ARM時會遇到經(jīng)常死機的情況,莫名其妙,在這里我總結(jié)了一些單片機/ARM死機或者跑飛的一些常
    發(fā)表于 05-06 15:10

    造成單片機死機的原因有哪些?

    ,就關(guān)閉交流風(fēng)機,大概每次切換風(fēng)機狀態(tài)時,都會造成死機,后來在風(fēng)機兩端接了個RC吸收電路,情況改善了不少,但是還是出現(xiàn)死機現(xiàn)象,最后改用了STM8內(nèi)部晶振作為系統(tǒng)時鐘,解決問題才得以解決所以如果在你的系統(tǒng)里,時鐘并不是很苛刻的話,應(yīng)該盡量使用
    發(fā)表于 09-01 17:57

    單片機玄學(xué)死機問題

    單片機不會死機,也能正確計算平均值。但是我使用正點原子精英版也就是stm32f103zet6時,同樣的代碼,卻會死機(仿真和實物流水燈確定是死機),仿真確定
    發(fā)表于 10-14 00:24

    單片機為什么會死機?單片機死機該怎么去解決?

    振蕩器停止振蕩是由哪些原因引起的?單片機為什么會死機?單片機死機該怎么去解決?
    發(fā)表于 07-16 09:22

    單片機為什么會死機

    在日常的單片機開發(fā)中,不可避免會遇上死機的現(xiàn)象,讓人摸不著頭腦,更嚴(yán)重的是死機并不能輕易復(fù)現(xiàn)的情況,下面我就說一些我在開發(fā)過程中遇到過的情況。變量溢出或變量未初始化這里的變量溢出指的是
    發(fā)表于 11-22 06:08

    造成單片機死機的原因都有哪些?如何避免?

    一直以來有個問題就是如何保整單片機死機的問題困擾著我,我在想造成單片機死機的原因都有哪些?如何避免?目前我能想到就下面這幾條注意堆棧野指針
    發(fā)表于 07-27 11:03

    單片機程序死機,可能是這幾個原因

    單片機程序死機,可能是這幾個原因
    的頭像 發(fā)表于 06-19 17:18 ?8718次閱讀
    <b class='flag-5'>單片機</b>程序<b class='flag-5'>死機</b>,可能是這幾個原因

    單片機復(fù)位的原理說明

    單片機的復(fù)位電路使單片機進(jìn)入復(fù)位狀態(tài)。通過復(fù)位操作可以完成單片機的初始化,也可使處于死機狀態(tài)下的單片機程序重新開始運行。
    發(fā)表于 07-17 10:26 ?1.8w次閱讀
    <b class='flag-5'>單片機</b>復(fù)位的原理說明

    單片機死機常見原因分析

    在日常的單片機開發(fā)中,不可避免會遇上死機的現(xiàn)象,讓人摸不著頭腦,更嚴(yán)重的是死機并不能輕易復(fù)現(xiàn)的情況,下面我就說一些我在開發(fā)過程中遇到過的情況。變量溢出或變量未初始化這里的變量溢出指的是
    發(fā)表于 11-13 19:51 ?16次下載
    <b class='flag-5'>單片機</b><b class='flag-5'>死機</b>常見原因分析

    單片機死機了怎么辦?

    口上引起單片機死鎖,破壞了硬件邏輯功能,導(dǎo)致死機。四、復(fù)位收到干擾,引起反復(fù)復(fù)位,在反復(fù)復(fù)位當(dāng)中有可能會導(dǎo)致死機。綜上所述:設(shè)計電路時,應(yīng)該注意:1.電源穩(wěn)定2.IO保護(hù)3.振蕩器PCB布線要注意4.復(fù)位電路設(shè)計和PCB布線5.
    發(fā)表于 11-16 15:51 ?23次下載
    <b class='flag-5'>單片機</b><b class='flag-5'>死機</b>了怎么辦?