myfriend 发表于 2008-6-13 14:35:37

哪位有用过AVR M88的请问外部中断唤醒掉电休眠,有时不明白它怎么唤醒不来; 休眠设置如

哪位有用过AVR M88的请问外部中断唤醒掉电休眠,有时不明白它怎么唤醒不来;
休眠设置如下   :      
          EIMSK=0x01;//外部中断0使能
          EICRA=0x00;//低电平方式中断
          SEI(); //
         
          SMCR=0x05;//睡眠使能 掉电模式(外部中断触发
          asm("SLEEP");//换醒时先在中断执行后回到该处执行下一条
          (SMCR&=~(1<<SE));//唤醒
          PRR=0x09;//ad与PRTIM1关闭

fanzhezheng 发表于 2008-6-14 22:15:49

//<cvavr> C Code
你的程序肯定醒不过来.下面是有关的语句,请参考.
#include <sleep.h>
//设置低电平触发
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Low level
// INT1: Off
EICRA=0x00;
EIMSK=0x01;
EIFR=0x01;
PCICR=0x00;
//睡眠使能
      sleep_enable();
//进入掉电睡眠模式
      powerdown();
//关闭睡眠
      sleep_disable();
do...something

当被低电平唤醒时,保证电平不为低再进入睡眠很重要,否则可能无法唤醒!

myfriend 发表于 2008-6-18 10:52:55

fanzhezheng你好:
能看看你这几个函数么?

sleep_enable();
//进入掉电睡眠模式
      powerdown();
//关闭睡眠
      sleep_disable();

xieyongbin 发表于 2008-6-18 20:33:54

调用sleep.h头文件

whaul 发表于 2008-7-4 14:49:43

TO 三楼:“当被低电平唤醒时,保证电平不为低再进入睡眠很重要,否则可能无法唤醒! ”
此话何解,既然处于唤醒状态,干嘛还要保证。。。再进入睡眠???解答问题,不要误导,不懂不说话,没人会说你,象你这样乱七八糟说一通,找骂是吧?还是耍酷啊!

sjzd 发表于 2008-7-4 15:16:29

INT0   引脚
输入上拉    这样可以的

whaul 发表于 2008-7-4 15:31:50

我的情况是,INT0上拉电阻,配置成输入上拉,现象是:前脚进入休眠掉电,后脚立马从复位处开始运行,根本不用INT0低电平触发,何解?为实现唤醒时从复位处开始,我没编写INT0低电平触发中断处理程序。但INT0不触发,应该是停止运行,而不是从复位处直接运行吧?请指教!

whaul 发表于 2008-7-6 15:13:47

问题解决,硬件提供的端口有误,INT0和INT1错位,郁闷!

huamao 发表于 2008-7-13 00:01:46

学习中

WinChip 发表于 2008-9-7 15:07:03

发一段我编写CV的例程:ATmega16 ,INT2实现一键开关机!
interrupt void ext_int_2(void)   
    {
      if(!key_on_off)
      {
          sleep_enable();
          PORTA&=0x00;                   //关闭LED、蜂鸣器、数码管显示
          PORTC&=0x00;
          PORTB&=0xE4;                  
          PORTD&=0x3F;
          key_on_off=1;                  //修改按键状态标志位
          powerdown();                   //进入掉电模式   
      }                                    
    }

ldhavr 发表于 2012-12-26 14:26:06

貌似INTX的引脚电平变化中断才能唤醒掉电模式(M48系列)
页: [1]
查看完整版本: 哪位有用过AVR M88的请问外部中断唤醒掉电休眠,有时不明白它怎么唤醒不来; 休眠设置如