IAR for AVR sleep设置
刚接触IAR for AVR 设置power_down 睡眠 跟本没做用。
代码如下:
#include <ioavr.h>
#include <intrinsics.h>
void mcu_sleep()
{
MCUCR = 0x28;
//sleep = 1;
__sleep();
//asm volatile("sleep"::);
delayms(1);
sleep = 0;
MCUCR = 0x00;
}
MCU是 mega8 在AVR studio可以正常进入睡眠。
请高手指点明路。 看看输出的汇编文件是否正确,需要有 SLEEP 指令的 t3486784401 发表于 2017-5-6 11:49
看看输出的汇编文件是否正确,需要有 SLEEP 指令的
哪个文件是汇编的,只找到hex a90文件,
本帖最后由 kust336 于 2017-5-9 09:57 编辑
找到问题了,MCUCR的SE位 规格书是第5位, 但实际是第7位。 真是坑爹货。
在Proteus 仿真时可以看到SE没有置位。
MCUCR = 0x88 可以看到进入了Idle mode了.
void mcu_sleep()
{
MCUCR = 0x88;
//sleep = 1;
__sleep();
//asm volatile("sleep"::);
delayms(1);
sleep = 0;
MCUCR = 0x00;
}
继续折腾吧……………
MCUCR = 0xA0;成功进入了 power_down
kust336 发表于 2017-5-9 09:52
找到问题了,MCUCR的SE位 规格书是第5位, 但实际是第7位。 真是坑爹货。
在Proteus 仿真时可以看到SE没 ...
某个文件记事本打开,能看到生成的汇编代码的。。
另外你这规格书微坑啊,中文的就别看了。我的的确写的是 BIT(7)
页:
[1]