搜索
bottom↓
回复: 31

单片机长睡不醒,需要注意点什么?

[复制链接]

出0入0汤圆

发表于 2013-11-8 20:12:32 | 显示全部楼层 |阅读模式
做了一个电池供电的产品,因为需要做到低功耗,客户要求(10uA),
于是就使用了看门狗定时唤醒,(资源有限没有外部中断唤醒),
正常使用没有什么问题,研发阶段也是很完美的,待机功耗只有5uA。
但这几天量产,却出问题了,总有那么几台机第一次上电单片机不工作
就是装好电池之后,什么反应也没有,要拆掉电池从新上电才行,经检
测发现没反应时候的待机电流只有0.6uA,很明显是睡觉中的状态啊,因
为正常工作至少要几百个uA,就算定时唤醒也要5uA啊。
为此我做了下面几个动作,但都没有效果:
1.上电延时4秒钟,然后检查没有任务才睡眠。
2.睡眠之前刷新I/O口,停止外部所有中断。
3.睡眠之前重新设置看门狗寄存器。


各位大侠使用定时唤醒的时候应该注意点什么,不管何种单片机都好。
怎样尽可能避免出现唤不醒的情况。
小弟在这里感激不尽。
注:本人使用的是芯睿的7A25单片机

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2013-11-8 20:14:57 | 显示全部楼层
是不是复位没处理好

出0入0汤圆

 楼主| 发表于 2013-11-8 20:21:21 | 显示全部楼层
stevenli 发表于 2013-11-8 20:14
是不是复位没处理好

没有使用外部复位,因为脚位不够,复位脚已经设为正常的I/O口了,因此是内部复位的。现在那个口是接了一个按键和上拉电阻,应该没有影响。如果要怀疑,只能怀疑单片机的内部上电复位没做好吗?这个可能性应该也不是很大。

出0入0汤圆

发表于 2013-11-8 20:25:20 | 显示全部楼层
这个好测试,重新修改下程序,开机后先运行几秒钟的程序,这个时候电流会大点,
然后开始休眠,对比一下电流就知道有没有启动了;

出0入0汤圆

 楼主| 发表于 2013-11-8 20:44:15 | 显示全部楼层
stevenli 发表于 2013-11-8 20:25
这个好测试,重新修改下程序,开机后先运行几秒钟的程序,这个时候电流会大点,
然后开始休眠,对比一下电 ...

已经基本确定是没有醒来了,因为资料上写的睡眠的时候单片机待机电流也是1uA,我还有另一款是靠外部I/O唤醒的,待机电流也就1点几个uA。资料写工作时候的电流时0.8mA,睡眠时候是1uA,现在单片机的状态只有0.6uA肯定是没有醒来,或者单片机根本没有启动。但电压是正常的,从新上电也是一切都OK。

出0入442汤圆

发表于 2013-11-9 07:57:39 | 显示全部楼层
fox8769 发表于 2013-11-8 20:44
已经基本确定是没有醒来了,因为资料上写的睡眠的时候单片机待机电流也是1uA,我还有另一款是靠外部I/O唤 ...

看上去极有可能是内部RC复位延时太短了,以至于不能正确复位。脚位不够可以用DFF拓展,但是占用复位脚就不对了。还有一点!就算你在程序里面设置内部复位,单片机加电时程序还没有执行,那个脚当然是复位了!

出0入0汤圆

 楼主| 发表于 2013-11-9 08:19:45 | 显示全部楼层
wye11083 发表于 2013-11-9 07:57
看上去极有可能是内部RC复位延时太短了,以至于不能正确复位。脚位不够可以用DFF拓展,但是占用复位脚就 ...

复位不正常也是有可能的,有什么办法尽可能的避开这种风险吗?内部复位不是在我程序里面执行的,而是在烧录的时候就配置好的,就跟AVR的熔丝位差不多的意思。DFF拓展是不可能的,我SOP8的片子,要控制一个MOS管,一个LED,充电开关,一个按键,检测有没有外部电源,检测电池电压,温度保护,过流保护,管脚已经是复用了又复用,所以。。。最可怜的是这个片子不支持C,只能用汇编。

出0入442汤圆

发表于 2013-11-9 09:08:20 | 显示全部楼层
fox8769 发表于 2013-11-9 08:19
复位不正常也是有可能的,有什么办法尽可能的避开这种风险吗?内部复位不是在我程序里面执行的,而是在烧 ...

74595,串并转换哪。三个脚就能扩展出一大堆外设。一个595可以扩展出8个IO,两个595可以扩展出16个IO(级联)。输入也是一样。
另外你可以测试一下在RST#上面接个小的RC,看看是不是能正常启动,试一下就知道了。如果能正常启动的话,那就是上电时没有走配置复位状态。毕竟,就算它是熔丝位,根据MCU的布线,它也得在一定情况下才能执行配置后的操作。

出0入0汤圆

发表于 2013-11-9 09:17:27 | 显示全部楼层
wye11083 发表于 2013-11-9 09:08
74595,串并转换哪。三个脚就能扩展出一大堆外设。一个595可以扩展出8个IO,两个595可以扩展出16个IO(级 ...

595低功耗靠谱么?

出0入442汤圆

发表于 2013-11-9 09:27:37 | 显示全部楼层
zhujinliang2124 发表于 2013-11-9 09:17
595低功耗靠谱么?

HC系列的刚才查了下表,最大静态电流80uA,一般CMOS电路的工作电流,翻转时会多耗点电。但是,输入的可以完全关掉,只在工作时打开。你要说用CR2016供电,那我无话可说,你要是用5号电池,还是可以考虑一下的。CR2016大约有15mAh,50uA能够坚挺300小时。

出0入0汤圆

 楼主| 发表于 2013-11-9 10:28:05 | 显示全部楼层
wye11083 发表于 2013-11-9 09:27
HC系列的刚才查了下表,最大静态电流80uA,一般CMOS电路的工作电流,翻转时会多耗点电。但是,输入的可以 ...

这个不可行,客户要求是10个uA,而且加扩展的钱够我换个好一点的单片机了。

出0入0汤圆

发表于 2013-11-9 10:29:29 | 显示全部楼层
路过,学习了
。。。

出0入0汤圆

发表于 2013-11-9 14:35:20 | 显示全部楼层
在睡眠前将寄存器的值通过IO口(如:RS232)输出看看是不是都和程序配置的一样.

出0入0汤圆

发表于 2013-11-9 23:18:55 | 显示全部楼层
前来旁听,学习中。

出0入0汤圆

发表于 2013-11-10 08:42:11 来自手机 | 显示全部楼层
按键和led用一个引脚,正好可以省出复位脚。

出0入0汤圆

发表于 2013-11-10 09:04:33 | 显示全部楼层
wye11083 发表于 2013-11-9 09:08
74595,串并转换哪。三个脚就能扩展出一大堆外设。一个595可以扩展出8个IO,两个595可以扩展出16个IO(级 ...

加个595我估计楼主都换方案了 。。看样子是一个非常成本敏感的案子。这种案子为了降一两毛钱的成本都可以把一个进行中的案子推倒重来。

出0入0汤圆

发表于 2013-11-11 11:18:53 | 显示全部楼层
路过              

出0入0汤圆

发表于 2013-11-11 11:24:51 | 显示全部楼层
复位不好,如果没有复位时间选项的话就多用几个字节内存做校验,确保程序可以判断是上电复位还是WDT复位;
看现象应该是没有判断好,就直接进入睡眠了,由于初始化不完整,无法进行唤醒

出0入0汤圆

发表于 2013-11-11 12:28:27 | 显示全部楼层
我觉得就是IC内部上电复位不良造成的

出0入0汤圆

发表于 2013-11-11 12:33:07 | 显示全部楼层
wye11083 发表于 2013-11-9 07:57
看上去极有可能是内部RC复位延时太短了,以至于不能正确复位。脚位不够可以用DFF拓展,但是占用复位脚就 ...

兄弟的分析有理,内部RC复位延时太短,,这个不是很明白,能有祥解吗?我觉得是IC的上电复位这个动作没做好,以至IC没有正常执行程序

出0入442汤圆

发表于 2013-11-8 20:12:33 | 显示全部楼层
zxd08 发表于 2013-11-11 12:33
兄弟的分析有理,内部RC复位延时太短,,这个不是很明白,能有祥解吗?我觉得是IC的上电复位这个动作没做 ...

刚想起来是不是上电太慢导致的不稳定状态。MCU对ramp都有一定要求,上电时间不能过短,否则就必须要手动复位了,比如PC上电时间可能长达几秒,因此电源产生PG信号用来复位主机板。而MCU的外部RC被消掉了,靠内部RC的话,延时必定很短,因此供电到稳定时间过长,MCU说不定就卡在某个环节了。

出0入0汤圆

发表于 2013-11-11 12:55:21 | 显示全部楼层
wye11083 发表于 2013-11-11 12:37
刚想起来是不是上电太慢导致的不稳定状态。MCU对ramp都有一定要求,上电时间不能过短,否则就必须要手动 ...

是这样理解难的吧:对MCU来说上电太慢了,电压不能快速达到MCU的工作电压,假使电压从0上升到MCU的工作电压的时间是T,而MCU内部RC延时时间是H,如果T>H,则会出现MCU卡在某个环节的现象

出0入0汤圆

 楼主| 发表于 2013-11-11 18:10:31 | 显示全部楼层
wye11083 发表于 2013-11-11 12:37
刚想起来是不是上电太慢导致的不稳定状态。MCU对ramp都有一定要求,上电时间不能过短,否则就必须要手动 ...

嗯,这个分析很有道理。今天我请教了芯睿那边的工程师,他们也提到了这个问题,他们的观点是如果上电太慢,在上升到0.6-0.9V的时候,单片机里面有三极管处于导通和不导通之间,如果这个电压点时间太长有可能造成复位不正常。

出0入0汤圆

 楼主| 发表于 2013-11-11 18:11:29 | 显示全部楼层
zxd08 发表于 2013-11-11 12:55
是这样理解难的吧:对MCU来说上电太慢了,电压不能快速达到MCU的工作电压,假使电压从0上升到MCU的工作电 ...

有道理。

出0入0汤圆

 楼主| 发表于 2013-11-11 18:29:09 | 显示全部楼层
chensi007 发表于 2013-11-10 09:04
加个595我估计楼主都换方案了 。。看样子是一个非常成本敏感的案子。这种案子为了降一两毛钱的 ...

非常正确,小家电产品来的,据说一年有几十万个的量,出点小问题我都鸭梨很大,今天试产结果出来了,500台出现了7台这种问题的机。

出0入0汤圆

 楼主| 发表于 2013-11-11 18:31:18 | 显示全部楼层
mcu5i51 发表于 2013-11-11 11:24
复位不好,如果没有复位时间选项的话就多用几个字节内存做校验,确保程序可以判断是上电复位还是WDT复位;
看 ...

谢谢,这个思路很好。

出0入0汤圆

发表于 2013-11-12 10:00:40 | 显示全部楼层
fox8769 发表于 2013-11-11 18:11
有道理。

但你的产品是电池供电的啊,除非你有大电容,不然,不会出现上电太慢的现象啊

出0入0汤圆

 楼主| 发表于 2013-11-12 21:29:59 | 显示全部楼层
谢谢大家,已经确定是上电复位不正常引起了。
确定方法:
1.在电池两端并电阻,将电池电压强制放到1.5V,然后再强制充到3V,发现单片机任然处于睡眠状态。
2.在电池两端并电阻,将电池电压强制放到1.2V,然后再强制充到3V,这个时候单片机是醒着。
在烧程序的时候已经配置LVR,2V复位,但现在1.5V仍未复位,说明连低压复位都不正常,电池电压低到1.2V以下才正常复位,说明在这个过程某处出了问题。

出0入0汤圆

发表于 2014-2-19 12:20:12 | 显示全部楼层
请问楼主是什么单片机?

出0入0汤圆

发表于 2014-2-19 12:29:57 | 显示全部楼层
支持一下啊!!!!!!!!!!!!

出0入0汤圆

发表于 2014-2-19 14:06:42 | 显示全部楼层
fox8769 发表于 2013-11-12 21:29
谢谢大家,已经确定是上电复位不正常引起了。
确定方法:
1.在电池两端并电阻,将电池电压强制放到1.5V,然 ...

嗯,看功耗情况,就不是长睡不起,而是死胎!

出0入0汤圆

发表于 2014-3-13 19:35:10 | 显示全部楼层
学习了     
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 18:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表