1

我有一个非常简单的代码,可以在终端上打印一些内容,然后直接进入睡眠状态。

由于某种原因,设备在睡眠模式下消耗更多电流。它正在绘制 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;

下载代码

4

1 回答 1

3

当 OP 更改端口输出上的设置时,电流消耗从 0.24 mA 下降到 0.04 mA。

这在典型设计中是预期的,输出控制各种电路。示例:通过驱动为高电平的输出可以打开 LED(1),额外消耗 0.20 mA。在另一种设计中,通过驱动低电平的输出可以打开 LED。在第三种设计中,不驱动可能会打开 LED。

OP 需要咨询原理图或设计师来确定哪些设置会导致低功耗。此外,在低功率模式期间可能/可能不允许某些组合。

最后,在各种设计元素上降低功率、禁用等的顺序可能很重要。关闭事物的顺序通常与使它们重新上线相反。

@Chris Stratton 在发表的评论中有好主意。


(1)功率 LED。

于 2013-11-01T13:36:43.330 回答