<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è) > 嵌入式系統 > 設計應用 > 應用在工業(yè)測控領(lǐng)域的單片機系統解析方案

應用在工業(yè)測控領(lǐng)域的單片機系統解析方案

作者: 時(shí)間:2018-09-10 來(lái)源:網(wǎng)絡(luò ) 收藏

近年來(lái)領(lǐng)域的應用越來(lái)越廣泛,而對于環(huán)境惡劣的現場(chǎng),這種新型的微控制器的可靠性、安全性就成為了一個(gè)大問(wèn)題。在實(shí)驗室運行正常的程序到了現場(chǎng)卻不能運行,或者出現運行不穩定經(jīng)常死機等。在這里主要討論一下如何通過(guò)軟件技術(shù)來(lái)增強系統的穩定運行。

本文引用地址:http://dyxdggzs.com/article/201809/388753.htm

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

1、指令冗余技術(shù);

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

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

下面 以MCS-51單片機來(lái)做說(shuō)明。

指令冗余技術(shù)

指令由操作碼和操作數組成,操作碼指明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)行重復放置。

但采用指令冗余技術(shù)將程序納入正軌的條件是:亂飛的PC必須指向程序運行區。

軟件陷阱技術(shù)

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

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

NOP

NOP

LJMP 0000H

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

1、未使用的中斷區

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

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è)空閑的中斷,再用軟件陷井的方法從中斷程序中把程序導入正規。

也可通過(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,從而保證系統的穩定運行。



評論


相關(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>