哪位有用过AVR M88的请问外部中断唤醒掉电休眠,有时不明白它怎么唤醒不来; 休眠设置如
哪位有用过AVR M88的请问外部中断唤醒掉电休眠,有时不明白它怎么唤醒不来;休眠设置如下 :
EIMSK=0x01;//外部中断0使能
EICRA=0x00;//低电平方式中断
SEI(); //
SMCR=0x05;//睡眠使能 掉电模式(外部中断触发
asm("SLEEP");//换醒时先在中断执行后回到该处执行下一条
(SMCR&=~(1<<SE));//唤醒
PRR=0x09;//ad与PRTIM1关闭 //<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
当被低电平唤醒时,保证电平不为低再进入睡眠很重要,否则可能无法唤醒! fanzhezheng你好:
能看看你这几个函数么?
sleep_enable();
//进入掉电睡眠模式
powerdown();
//关闭睡眠
sleep_disable(); 调用sleep.h头文件 TO 三楼:“当被低电平唤醒时,保证电平不为低再进入睡眠很重要,否则可能无法唤醒! ”
此话何解,既然处于唤醒状态,干嘛还要保证。。。再进入睡眠???解答问题,不要误导,不懂不说话,没人会说你,象你这样乱七八糟说一通,找骂是吧?还是耍酷啊! INT0 引脚
输入上拉 这样可以的 我的情况是,INT0上拉电阻,配置成输入上拉,现象是:前脚进入休眠掉电,后脚立马从复位处开始运行,根本不用INT0低电平触发,何解?为实现唤醒时从复位处开始,我没编写INT0低电平触发中断处理程序。但INT0不触发,应该是停止运行,而不是从复位处直接运行吧?请指教! 问题解决,硬件提供的端口有误,INT0和INT1错位,郁闷! 学习中 发一段我编写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(); //进入掉电模式
}
} 貌似INTX的引脚电平变化中断才能唤醒掉电模式(M48系列)
页:
[1]