搜索
bottom↓
回复: 7

马潮avr学习板掉电模式电流测试出问题

[复制链接]

出0入0汤圆

发表于 2014-4-15 17:29:18 | 显示全部楼层 |阅读模式
我是串接电流表后直接像图上(实际当然是焊好的板)这样接的



实际测试下来电流居然有7毫安以上,怎么会这样?我是直接单独给MCU供电了呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-4-15 17:31:23 | 显示全部楼层
本帖最后由 biying 于 2014-4-15 17:40 编辑

把MCU拆下来,直接给10和11脚供电的话就正常了,休眠的时候可以到10UA以下,我的UT70D表只能测试到0.01MA。如果是像下图这样直接测试(两个短路帽取掉)也是正常的。这是什么原因?




如果像下图这样测试,负极接下面,正极先接上面两个插针,上电时有30多毫安,等休眠后再移开CPU这边插针(左边的不要离开),可以看到电流几乎没变化,也就是说MCU休眠成功了,电流测试是对的。为什么这样测试电流又是对的呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-4-20 03:24:42 | 显示全部楼层
先贴上手册里的描述:
Port Pins: When entering a sleep mode, all port pins should be configured to use minimum power. The most important thing is then to ensure that no pins drive resistive loads.

如果M16是在系统板上,且I/O口连接有外部的器件,那么你的代码在休眠前需要把那些连接外部器件的I/O口,尤其是工作在输出方式的I/O口设置成高阻输入方式(或至少输出“0”)。

简单的验证代码,MCU上电后,初始化全部的I/O口为高阻输入,然后进入休眠。此时测量电流。

CPU在休眠状态下I/O口不工作(无i/o时钟,输入检测电路也不工作),但如果此时I/O工作在输出方式,而且是输出“1”的话,此时I/O口的还是有5V的输出,如果外部接有阻性负载(驱动三极管、驱动LED等),就会输出电流。这个电流从VCC开始 -> I/O 输出 -> 流过负载 -> 板上的GND.

而当你把两个短路帽取掉测试时为正常,是因为把板子的GND与MCU的GND断开了,上面的电流不能形成回路,所以测试正常。

出0入0汤圆

 楼主| 发表于 2014-4-24 10:20:21 | 显示全部楼层
machao 发表于 2014-4-20 03:24
先贴上手册里的描述:
Port Pins: When entering a sleep mode, all port pins should be configured to u ...

谢谢马老师答复!但是按我之前的接法,电流还是有0.8毫安左右,我查了下,是复位电端和JTAG端接有上拉电阻影响了,取下芯片单独测试还是有6微安,达不到1微安以下,可能还有什么部件没有关闭。这是我的程序http://www.amobbs.com/thread-5576508-1-1.html

出0入0汤圆

 楼主| 发表于 2014-5-13 08:00:53 | 显示全部楼层
machao 发表于 2014-4-20 03:24
先贴上手册里的描述:
Port Pins: When entering a sleep mode, all port pins should be configured to u ...

马老师,能请您帮我看下这个问题吗?用CodeWizardAVR编译attiny13A和attiny85,INT0死活不能用
http://www.amobbs.com/thread-5580684-1-1.html
(出处: amoBBS 阿莫电子论坛)

出0入0汤圆

发表于 2014-5-15 09:44:46 | 显示全部楼层
本帖最后由 machao 于 2014-5-15 09:48 编辑

你中断触发方式选择错误,通常应该使用边沿触发方式,而电平触发方式通常只是应用于掉电唤醒的应用(处理程序需要特殊设计的)。

说实话,对于没有基础或者基础比较薄弱的讲,通过自学的方式来掌握MCU的应用,是非常艰难和痛苦的过程。表面的东西看似非常容易掌握,设计的东西也能动作,但是要达到真正的工程产品需求水平,碰到实际的问题能真正找到原因以及方法去解决的话,是必须要踏踏实实的从基础的学习的。因为MCU应用技术是“阳春白雪”和“下里巴人”的结合体。

下面给点参考资料:
1. 器件手册的说明提示(英文原文的,注意最后一句话)
External Interrupts

The External Interrupts are triggered by the INT0, INT1, and INT2 pins. Observe that, if enabled, the interrupts will trigger even if the INT0..2 pins are configured as outputs. This feature provides a way of generating a software interrupt. The external interrupts can be triggered by a falling or rising edge or a low level (INT2 is only an edge triggered interrupt). This is set up as indicated in the specification for the MCU Control Register MCUCR – and MCU Control and Status Register – MCUCSR.

When the external interrupt is enabled and is configured as level triggered (only INT0/INT1), the interrupt will trigger as long as the pin is held low。

2/我出版教程中的一段相关说明(《AVR单片机嵌入式系统原理与应用实践》第二版 P211页 --普通高等教育“十一五”国家级规划教材)

      在AVR中(其它MCU也类似),还有个别的中断不带(不设置)中断标志,如配置为低电平触发的外部中断即为此类型的中断。这类中断只要中断条件满足(外部输入低电平),便会一直向MCU发出中断申请。这种外部低电平中断有其特殊性,它不产生中断标志,因此不能悬挂记忆。如果由于等待时间过长而得不到响应,可能会因中断条件结束(低电平取消)而失去一次服务机会。另一方面,如果这个低电平维持时间过长,则会使中断服务完成返回后再次响应,使MCU重复响应同一中断的请求,进行重复服务。因此,在这在类中断的服务程序中,应该有破坏中断条件产生的操作,例如,在低电平中断的服务程序中,使用相应的操作以释放外部器件加在INT引脚上低电平。
低电平中断的重要应用是唤醒处于休眠工作模式的MCU。因为当MCU休眠时,其系统时钟往往处于停止工作状态,使用低电平中断可以将MCU唤醒。而这一功能边沿中断是不能代替的,因为边沿信号的检测需要系统时钟。

出0入0汤圆

 楼主| 发表于 2014-5-24 01:23:22 | 显示全部楼层
machao 发表于 2014-5-15 09:44
你中断触发方式选择错误,通常应该使用边沿触发方式,而电平触发方式通常只是应用于掉电唤醒的应用(处理程 ...

谢谢马老师指点!说的太贴切了,我这一路走来真的问题太多太多了。现在tiny13A 已经可以INT0触发了,但一样的程序TINY85就是INT0不起作用。我初学单片机做的单键兼指示灯密码锁也在学习板上通过了,等实际装机我想还会有不少麻烦!

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-10 23:10

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

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