CPU內(nèi)狀態(tài)寄存器SR中的SCG0、SCG1、OscOff和CPUOff位是重要的低功耗控制位。
本文引用地址:
http://2s4d.com/article/201611/320060.htm 只要任意中斷被響應(yīng),PC和SR就被壓入堆棧保存,在中斷程序執(zhí)行的過(guò)程中,SR被清除(因?yàn)镾R被清除,其GIE也被清除,所以中斷嵌套被禁止,如果手動(dòng)將GIE置位,將不論優(yōu)先級(jí)的將該中斷服務(wù)程序中斷),CPU進(jìn)入AM模式,中斷處理之后,又可以恢復(fù)先前的工作方式(在中斷處理子程序執(zhí)行期間,通過(guò)間接訪問(wèn)堆棧數(shù)據(jù),可以操作這些位;這樣允許程序在中斷返回(RETI)后,以另一種功耗方式繼續(xù)運(yùn)行)。
各控制位作用如下:
SCG1:當(dāng)SCG1復(fù)位時(shí),使能SMCLK;SCG1置位則禁止SMCLK。
SCG0:當(dāng)SCG0復(fù)位時(shí),直流發(fā)生器被激活(相當(dāng)于DCO被激活),只有SCG0被置位且DCOCLK信號(hào)沒(méi)有用于MCLK或SMCLK,直流發(fā)生器才能被禁止。
OscOff:當(dāng)OscOff復(fù)位時(shí),LFXT晶體振蕩器激活,只有當(dāng)OscOff被置位且不用于MCLK或SMCLK時(shí),LFXT晶體振蕩器才能被禁止。
CPUOff:當(dāng)CPUOff復(fù)位時(shí),用于CPU的時(shí)鐘信號(hào)MCLK被激活,當(dāng)CPUOff置位時(shí),MCLK停止。
控制位SCG1、SCG2、OscOff和CPUOff可由軟件配置成6種不同的工作模式:1種活動(dòng)模式和5種低功耗模式。如下表所示:
工作模式 | 控制位 | CPU狀態(tài)、振蕩器及時(shí)鐘 |
活動(dòng)模式 (AM) | SCG1=0 SCG0=0 OscOff=0 CPUOff=0 | CPU處于活動(dòng)狀態(tài) MCLK活動(dòng) SMCLK活動(dòng) ACLK活動(dòng) |
低功耗模式0 (LPM0) | SCG1=0 SCG0=0 OscOff=0 CPUOff=1 | CPU處于禁止?fàn)顟B(tài) MCLK被禁止 SMCLK活動(dòng) ACLK活動(dòng) |
低功耗模式1 (LPM1) | SCG1=0 SCG0=1 OscOff=0 CPUOff=1 | CPU處于禁止?fàn)顟B(tài) 如果DCO未用作MCLK或SMCKL,則直流發(fā)生器被禁止,否則仍保持活動(dòng) MCLK被禁止 SMCLK活動(dòng) ACLK活動(dòng) |
低功耗模式2 (LPM2) | SCG1=1 SCG0=0 OscOff=0 CPUOff=1 | CPU處于禁止?fàn)顟B(tài) 如果DCO未用作MCLK或SMCKL,自動(dòng)被禁止 MCLK被禁止 SMCLK被禁止 ACLK活動(dòng) |
低功耗模式3 (LPM3) | SCG1=1 SCG0=1 OscOff=0 CPUOff=1 | CPU處于禁止?fàn)顟B(tài) DCO被禁止,直流發(fā)生器被禁止 MCLK被禁止 SMCLK被禁止 ACLK活動(dòng) |
低功耗模式4 (LPM4) | SCG1=X SCG0=X OscOff=1 CPUOff=1 | CPU處于禁止?fàn)顟B(tài) DCO被禁止,直流發(fā)生器被禁止 所有振蕩器停止工作 MCLK被禁止 SMCLK被禁止 ACLK被禁止 |
評(píng)論