<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機系統在測控領(lǐng)域的穩定性探討

單片機系統在測控領(lǐng)域的穩定性探討

——
作者: 時(shí)間:2007-08-31 來(lái)源:21IC中國電子網(wǎng) 收藏
近年來(lái)系統在工業(yè)的應用越來(lái)越廣泛,而對于環(huán)境惡劣的工業(yè)現場(chǎng),這種新型的微控制器的可靠性,安全性就成為了一個(gè)大的問(wèn)題。在實(shí)驗室運行正常的程序到了工業(yè)現場(chǎng)卻不能運行,或者出現運行不穩定經(jīng)常死機等。在這里我們主要討論一下如何通過(guò)軟件技術(shù)來(lái)增強系統的穩定運行。

  當系統的CPU部位受到干擾信號的作用時(shí),將使系統失控。最典型的故障是破壞程序計數器PC的狀態(tài)值。導致程序在地址空間內“亂飛”,或者陷入死循環(huán)。而我們對這種情況的處理主要有這么幾種方法:

  1、指令;

  2、軟件陷阱技術(shù);

  3、看門(mén)狗技術(shù)。

  我們以MCS-51來(lái)做以說(shuō)明。

  一、指令

  我們知道,指令由操作碼和操作數組成,操作碼指明CPU要完成什么樣的操作,而操作數是操作碼的對象。單字節指令只有操作碼,隱含操作數;雙字節指令,第一個(gè)字節是操作碼,第二個(gè)字節是操作數;三字節指令第一個(gè)字節是操作碼,后二個(gè)字節是操作數。CPU在取指令的時(shí)候是先取操作碼再取操作數,如何判斷是操作碼還是操作數就是通過(guò)取指令的順序。而取指令的順序完全由指令計數器PC來(lái)控制,因此,一旦PC受干擾出現錯誤程序便會(huì )脫離正常軌道,出現“亂飛”,這樣就會(huì )使得把操作數當作操作碼,或者把操作碼當作操作數的情況。但只要PC指針落在單字節指令上程序就可納入正軌,所以為了快速的將程序納入正軌,我們應該多用單字節指令,并在關(guān)鍵的地方人為的插入一些單字節指令NOP,或將有效的單字節指令重寫(xiě),這就稱(chēng)之為指令冗余。

  常用的方法就是在一些雙字節,三字節指令后面插入兩個(gè)單字節指令NOP,或在一些對程序的流向起決定作用的指令前面插入兩條NOP指令。還可對一些重要的指令進(jìn)行重復放置。

  但采用指令將程序納入正軌的條件是:亂飛的PC必須指向程序運行區。

  二、軟件陷阱技術(shù)

  當亂飛的程序進(jìn)入非程序區的時(shí)候, 我們就可設定軟件陷阱對亂飛的程序進(jìn)行攔截從而將程序引向一個(gè)固定的位置。這樣我們就可將捕獲的程序重新納入正軌。

  軟件陷阱主要就是把程序從新引入它的復位入口處,也就是說(shuō)我們在適當的地方設置這樣的指令:

  NOP

  NOP 

  LJMP  0000H

  對于軟件陷阱的安排,我們主要安排在這樣一些區域,未使用的中斷區,未使用的EPROM空間及非EPROM空間。程序運行區,及中斷服務(wù)程序區。在這里我們主要來(lái)看前三種:

  1、未使用的中斷區

  如果對于未使用的中斷因干擾而開(kāi)放的話(huà),我們可以把中斷服務(wù)程序這樣來(lái)寫(xiě):

  NOP 

  NOP

  POP   D1    ;將原來(lái)的錯誤斷點(diǎn)彈出

  POP   D2    ;將原來(lái)的錯誤斷點(diǎn)彈出

  PUSH  00H

  PUSH  00H    ;將斷點(diǎn)地址重寫(xiě)為0000H

  RETI

  2、 未使用的EPROM區

  假設我們用了一片2764,但并沒(méi)有用完整個(gè)存儲區。這時(shí)候就可在未用的區域里填充上020000數據,這樣當程序飛入其中時(shí)就會(huì )很快的走入正軌。這條指令其實(shí)是“LJMP  0000H”的機器碼。

  3、 非EPROM空間

  系統的程序空間是64K,正常情況下我們所使用的EPROM不會(huì )占用所有的空間,假設我們現在的EPROM占用16K的空間那么剩下的48K空間就被閑置不用了。當亂飛的PC落入這些空間時(shí),讀入的數據將為FFH,這是 :MOV   R7,A  指令的機器碼,將修改R7的內容。因此,當程序亂飛入非EPROM芯片區后,不僅無(wú)法導入正規,面且破壞了R7的內容。

  我們知道,當CPU讀程序存儲器的時(shí)候,伴隨著(zhù)會(huì )產(chǎn)生一個(gè)PSEN信號,我們就可利用這個(gè)信號,再加上一個(gè)非EPROM區的地址譯碼信號,構成一個(gè)選通信號來(lái)起動(dòng)一個(gè)空閑的中斷,再用軟件陷井的方法從中斷程序中把程序導入正規。我們可看下面的一個(gè)圖:

  INT0

  PSEN

  非EPROM地址選通信號

  我們也可通過(guò)硬件的方法用一個(gè)緩沖器直接給數據線(xiàn)寫(xiě)一個(gè)值,其原理與上述方法相同。

    三、 軟件看門(mén)狗技術(shù)

  我們知道看門(mén)狗的作用就是防止程序發(fā)生死循環(huán),或者說(shuō)程序跑飛。硬件看門(mén)狗是利用了一個(gè)定時(shí)器,來(lái)監控主程序的運行,也就是說(shuō)在主程序的運行過(guò)程中,我們要在定時(shí)時(shí)間到之前對定時(shí)器進(jìn)行復位如果出現死循環(huán),或者說(shuō)PC指針不能回來(lái)。那么定時(shí)時(shí)間到后就會(huì )使單片機復位。

  軟件看門(mén)狗技術(shù)的原理和這差不多,只不過(guò)是用軟件的方法實(shí)現,我們還是以51系列來(lái)講,我們知道在51單片機中有兩個(gè)定時(shí)器,我們就可以用這兩個(gè)定時(shí)器來(lái)對主程序的運行進(jìn)行監控。我們可以對T0設定一定的定時(shí)時(shí)間,當產(chǎn)生定時(shí)中斷的時(shí)候對一個(gè)變量進(jìn)行賦值,而這個(gè)變量在主程序運行的開(kāi)始已經(jīng)有了一個(gè)初值,在這里我們要設定的定時(shí)值要小于主程序的運行時(shí)間,這樣在主程序的尾部對變量的值進(jìn)行判斷,如果值發(fā)生了預期的變化,就說(shuō)明T0中斷正常,如果沒(méi)有發(fā)生變化則使程序復位。

  對于T1我們用來(lái)監控主程序的運行,我們給T1設定一定的定時(shí)時(shí)間,在主程序中對其進(jìn)行復位,如果不能在一定的時(shí)間里對其進(jìn)行復位,T1 的定時(shí)中斷就會(huì )使單片機復位。在這里T1的定時(shí)時(shí)間要設的大于主程序的運行時(shí)間,給主程序留有一定的的裕量。而T1的中斷正常與否我們再由T0定時(shí)中斷子程序來(lái)監視。這樣就夠成了一個(gè)循環(huán),T0監視T1,T1監視主程序,主程序又來(lái)監視T0,從而保證系統的穩定運行。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>