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