利用C8051F310內(nèi)置比較器0實現(xiàn)掉電模式
在測量、控制等領域,常要求單片機內(nèi)部RAM中的數(shù)據(jù)在電源掉電時不丟失,重新加電時,RAM中的數(shù)據(jù)能夠保存完好,且系統(tǒng)在電源恢復后,能夠繼續(xù)執(zhí)行程序。利用C8051F310單片機內(nèi)置比較器0對電源電壓進行實時檢測,主電源掉電時,執(zhí)行比較器0中斷服務程序,保存特殊功能寄存器內(nèi)容,并置單片機于掉電模式以降低功耗,由備用電池對單片機供電,保持RAM中的數(shù)據(jù)不丟失。
基于C8051F310單片機的以下幾點,提出了本文題目要討論的內(nèi)容,并且已通過實驗測試。
?、?C8051F310單片機進入掉電模式,CPU停止運行,所有的中斷和定時器(時鐘丟失檢測器除外)都處于非活動狀態(tài),內(nèi)部振蕩器被停止(模擬外設保持在所選擇的狀態(tài),外部振蕩器不受影響)。供電電壓大于1.5 V即可保持RAM中的數(shù)據(jù)不變,且功率消耗極低,電流小于0.1 μA。
② C8051F31x器件內(nèi)部有2個電壓比較器,在比較器輸出的上升沿和下將沿都可以產(chǎn)生中斷。比較器的響應時間是可編程的,比較器的正向和負向回差電壓也是可配置的。
?、?比較器的輸出可以是與系統(tǒng)時鐘同步的或者是不同步的。即使在系統(tǒng)時鐘停止時,比較器異步輸出CP0A信號仍然可用,這就允許比較器在器件處于停機方式時工作并產(chǎn)生輸出。當被禁止時,比較器的電源電流降到小于 100 nA。
?、?C8051F310運行后,在復位期間內(nèi)部數(shù)據(jù)存儲器的內(nèi)容不發(fā)生改變,復位前存儲的數(shù)據(jù)保持不變。堆棧中的數(shù)據(jù)不發(fā)生變化。
圖1 單片機電源與電壓檢測原理
在C8051F310系統(tǒng)設計中,使用電池作為備用電源(電池電壓大于C8051F310的RAM數(shù)據(jù)保持電壓即可, 1.5 V),單片機電源與電壓檢測原理如圖1所示。主電源正常時,調(diào)整電位器,使CP0+端電壓略大于CP0-端電壓。電壓檢測部分有兩個功能:一是為單片機內(nèi)置比較器提供模擬輸入信號;二是運算放大器輸出驅動LED燈,指示主電源正常。也可通過交叉開關將CP0A連到端口引腳,替代圖1中的功率放大器驅動電源指示燈。前提條件是進入掉電模式前不禁止比較器且電池電壓大于單片機最低工作電壓,這會增加掉電期間電池功耗。
主電源VCC正常時,主電源電壓高于電池電壓,系統(tǒng)由主電源供電。 主電源發(fā)生意外使電壓下降或者丟失時,比較器0對單片機發(fā)出斷電中斷請求,單片機響應中斷,利用主電源上濾波電容上的剩余儲電,以最短的時間進入并執(zhí)行中斷服務子程序。在中斷服務子程序中,將一些必須保護的特殊功能寄存器中的內(nèi)容保存到RAM(可利用堆棧區(qū)),關閉比較器、模數(shù)轉換等模擬外設,降低功耗,最后建立掉電保護標記并使單片機進入停機工作狀態(tài)。主電源恢復后,單片機執(zhí)行上電復位,從掉電時斷點處繼續(xù)執(zhí)行程序。
掉電標志位必須使用RAM中的可尋址位(位于20H~2FH單元),因為單片機復位時,特殊功能寄存器中的通用標志位被復位。在停機方式,內(nèi)部振蕩器、CPU和所有的數(shù)字外設都停止工作,但外部振蕩器電路的狀態(tài)不受影響。因此在進行低功耗系統(tǒng)設計時建議使用內(nèi)部振蕩器;或者使用外部振蕩器,在掉電中斷服務程序中切換到內(nèi)部振蕩器,達到在掉電模式進一步降低電池消耗的目的。根據(jù)圖1,內(nèi)置比較器0配置為下降沿中斷。正向和負向回差電壓配置0,響應時間配置為方式0為佳。比較器0中斷服務子程序流程如圖2所示。
圖2 比較器0中斷服務程序流程
圖3 主程序流程
主程序流程如圖3所示。
使用C8051F310單片機的掉電模式應注意以下3點:
?、?禁止WDT(電源監(jiān)視器):防止進入掉電模式后電池電壓大于RAM數(shù)據(jù)保持電壓而小于Vrst(單片機VDD監(jiān)視器門限電壓)時復位單片機,致使單片機不能從斷點處繼續(xù)執(zhí)行程序。
?、?對于在掉電模式電池電壓大于Vrst的情況,應禁止時鐘丟失檢測器。這樣,當發(fā)生電源丟失時使單片機長期處于掉電模式,延長電池使用壽命。如果現(xiàn)場必須使用時鐘丟失檢測器,時鐘可選用片外振蕩器,即使在掉電模式,時鐘也不丟失。
?、?禁止比較器0復位。