基于32位單片機MC68HC376高可靠系統設計
圖6 掉電報警電路
表1 軟件看門狗溢出時間
*掉電報警電路
當系統的某一級工作電源掉電時,控制裝置將不能正常運作,或者控制信號得不到正確執行。這時應該發出報警信號,掉電報警電路如圖6所示。
將各等級的工作電源通過關隔MOC8050串接起來,一旦發生掉電的情況,掉電報警處的電平由高變為低,啟動報警裝置。
軟件可靠性設計
*軟件看門狗
在MC68HC376的SIM模塊中,有一個軟件看門狗,在監控程序中,可以開啟軟件看門狗,配合提高系統的可靠性。該軟件看門狗由MC68HC376的系統保護控制寄存器(SYPCR)中的SWE位控制開啟。當SWE位為1時,看門狗啟動,開始計時。
在裝置正常工作時,程序應該在軟件看門狗溢出之前對軟件服務寄存器(SWSR)先后寫入 55H和AAH,當寫入完成之后,軟件看門狗就會清除當前計時值,重新開始計時。如果計時值溢出,則會使MC68HC376的/RESET引腳有效,系統復位。這樣,就可以在程序死循環或者由于其它原因而導致程序跳飛時自動回復到復位狀態。
看門狗的溢出時間由系統頻率以及SYPCR寄存器的看門狗分頻位(SWP)和看門狗定時區 (SWT[1:0])決定,如表1所示。選擇看門狗溢出時間時應該注意大小適中,若取值過大,則程序可能會較長時間處于死循環或跳飛狀態,從而導致控制錯誤或失效;若取值過小,則會增加程序負擔,降低裝置運行效率。
*程序的區域劃分和操作級別控制
CPU32可進行兩種優先級別的操作:監控級別和用戶級別。在監控級別下,CPU可以對所有的內部集成資源和所有的指令進行操作,而在用戶級別下,它對一些寄存器和指令的訪問會受到限制。在程序中有效地利用這種優先級別會使內部資源和一些系統指令得到有控制的訪問,從而提高系統運行的可靠性。CPU32的狀態寄存器SR中的S位決定CPU的工作級別,當S=1時CPU處于監控級別;S=0時 CPU處于用戶級別。
一般情況下,單片機的程序區和數據區在同一個物理地址空間。對于MC68HC376,可以通過功能碼FC[2:0]來擴展和劃分外部物理空間,對FC[2:0]實現外部解碼,可以使監控級程序、監控級數據、用戶級程序、用戶級數據分別使用各自獨立的地址空間。對于MC68HC376內部的各個模塊,可以通過其相應的結構寄存器中的SUPV位來確定該部分的通用寄存器所處的地址空間,當 SUPV=1時,將相關的寄存器放置于監控級數據地址空間,CPU只有在監控級別時才可對其訪問和操作;當SUPV=0時,將相關的寄存器放置于數據級數據地址空間,CPU可任意對其進行訪問和操作。這樣,整個程序結構性強,按級別控制訪問,增強了運行的可靠性。
*總線監視器
MC68HC376進行內部總線操作時,數據選通應答引腳(/DSACK)和自動向量引腳 (/AVEC)應該有相應的應答信號。SIM模塊中的總線監視器能對/DSACK和/AVEC信號進行監視,當響應時間超過定時值就使總線錯誤 (/BERR)引腳有效。程序應對/BERR的狀態進行監視,以便及時對總線錯誤做出相應的處理。
總線監視器的定時值由系統保護控制寄存器(SYPCR)中的總線監視時間區 (BMT[1:0])決定。BMT[1:0]=00時,定時值為64個系統時鐘;BMT[1:0]=01時,定時值為32個系統時鐘;BMT[1:0]=10時,定時值為16個系統時鐘;BMT[1:0]=11時,定時值為8個系統時鐘。程序員應根據實際的運行情況進行選擇。
其它
其它一些提高可靠性的措施還包括有配置去耦電容;系統時鐘電路采用獨立電源VDDSYN供電,減少對MCU的干擾,而且MCU停電時系統時鐘仍可維持運行。布線時,時鐘電路設置在電路板的中央;Standby RAM采用兩個電源VDD和VSTBY供電,正常運行時VDD供電,發生掉電時,使其自動切換到VSTBY供電。同時,在軟件中,將堆棧及一些重要數據存放在Standby RAM有利于重要運行參數的保存。
結語
該方案采用高性能、集成度高、可靠性強的32位新型微控制器MC68HC376為核心,同時在硬件、軟件以及制板布線等方面采用多種提高系統可靠性的設計措施。應用該方案的數字式低頻低壓控制裝置RSA800,已通過電力工業部電力設備及儀表質量檢驗測試中心的產品型式試驗。
評論