什么是PIC18消耗功率?

时间:2013-10-31 03:48:40

标签: embedded sleep microcontroller pic

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

由于某种原因,设备在睡眠模式下消耗更多电流。它绘制的是0.24 mA,但我知道它应该小于0.24 mA。没有睡眠,它消耗4.32毫安。我已经运行了最基本的软件,但必须遗漏一些东西。

请问影响功耗的因素有哪些?我真的需要降低功耗,但我不知道是什么导致它如此之高。为了您自己的方便,这是Datasheet

/*  
     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;

存在问题

Download Code

1 个答案:

答案 0 :(得分:3)

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

这在典型设计中是预期的,输出控制各种电路。示例:通过驱动输出可以打开LED(1),再增加0.20 mA。在另一种设计中,通过驱动输出可以打开LED。在第3种设计中,不能驾驶可能会打开LED。

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

最后,降低各种设计元素的功率,禁用等的序列可能很重要。关闭事物的顺序通常会在将它们重新联机时逆转。

@Chris Stratton在发布的评论中有很好的想法。


(1)供电的LED。