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