我有一个非常简单的代码,可以在终端上打印一些内容,然后直接进入睡眠状态。
由于某种原因,设备在睡眠模式下消耗更多电流。它正在绘制 0.24 mA 但我知道它应该小于这个值。如果没有睡眠,它会消耗 4.32 mA。我已经运行了最基本的软件,而且肯定缺少一些东西。
请问影响耗电量的因素有哪些?我真的需要降低功耗,但我不知道是什么导致它这么高。这是为您自己提供方便的数据表。
/*
File: main.c
Date: 2011-SEP-4
Target: PIC18F87J11
IDE: MPLAB 8.76
Compiler: C18 3.40
*/
#include <p18cxxx.h>
#include <usart.h>
#pragma config FOSC = HSPLL, WDTEN = OFF, WDTPS = 4096, XINST = OFF
#define FOSC (4000000UL)
#define FCYC (FOSC/4UL)
#define BAUD 9600UL
#define SPBRG_INIT (FOSC/(16UL*BAUD) - 1)
void main(void)
{
/* set FOSC clock to 4MHZ */
OSCCON = 0x70;
/* turn off 4x PLL */
OSCTUNE = 0x00;
/* make all ADC inputs digital I/O */
ANCON0 = 0xFF;
ANCON1 = 0xFF;
/* test the simulator UART interface */
Open1USART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, SPBRG_INIT);
putrs1USART("PIC MICROCONTROLLERS\r\n");
Close1USART();
/* sleep forever */
Sleep();
}
提前致谢!
更新 1:我注意到添加以下代码将其降低到 0.04 mA
TRISE = 0;
PORTE = 0x0C;
如果我要更改PORTE
为以下,它会增加到 0.16 mA。
PORTE = 0x00;
但我真的不明白这一切意味着什么……或者功耗是如何下降的。我必须在代码中遗漏一些东西,但我不知道它是什么。
更新 2:这段代码给了我不稳定的电流消耗。有时为 2.7 mA,有时为 0.01 mA。我怀疑这个问题WDTCONbits.REGSLP = 1;