kust336 发表于 2017-5-6 08:28:38

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可以正常进入睡眠。
   
请高手指点明路。

t3486784401 发表于 2017-5-6 11:49:13

看看输出的汇编文件是否正确,需要有 SLEEP 指令的

kust336 发表于 2017-5-6 13:21:48

t3486784401 发表于 2017-5-6 11:49
看看输出的汇编文件是否正确,需要有 SLEEP 指令的

哪个文件是汇编的,只找到hex a90文件,

kust336 发表于 2017-5-9 09:52:55

本帖最后由 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

t3486784401 发表于 2017-5-11 01:39:30

kust336 发表于 2017-5-9 09:52
找到问题了,MCUCR的SE位 规格书是第5位, 但实际是第7位。 真是坑爹货。
在Proteus 仿真时可以看到SE没 ...

某个文件记事本打开,能看到生成的汇编代码的。。

另外你这规格书微坑啊,中文的就别看了。我的的确写的是 BIT(7)



页: [1]
查看完整版本: IAR for AVR sleep设置