1 問題的提出
在以單片機為核心的智能儀表及過程控制系統中常常需要長時間保存實時參數。通常可采用E2PROM、FLASH MEMORY以及以隨機存貯器為基礎內置電池的非易失芯片來實現。E2PROM、 FLASHMEMORY屬于可在線修改的ROM器件,它解決了應用系統中實時參數掉電保存的難題,但這類芯片寫入速度慢(ms級),擦寫次數有限(萬次級),有些器件擦寫次數雖達百萬次,對某些應用系統而言,其寫入次數仍然是有限的。因此這類芯片只能用在需要保護的數據量小且寫入不頻繁的系統中。對那些需要大容量高速反復存取實時參數的系統,只能用隨機存貯器RAM加掉電保護電路實現。實現上述原理的掉電保護方法很多,某些廠商甚至以RAM為基礎內置電池開發出自掉電保護芯片,用這類獨立的掉電保護芯片或電路構成的單片機系統,實際應用中有時會出現工作不穩定現象。經分析發現:若系統電源的變化使RAM先處于保護狀態,而系統尚未復位,單片機仍正常工作,這時就出現寫不進,讀不出的現象,引發系統故障。對于這種單片機復位電平與掉電保護電平不一致而影響系統可靠性的問題,本文提出用微處理器監控電路使單片機復位與掉電保護聯動的解決方案。RAM在單片機復位時處于保護狀態,工作時正常存取,從而有效地解決前述問題。
單片機自動完成賦予它的任務的過程,也就是單片機執行程序的過程,即一條條執行的指令的過程,所謂指令就是把要求單片機執行的各種操作用的命令的形式寫下來,這是在設計人員賦予它的指令系統所決定的,一條指令對應著一種基本操作;單片機所能執行的全部指令,就是該單片機的指令系統,不同種類的單片機,其指令系統亦不同。為使單片機能自動完成某一特定任務,必須把要解決的問題編成一系列指令(這些指令必須是選定單片機能識別和執行的指令),這一系列指令的集合就成為程序,程序需要預先存放在具有存儲功能的部件——存儲器中。存儲器由許多存儲單元(最小的存儲單位)組成,就像大樓房有許多房間組成一樣,指令就存放在這些單元里,單元里的指令取出并執行就像大樓房的每個房間的被分配到了唯一一個房間號一樣,每一個存儲單元也必須被分配到唯一的地址號,該地址號稱為存儲單元的地址,這樣只要知道了存儲單元的地址,就可以找到這個存儲單元,其中存儲的指令就可以被取出,然后再被執行。
2 MAX791[1]芯片介紹
MAX791是MAXIM公司生產的高性能微處理器電源監視電路,它與AMDA公司的AMD791性能相同可以互換。功能包括微處理器復位、備用電池切換、看門狗電路、CMOS-RAM寫入保護及電源故障告警等,邏輯框圖如圖2—1[1]。圖中VCC、VOUT分別為電源輸入、輸出,VBATT為電池輸入,為電源低輸出,
和
為RAM芯片使能輸入與輸出,
為復位輸出,
為人工復位輸入,
為低將強制RESET有效,SWT、WDI、
、
分別為看門狗定時設置、觸發輸入、超時輸出和超時脈沖。PFI和
分別為電源故障輸入和輸出,PFI低于1.25 V時
變低。MAX791的復位時序如圖2—2[1]所示。
3 掉電保護電路設計
3.1 硬件設計
圖3—1給出了一種帶掉電保護的MCS-51[2]、[3]單片機應用系統的原理圖。76C88是CMOS型的RAM芯片,其容量為8K×8,它有兩個片選端和CS2,只有
為低電平同時CS2為高電平時芯片才被選中。因此將CS2接MAX791的
輸出端,同時
寫允許信號通過MAX791的使能控制輸入端
和輸出端
,間接從MCS-51的
引入,保證在系統復位期間不能讀寫,有效地保護了76C88中的數據。結合圖2—2 MAX791的復位時序,圖3—1的電路工作原理分析如下。
上電過程:當VCC從OV上升到復位門限1.65V,輸出仍將維持有效電平200ms的時間,保證電源電壓正常后系統的有效復位。
有效期間76C88的CS2處于低電平,即片選信號無效,保證上電過程中片內數據不被改寫。當VCC大于VBATT時,VOUT自動切換到與VCC相接,76C88轉由VCC供電。
RAM(隨機存取存儲器)RAM -random access memory 隨機存儲器。存儲單元的內容可按需隨意取出或存入,且存取的速度與存儲單元的位置無關的存儲器。這種存儲器在斷電時將丟失其存儲內容,故主要用于存儲短時間使用的程序。 按照存儲信息的不同,隨機存儲器又分為靜態隨機存儲器(Static RAM,SRAM)和動態隨機存儲器(Dynamic RAM,DRAM)。
正常工作:在此狀態下,CS2為高電平,通過MAX791的使能電路復制
,單片機可對76C88進行讀寫操作。為防止程序跑飛,提高系統的可靠性,在程序中插入看門狗觸發指令,當程序跑飛超過1.6 s不能觸發看門狗時,
輸出低電平,通過MR使系統復位。
掉電過程:當VCC從正常電壓下降到復位門限4.65V時,立即有效,CS2變成低電平,76C88進入保護狀態,保證掉電過程中片內數據不被改寫。當VCC小于VBATT時,VOUT自動切換到與VBATT相接,76C88轉由后備電池供電。 對多數應用系統,上電復位后程序從頭開始即能滿足要求, 利用MAX791的電源報警功能,能方便地達到這一目的:分析圖2-2,當VCC下降到4.65V+150mV時,
產生負跳變,向單片機發中斷請求,因貯能效應,VCC從4.8 V降到4.65 V有幾個ms的時間,足夠單片機執行幾百條甚至上千條指令,利用這段時間在中斷服務程序中保護斷點及實時參數。重新來電后轉入斷點繼續執行。
3.2 軟件設計
圖3—1所示單片機系統的軟件可分成主程序和電源報警中斷服務程序兩部分。主程序中必須插入指令經常觸發WDI,且間隔時間不能超過1.6s,報警中斷必須設置為非屏蔽中斷沒有
可以將
設置成唯一的一個高級中斷以替代
。程序流程圖如圖3—2。
4 結束語
將復位與掉電保護聯動,能有效解決掉電保護與復位不協調引起的系統工作不穩定現象,提高掉電保護電路及單片機應用系統的可靠性。以MAX791微處理器監控電路構成的單片機掉電保護系統,在電力、石化等工業現場應用效果十分理想。