pic单片机功耗问题的解决

发布者:创客1992最新更新时间:2013-11-22 来源: 21ic关键字:pic单片机  功耗问题  比较器 手机看文章 扫描二维码
随时随地手机看文章

最近一周一直在做pic单片机功耗问题。由于项目使用电池供电,所以功耗问题显得非常重要。根据数据手册以及网络上的资料,影响单片机功耗主要由以下几个因素:

1:所有I/O引脚保持为高阻输入高点平或低电平

2:关闭比较器和CVref(可编程偏上参考电压)、WTD、T1OSC、BOR(欠压复位)等

3:PORTB片内弱上拉

4:所有不用的模块全部关闭,在用到时再打开

5:MCLR引脚必须处于逻辑高电平

PIC单片机在执行SLEEP指令后进入睡眠省电模式。进入SLEEP模式后,主振荡停止,如果看门狗在烧写时打开了,看门狗定时器将被清并保持运行。I/O口,周边模块和内部RAM将保持原来状态,所以如果要求睡眠后有很低功耗,应该在进入SLEEP前把IO口置为高阻抗的输入状态,不用的模块也要关闭。另有些周边模块与主时钟有关,如在异步模式下的USART,将不工作。

唤醒SLEEP的条件有很多,如IO口电平变化,AD转换结束,外部复位、看门狗溢出等,具体请参考数据手册。

当执行SLEEP指令时,PC+1的指令被预取指,当器件被一个中断条件唤醒时(这个中断的应是已使能的),如果GIE(全局中断使能位)为0,器件将继续执行SLEEP指令下面的指令。如果GIE为1,器件将执行已预取的PC+1指令后跳到0004H的中断入口。所以建议SLEEP后面紧跟着的一条指令最好是个NOP。

外部手动复位MCLR将唤醒器件并RESET,表示状态的标志位含义详见数据手册。

看门狗定时器在SLEEP下溢出将唤醒器件,然后执行SLEEP下面的指令,也有标志位指示状态。

进入SLEEP后,主振荡停振,和主振荡相关的模块都会停止工作,A/D .液晶驱动。看门狗等模块还是要在SLEEP指令执行之前关闭的。这样功耗才会最低。

关于I.O口。在16C926的DATA SHEET里,还是说到了一些。所有的I/O口,都有确定的接VDD或者VSS,而不能悬空。进入SLEEP前,所有的I/O应该置为输入口,接上拉或下拉。

对于PORTB口有内部上拉功能的应该选择不上拉。

这个项目就是因为没有关闭BOR在休眠时电流达到50UA而搞了近一周的时间才发现问题。

下面是一位网友的测试数据:

测试条件:PIC16F676使用内部4MHzRC振荡,电源电压5V,测试在睡眠下的消耗电流

单片机在外部IO口设置成输入并有固定电平的情况下,程序进入一个NOP指令和跳转指令的死循环后耗电约1.26mA

1.SLEEP之后:WDT开并256分频,每2.3秒左右唤醒一次,所有IO口为数字输入口,直接接高电平或低电平。5V,0.159mA,主要配置:_INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _MCLRE_OFF & _BODEN

2.上面的程序没动,只是配置& _BODEN_OFF,电流降为8.5μA,其它配置变化对电流消耗影响不大,WDT开与不开只差0.1μA,可见BROWN OUT DOWN功能是个耗电大户。

3.上面的配置、程序没动,所有IO输入口悬空,结果电流变为0.8-1mA,以上均没开电平变化中断,而且手接近单片机电流变的更大。可见虽然IO口看似没有吸收电流,但干扰电平引起单片机内部比较器频繁翻转的电流可以说很惊人。

4.以上配置,仅将WDT分频比改为1:1,各IO口仍然接固定电平,此时单片机WDT约每1.8mS唤醒一次,电流为8.8μA,可见RC的唤醒很省电。

5.以上配置,WDT1:256分频,将所有IO口设置成输出,并输出低电平,IO口不接任何负载,结果电流为9.5μA,与输入相比多了1μA。可见IO口的驱动也是要能量的。

6.以上配置,WDT1:256,各AD输入口设置成AD输入,其它设置成IO输入,均接固定电平,ADON置1,GO为零,此时AD模块开启,转换未开始,转换时钟采用系统时钟的1/8,电流8.8μA基本无变化,转换时钟采用AD独立RC振荡,电流仍为8.8μA,独立RC振荡,GO置1,转换完成后继续AD转换,电流为9.2μA,期间没有空余采样电容的充电时间,可见AD转换并不怎么耗电。

7.关闭AD,开启RA口的弱上拉,有弱上拉的IO悬空,WDT 1:1,电流8.8μA,将弱上拉的IO口其中一脚接地,电流猛增至212.4μA,换算下来一个弱上拉相当于一个24KΩ左右的电阻。

综上所述,耗电大户有两个:第一大户是悬空的输入脚,第二大户为弱上拉时IO口接地。第三大户为BROWN OUT DOWN RESET(电压过低复位)。若要省电的话不妨以此参考。此次试验是单片机没有任何外围电路的情况下测得,当然外围电路比较复杂,设计省电模式其它电路的耗电也要考虑。若要非常省电,那么每个功能是否开启都是锱珠必较.

关键字:pic单片机  功耗问题  比较器 引用地址:pic单片机功耗问题的解决

上一篇:Microchip推出业界首款嵌入式固件开发工具
下一篇:PIC单片机在温度测量领域的应用及仿真研究

推荐阅读最新更新时间:2024-03-16 13:30

PIC单片机实现多回路温度控制系统的设计
pic单片机应用较多,生活中许多控制系统均基于pic单片机设计得到。对于pic单片机,小编曾带来诸多介绍。本文中,将为大家带来pic单片机实例,以增进大家对于pic单片机的认知。 1.引言 对于塑料制瓶工艺,塑料加热处于溶融状态, 经高压注射成为管胚, 短时间冷却以后,经过高压空气的吹胀, 在制瓶模具中成型。其工艺特点之一是:溶融状态下的塑料定时流动; 成为管胚之后, 将与外部空气接触 2 秒钟时间左右, 产品质量不可避免地受到环境温度的影响。 制瓶工艺要求在不同的制瓶过程中, 恒定在不同的温度下, 其温度控制是制瓶的关键技术之一。目前这种设备的温度控制装置通常采用单回路的通用温度控制仪表, 温度控制无法与工艺过程直接产生
[单片机]
<font color='red'>PIC单片机</font>实现多回路温度控制系统的设计
PIC单片机生成lib文件
PIC C编译后会生成.P1的文件; 在windows 下运行cmd 命令后出现DOS窗口- 将路径设置到.P1文件所以目录(即PIC 工程文件所以目录)- 输入:libr r XX.lib XX1.p1 XX2.P1... 或 libr r XX.lpp XX1.p1 XX2.P1... 后即可把名称为XX1.P1 XX2.P1 的文件生成XX.lib(XX.lpp)的库文件。 生成库文件的好处是当最终用户只要知道如何使用,而不需要知道如何实现时。可以把重要的函数算法等保护起来。调用时只需通过头文件调用即可。
[单片机]
PIC单片机之硬件仿真的配置字问题
注意:本实验的芯片是PIC24FJ256DA210,用到的开发环境是:MPLAB IDE v8.92 编译工具是xc16-gcc.exe PIC单片机在硬件仿真的时候如果配置字配置不好,会出现不能仿真的后果,会有下面提示: PK3Err0040: The target device is not ready for debugging. Please check your configuration bit settings and program the device before proceeding. 如下图: 这时候我的配置字是这样的: _CONFIG1( WDTPS_PS32768 & FW
[单片机]
<font color='red'>PIC单片机</font>之硬件仿真的配置字<font color='red'>问题</font>
PIC单片机的硬件死锁
使用 PIC 单片机 去设计工控电路,最头痛的问题,就是 PIC 单片机在受干扰后经常硬件死锁,大部份人归咎于 “CMOS的可控硅效应” 因而产生死锁现象,一般都认为 ‘死锁后硬件复位都是无效的.只有断电。’ 但是一个成熟的商品,那须要你去断电呢? 就好像一台电冰箱,压缩机一启动,产生干扰, CPU 受干扰 因而 ‘硬件死锁’,死机在那儿,假如发现了,可以马上拔掉电源插头,隔几秒再插回,如此的动作 可以接受吗? 假如死机时没发现,死机几十天,你猜它会如何呢? -- 应该是 供给 CPU 电源的稳压 IC 烧毁了。 PIC 单片机 为什么 会硬件死锁,PIC 单片机在受干扰后经常硬件死锁,那么 PIC 要‘看门狗’ 有何用,有没
[单片机]
自学PIC单片机的要点和方法
  1.书本学习和动手编程对已有一定电子技术实践知识的读者而言,初学P IC 单片机 编程技术时,初其阶段最好是书本学习为辅、动手编程为主,其分配比例为20%与80%的关系。这样可达到速成目的。为此必须首先改变学习的思维方法。学习数字 电路 或模拟电路时(全硬件),是先读书后实验,而单片机是一种可编程的芯片,学习时是以它的指令为依据,按设计功能进行逻辑思维,再把需要的指令进行合理的组合,方能成功。如果不进行动手实践操作,仅背诵指令而不会使用指令是永远达不到学习的目的。      2.初识PIC单片机芯片的外部特性PIC单片机芯片产品上百种,初学该单片机时不可能一一学习和浏览它。最好的方法是任选一两种芯片进行初识,一旦把它的性能和使
[单片机]
自学<font color='red'>PIC单片机</font>的要点和方法
PIC单片机C语言延时程序和循环子程序
很多朋友说C中不能精确控制延时时间,不能象汇编那样直观。 其实不然,对延时函数深入了解一下就能设计出一个理想的框价出来。 一般的我们都用 for(x=100;--x;){;}此句等同与x=100;while(--x){;}; 或for(x=0;x 100;x++){;} 来写一个延时函数。 在这里要特别注意:X=100,并不表示只运行100个指令时间就跳出循环。 可以看看编译后的汇编: x=100;while(--x){;} 汇编后: movlw 100 bcf 3,5 bcf 3,6 movwf_delay l2 decfsz _delay goto l2 return 从代码可以看出总的
[单片机]
PIC单片机基础知识之AD转换
AD转换 我们先看看R1和R2,R2是个可调电阻 如果我们将R2变大 RA0这个管脚上的电压就越大。R2变小 RA0这个管脚上的电压就越小。那单片机是怎么知道电压变化的。这就需要AD转换。就是将模拟量转换成数字量。 PIC单片机如何表示电压 PIC用十位二进制位的数来表示电压,也就是数值0~1023来表示电压。那比如现在这个数值是400那这代表多少的电压?这就要根据参考电压来确定了。 比如我们设置正参考电压为3.3V ,当输入的电压为0时,数值就为0。当输入的电压为3.3V时,数值就是1023. 那如果输入的电压是1.2V代表多少电压。 首先,先算出一个数值代表多少的电压 3.3V除以1023 约等于 0
[单片机]
<font color='red'>PIC单片机</font>基础知识之AD转换
一种中速高精度模拟电压比较器的设计
1 引言 在A/D转换器中,比较器重要性能指标是工作速度、精度、功耗、输入失调电压、正反馈时产生的回程噪声等,这些指标影响和制约着整个A/D转换器的性能。高速比较器速度较快,一般采用锁存器(Latch)结构,但是失调和回程噪声较大,精度在8位以下,用于闪烁(Flash)、流水线(Pipeline)型等高速A/D转换器。高精度比较器可分辨小电压,但速度相对较慢,一般采用多级结构,且较高的精度决定失调校准的必要性。这里设计的比较器是用于输入范围2.5 V、速度1 MS/s、精度12位的逐次逼近型A/D转换器,为了满足A/D转换器的性能指标,则需采用中速高精度的比较器。 2 比较器的设计 由于该比较器用于输入电压2
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved