最近做了个PIC超低功耗的项目,对功耗要求非常高。之前也看到网上一些文章,写得很好,但实现测试下来还是不行的。
这里总结一下,给同行分享一下,软件编程上要注意以下几点,
1,不用的模块要关闭
这里的模块,不光是enable位,而是PMD
2,不用的IO口要置成输出
这里和网上其它文章说的输入不一样,实测下来我这边是输出待机电流更低
3,内部稳压一定要关闭
这里千万要注意:一定要选择通过"controlled by REGSLP bit",否则单片机SLEEP后就死了,再也不能烧写了,这点不能让人理解,但实际测试确实如此
具体做法:
(1)
(2)
WDTCONbits.REGSLP = 1;
最后分享一下我进入SLEEP之间的操作,仅作参考:
PMD0 = 0XFF;
PMD1 = 0XFF;
PMD2 = 0XFF;
TRISA = 0;//xff;
TRISB = 0;//xff;
TRISC = 0;//xff;
PORTA = 0;
PORTB = 0x28;
PORTC = 0;
POWER_RF_PIN = 1;
AD_PRESS_CTRL_PIN = 1;
LED_RED_PIN = 1;
LED_BLUE_PIN = 1;
WDTCONbits.SWDTEN = 1;
IDLEN = 0;
WDTCONbits.REGSLP = 1;