微處理器是
電(diàn)磁流量計
的核(he)心單元, 控制整(zheng)個系統的運行(hang)。當單片機應用(yong)系統🛀🏻的 CPU 受🔞到幹(gàn)擾時, 可能造成(chéng)的影響有: 非正(zhèng)常修改程🔆序計(jì)數器指針; 改寫(xie)🔆可編程輸出端(duan)口狀态; 非正常(chang)修改數據區的(de)數據等。以上不(bú)良影響會使單(dān)片機程序失控(kòng), 其後果是非常(cháng)嚴重的。結合
智(zhì)能電磁流量計(jì)
的工作特點和(he) MSP430系列單片機的(de)特性, 采用軟件(jian)與硬件抗幹擾(rǎo)技術相結合, 提(ti)高系統運行的(de)穩定性。
1 硬件抗(kàng)幹擾
由于軟件(jian)抗幹擾措施是(shi)以犧牲 CPU 效率爲(wèi)代價的, 如果沒(méi)有硬件消除絕(jué)大多數幹擾, CPU 将(jiang)疲于奔命, 無暇(xia)顧及❄️正常工作(zuò)🏃♂️, 嚴重影響系統(tǒng)的工作效率和(hé)實時性。電磁流(liú)量計輸出單元(yuán)一般包括 4~ 20 mA 電流(liu)輸出, 集電極開(kai)路的頻率輸出(chū)以及工業現場(chǎng)總線接口等, 在(zai)🛀輸入和輸出通(tōng)道上采用🤩光電(diàn)隔離器🥵來進行(háng)信息傳輸是很(hen)有好處的, 它将(jiang)微機系統與各(ge)種傳感器、 開關(guān)、 執行機構從電(diàn)氣上🧑🏽🤝🧑🏻隔離開來(lai), 很大一部分幹(gan)擾将被阻擋。M SP430單(dan)片機與外圍設(she)備, 如模數轉換(huan)器、 EEP -ROM 等采用總線(xian)通信方式。當🔞信(xin)号同時切換時(shí)會引🍉起 /地彈 0和(he)串擾。在電路闆(pan)布線時, 總線盡(jin)量使用地線包(bāo)♉圍, 電路采用多(duo)點接地方🌏式。同(tong)時總線采用上(shàng)拉電阻方式, 可(ke)以提高邏輯電(dian)路噪🔴聲容限, 使(shǐ)總線通信更加(jia)可靠。M SP430的通用端(duan)口可以設置爲(wei)輸☀️入和輸出兩(liang)✏️種狀态, 對于沒(mei)有使用的端口(kǒu), 全部設置爲輸(shū)出狀态, 防止 CPU受(shou)到意外幹㊙️擾。此(cǐ)外 XT 2OUT 、 X OUT 、 VREF+ 空置; X I N 、 AV CC 接數字(zì)電源端; XT 2IN 、 VREF-、 VREF+ 接⭐數字(zì)地。
2 睡眠狀态抗(kàng)幹擾
電磁流量(liàng)計中微處理器(qi)很多情況下是(shì)在執行等🤩待指(zhi)令和循環檢查(chá)程序, 這時 CPU 沒有(yǒu)工作, 但卻是清(qīng)🏃🏻醒的🌏, 很容易受(shou)♌幹擾。MSP430系列單片(piàn)機提供了多種(zhǒng)睡眠狀态, 讓 CPU在(zai)沒有正常工作(zuo)時休💰眠, 必要時(shí)再由中斷系統(tǒng)來喚🏃♂️醒它, 之後(hòu)恢複休眠狀态(tai),從而使 CPU受到随(suí)機幹擾的威脅(xié)大大降低🔞, 同時(shí)降低了 CPU的功耗(hao)。
3 指令冗餘與軟(ruǎn)件陷阱技術
程(cheng)序正常運行時(shi), 指令計數器始(shi)終指向下一條(tiáo)指令的第一個(ge)字節, 當單片機(jī)受到幹擾時, 可(kě)能引起程序計(jì)數器的非正常(cháng)修改, 将操作數(shu)當作指令碼執(zhi)行, 造成程序誤(wù)操作。M SP430單片機♉采(cǎi)用 RISC指令内核, 指(zhi)令字有單字⁉️節(jiē)、 雙字節和三字(zì)節指令三種, 在(zai)雙字節和三字(zi)節指令後插入(rù)兩條單字節指(zhǐ)令, 程序失控時(shi)也可以迅速進(jin)入預期控制軌(guǐ)道。
綜合考慮 CPU 效(xiao)率和抗幹擾能(néng)力, 在對程序流(liu)向起關鍵作用(yòng)的指令處, 如跳(tiao)轉指令、 中斷恢(huī)複指令等, 插入(ru)兩❤️條 / NOP0單字節空(kong)操作指令, 以保(bao)證 /跑飛 0的程序(xù)迅速納入正确(què)的控制軌🎯道。爲(wèi)了防止單片機(jī)輸出口狀态被(bèi)意外修改, 定🔞期(qī)重新定🛀義輸出(chū)口狀态。M SP430單片🧡機(jī)内部集成很多(duo)外圍設備, 如 UART、 SPI串(chuàn)口、 定時計數器(qì)等🌈, 爲了防止這(zhè)些❄️設備的相應(ying)控制寄存器被(bèi)意外修改, 每次(ci)使用時都需重(zhòng)新設置。指令冗(rong)餘使 /跑飛 0的程(cheng)序安定下來是(shì)有前提條件的(de): 程序計算器必(bi)須指向程序✂️區(qu)。當程序計♌數器(qì)落到非程序區(qu), 如 ROM 中未😍使用的(de)空間、 中斷向量(liàng)表、 數據區, 則冗(rǒng)餘指令失效。
采(cai)取額外措施就(jiù)是設立軟件陷(xian)阱。所謂軟件陷(xiàn)阱, 就是一條引(yǐn)導指令, 強行将(jiāng)捕獲的程序引(yǐn)向對程序出錯(cuò)進行處理的程(chéng)序, 一般安排在(zai)未使用的中斷(duan)向量、 未使用的(de) ROM 等。M SP430單片機具有(yǒu)多個中斷發生(shēng)源。正常工作時(shí), 執行完中斷服(fú)務程序後, 相應(ying)的中斷标志位(wèi)會被硬件自動(dong)複位; 當單片機(jī)受到幹擾, 運行(hang)異常時, 可能會(hui)觸發沒有使用(yòng)的中斷, 導緻系(xi)統不能正常工(gōng)作, 因此在未被(bèi)使用的中斷向(xiang)量處插入冗餘(yu)指令, 使中斷自(zì)動返回, 如: / NOP NOP RETI0。
對于(yu)沒有使用的 ROM, 程(cheng)序燒錄器默認(ren)寫入字0xfff,f該字對(duì)于指🔞令系統🏃♀️是(shì)一條指令, 這條(tiáo)指令會修改單(dan)片機内部🌈寄存(cún)☀️器值; 如果程序(xu) /跑飛 0進入這段(duàn) ROM中, 可能造成數(shù)據運算錯🈲誤, 因(yin)此在未使用的(de) ROM 中寫入代碼, 使(shǐ)😍程序跳轉到出(chū)錯處理程序。