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;
}
:
:
:
}
文章標籤
全站熱搜
