微處理器是電磁流量計(jì)的核心單元, 控制整個(gè)系統(tǒng)的運(yùn)行。當(dāng)單片機(jī)應(yīng)用系統(tǒng)的 CPU 受到干擾時(shí), 可能造成的影響有: 非正常修改程序計(jì)數(shù)器指針; 改寫可編程輸出端口狀態(tài); 非正常修改數(shù)據(jù)區(qū)的數(shù)據(jù)等。以上不良影響會(huì)使單片機(jī)程序失控, 其后果是非常嚴(yán)重的。結(jié)合智能電磁流量計(jì)的工作特點(diǎn)和 MSP430系列單片機(jī)的特性, 采用軟件與硬件抗干擾技術(shù)相結(jié)合, 提高系統(tǒng)運(yùn)行的穩(wěn)定性。
1 硬件抗干擾
由于軟件抗干擾措施是以犧牲 CPU 效率為代價(jià)的, 如果沒(méi)有硬件消除絕大多數(shù)干擾, CPU 將疲于奔命, 無(wú)暇顧及正常工作, 嚴(yán)重影響系統(tǒng)的工作效率和實(shí)時(shí)性。電磁流量計(jì)輸出單元一般包括 4~ 20 mA 電流輸出, 集電極開(kāi)路的頻率輸出以及工業(yè)現(xiàn)場(chǎng)總線接口等, 在輸入和輸出通道上采用光電隔離器來(lái)進(jìn)行信息傳輸是很有好處的, 它將微機(jī)系統(tǒng)與各種傳感器、 開(kāi)關(guān)、 執(zhí)行機(jī)構(gòu)從電氣上隔離開(kāi)來(lái), 很大一部分干擾將被阻擋。M SP430單片機(jī)與外圍設(shè)備, 如模數(shù)轉(zhuǎn)換器、 EEP -ROM 等采用總線通信方式。當(dāng)信號(hào)同時(shí)切換時(shí)會(huì)引起 /地彈 0和串?dāng)_。在電路板布線時(shí), 總線盡量使用地線包圍, 電路采用多點(diǎn)接地方式。同時(shí)總線采用上拉電阻方式, 可以提高邏輯電路噪聲容限, 使總線通信更加可靠。M SP430的通用端口可以設(shè)置為輸入和輸出兩種狀態(tài), 對(duì)于沒(méi)有使用的端口, 全部設(shè)置為輸出狀態(tài), 防止 CPU受到意外干擾。此外 XT 2OUT 、 X OUT 、 VREF+ 空置; X I N 、 AV CC 接數(shù)字電源端; XT 2IN 、 VREF-、 VREF+ 接數(shù)字地。
2 睡眠狀態(tài)抗干擾
電磁流量計(jì)中微處理器很多情況下是在執(zhí)行等待指令和循環(huán)檢查程序, 這時(shí) CPU 沒(méi)有工作, 但卻是清醒的, 很容易受干擾。MSP430系列單片機(jī)提供了多種睡眠狀態(tài), 讓 CPU在沒(méi)有正常工作時(shí)休眠, 必要時(shí)再由中斷系統(tǒng)來(lái)喚醒它, 之后恢復(fù)休眠狀態(tài),從而使 CPU受到隨機(jī)干擾的威脅大大降低, 同時(shí)降低了 CPU的功耗。
3 指令冗余與軟件陷阱技術(shù)
程序正常運(yùn)行時(shí), 指令計(jì)數(shù)器始終指向下一條指令的第一個(gè)字節(jié), 當(dāng)單片機(jī)受到干擾時(shí), 可能引起程序計(jì)數(shù)器的非正常修改, 將操作數(shù)當(dāng)作指令碼執(zhí)行, 造成程序誤操作。M SP430單片機(jī)采用 RISC指令內(nèi)核, 指令字有單字節(jié)、 雙字節(jié)和三字節(jié)指令三種, 在雙字節(jié)和三字節(jié)指令后插入兩條單字節(jié)指令, 程序失控時(shí)也可以迅速進(jìn)入預(yù)期控制軌道。
綜合考慮 CPU 效率和抗干擾能力, 在對(duì)程序流向起關(guān)鍵作用的指令處, 如跳轉(zhuǎn)指令、 中斷恢復(fù)指令等, 插入兩條 / NOP0單字節(jié)空操作指令, 以保證 /跑飛 0的程序迅速納入正確的控制軌道。為了防止單片機(jī)輸出口狀態(tài)被意外修改, 定期重新定義輸出口狀態(tài)。M SP430單片機(jī)內(nèi)部集成很多外圍設(shè)備, 如 UART、 SPI串口、 定時(shí)計(jì)數(shù)器等, 為了防止這些設(shè)備的相應(yīng)控制寄存器被意外修改, 每次使用時(shí)都需重新設(shè)置。指令冗余使 /跑飛 0的程序安定下來(lái)是有前提條件的: 程序計(jì)算器必須指向程序區(qū)。當(dāng)程序計(jì)數(shù)器落到非程序區(qū), 如 ROM 中未使用的空間、 中斷向量表、 數(shù)據(jù)區(qū), 則冗余指令失效。
采取額外措施就是設(shè)立軟件陷阱。所謂軟件陷阱, 就是一條引導(dǎo)指令, 強(qiáng)行將捕獲的程序引向?qū)Τ绦虺鲥e(cuò)進(jìn)行處理的程序, 一般安排在未使用的中斷向量、 未使用的 ROM 等。M SP430單片機(jī)具有多個(gè)中斷發(fā)生源。正常工作時(shí), 執(zhí)行完中斷服務(wù)程序后, 相應(yīng)的中斷標(biāo)志位會(huì)被硬件自動(dòng)復(fù)位; 當(dāng)單片機(jī)受到干擾, 運(yùn)行異常時(shí), 可能會(huì)觸發(fā)沒(méi)有使用的中斷, 導(dǎo)致系統(tǒng)不能正常工作, 因此在未被使用的中斷向量處插入冗余指令, 使中斷自動(dòng)返回, 如: / NOP NOP RETI0。
對(duì)于沒(méi)有使用的 ROM, 程序燒錄器默認(rèn)寫入字0xfff,f該字對(duì)于指令系統(tǒng)是一條指令, 這條指令會(huì)修改單片機(jī)內(nèi)部寄存器值; 如果程序 /跑飛 0進(jìn)入這段 ROM中, 可能造成數(shù)據(jù)運(yùn)算錯(cuò)誤, 因此在未使用的 ROM 中寫入代碼, 使程序跳轉(zhuǎn)到出錯(cuò)處理程序。