4810|12

59

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

AVR xmega 的 sleep模式怎么唤醒 [复制链接]

3芯积分
我做的是一个锂电池供电的系统,需要进入sleep的powerdown模式进行节电。


The only interrupts that can wake up the MCU are the Two Wire Interface address match interrupts, and asynchronous port interrupts, e.g pin change.


手册上说的可以用 外部中断(INT0 INT1 INT2)唤醒,我想问的就是  是只要发生这些中断就会被唤醒?

不能指定特定的某个中断进行唤醒吗?(INT0 INT1 都已被开启)

最佳答案

查看完整内容

或者在sleep_mode()函数后面重新打开也是可以的

最新回复

哈哈,我只是个想法,你自己尝试下呗  详情 回复 发表于 2015-7-28 18:35
点赞 关注
 

回复
举报

1149

帖子

3

TA的资源

五彩晶圆(初级)

沙发
 
虽然不是很熟这个处理器,但是可以在进入低功耗之后disable掉不想唤醒的就好了~只留下要用的~

点评

在sleep_mode();之前需要把所有耗电的外设都关闭?然后在唤醒中断的服务函数里重新打开?  详情 回复 发表于 2015-7-28 14:15
 
个人签名construction complete!
 
 

回复

59

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
zqjqq88 发表于 2015-7-28 13:54
虽然不是很熟这个处理器,但是可以在进入低功耗之后disable掉不想唤醒的就好了~只留下要用的~

在sleep_mode();之前需要把所有耗电的外设都关闭?然后在唤醒中断的服务函数里重新打开?

点评

对,我是这个意思~  详情 回复 发表于 2015-7-28 16:13
 
 
 

回复

1798

帖子

0

TA的资源

五彩晶圆(初级)

4
 
或者在sleep_mode()函数后面重新打开也是可以的

点评

电路板mcu上电休眠---->开机按钮唤醒---->pc开机------pc关机或者睡眠--->给出某管脚中断---->电路板mcu休眠 这个流程的话,出现两个sleepmode 怎么解?  详情 回复 发表于 2015-7-28 15:36
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(中级)

5
 
sint27 发表于 2015-7-28 14:35
或者在sleep_mode()函数后面重新打开也是可以的

电路板mcu上电休眠---->开机按钮唤醒---->pc开机------pc关机或者睡眠--->给出某管脚中断---->电路板mcu休眠


这个流程的话,出现两个sleepmode  怎么解?

点评

看样子你这是计算PC开机时长? 我的理解是你这个流程其实是一个循环: PC开机按钮唤醒(中断形式); while(1) { if(PC关机)mcu休眠; ------------------------- 计时; } 那么外设的重新打开操  详情 回复 发表于 2015-7-28 15:54
看样子你这是计算PC开机时长? 我的理解是你这个流程其实是一个循环: while(1) { }  详情 回复 发表于 2015-7-28 15:48
 
 
 

回复

1798

帖子

0

TA的资源

五彩晶圆(初级)

6
 
哦,小法 发表于 2015-7-28 15:36
电路板mcu上电休眠---->开机按钮唤醒---->pc开机------pc关机或者睡眠--->给出某管脚中断---->电路板mcu ...

看样子你这是计算PC开机时长?
我的理解是你这个流程其实是一个循环:
while(1)
{

}
 
 
 

回复

1798

帖子

0

TA的资源

五彩晶圆(初级)

7
 
哦,小法 发表于 2015-7-28 15:36
电路板mcu上电休眠---->开机按钮唤醒---->pc开机------pc关机或者睡眠--->给出某管脚中断---->电路板mcu ...

看样子你这是计算PC开机时长?
我的理解是你这个流程其实是一个循环:

PC开机按钮唤醒(中断形式);

while(1)
{
if(PC关机)mcu休眠;
-------------------------
计时;
}

那么外设的重新打开操作可以放在虚线处,休眠时中断唤醒后,程序会从休眠的下一条语句开始运行

点评

没有计时 就是一个电源控制板来控制pc工控机开机关机 你说的这个我先试试 谢谢!  详情 回复 发表于 2015-7-28 16:40
 
 
 

回复

1149

帖子

3

TA的资源

五彩晶圆(初级)

8
 
哦,小法 发表于 2015-7-28 14:15
在sleep_mode();之前需要把所有耗电的外设都关闭?然后在唤醒中断的服务函数里重新打开?

对,我是这个意思~

点评

只要有相关中断 肯定会自动退出休眠的意思咯?不需要我做任何操作吧  详情 回复 发表于 2015-7-28 16:41
 
个人签名construction complete!
 
 

回复

59

帖子

0

TA的资源

一粒金砂(中级)

9
 
sint27 发表于 2015-7-28 15:54
看样子你这是计算PC开机时长?
我的理解是你这个流程其实是一个循环:

PC开机按钮唤醒(中断形式); ...

没有计时   就是一个电源控制板来控制pc工控机开机关机  

你说的这个我先试试   谢谢!
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(中级)

10
 
zqjqq88 发表于 2015-7-28 16:13
对,我是这个意思~

只要有相关中断  肯定会自动退出休眠的意思咯?不需要我做任何操作吧

点评

哈哈,我只是个想法,你自己尝试下呗  详情 回复 发表于 2015-7-28 18:35
 
 
 

回复

1149

帖子

3

TA的资源

五彩晶圆(初级)

11
 
哦,小法 发表于 2015-7-28 16:41
只要有相关中断  肯定会自动退出休眠的意思咯?不需要我做任何操作吧

哈哈,我只是个想法,你自己尝试下呗
 
个人签名construction complete!
 
 

回复

59

帖子

0

TA的资源

一粒金砂(中级)

12
 
TWI 地址匹配中断是个什么东西 ,一直唤醒休眠、
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(中级)

13
 
  1. while(1)
  2.   {       
  3.          /*if (PC_Stutes==0)
  4.           {
  5.                  SLEEP_ON();
  6.           }
  7.           else if (PC_Stutes==1)
  8.           {
  9.                   
  10.           }*/
  11.         if (PC_Stutes==0)
  12.         {
  13.                 //WriteCom(0x17);
  14.                 PORTD7_INT1_MASK_Disable;  //2.关PD.2中断
  15.                 PORTF_INT_Disable;         //  关PF.2中断
  16.                 ADCA_CTRLA=0x00;           //3.AD转换关
  17.                 USARTC0_INT_Disable;
  18.                 WDT_Disable();
  19.                 RTC_INT_Disable;
  20.                 RTC_Disable;              //关看门狗、RTC
  21.                 SLEEP_ON();
  22.                 //WriteCom(0x19);
  23.         }
  24.         else if (PC_Stutes==1)
  25.         {
  26.                 if (WAKEUP_Flag==1)
  27.                 {
  28.                         PORTD7_INT1_MASK_Enable;   //2.开PD.7中断
  29.                         PORTF_INT_Enable;          //  开PF.2中断
  30.                         ADCA_CTRLA=0x01;           //3.AD转换开
  31.                         USARTC0_INT_Enable;
  32.                         RTC_Enable;               //开看门狗、RTC
  33.                         RTC_INT_Enable;
  34.                         WDT_Enable();
  35.                         WAKEUP_Flag=0;
  36.                 }
  37.         /**************************/       
  38.         }
复制代码



这几天调试了点别的东西,powerdown断断续续也测试完了 ,po上代码  ,看了应该就明白了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表