deep sleep


在有XLP功能的MCU,可以透過deep sleep 來讓MCU達到最省電的狀態,進入方法如下:


//Way 1.
asm ("disi #4"); 
asm ("bset DSCON, #15");  
asm ("pwrsav #0"); 
Nop();
Nop();


//Way 2.
DSCONbits.DSEN=1;
Sleep();
Nop();
Nop();

不過在wake-up之後有個地方要注意, DSCONbits.RELEASE需要 read & clear,否則 TRIS & LAT 會被 core hold住(既使TRIS &LATA已重新config.),
Ex:


void main(){
systeminitial();
if (RCONbits.DPSLP == 1){
     RCONbits.DPSLP = 0;
     DSCONbits.RELEASE = 0; //the tris & lat has been hold until DSCONbits.RELEASE=0 is executed.
DSWSRC = 0; 
}
:
:
:

}

文章標籤
全站熱搜
創作者介紹
創作者 iamqq 的頭像
iamqq

iAmqq

iamqq 發表在 痞客邦 留言(0) 人氣(57)