标题: 关于51单片机掉电唤醒 [打印本页]

作者: 沟里郭嘉    时间: 2021-10-29 13:58
标题: 关于51单片机掉电唤醒
如果单片机进入掉电模式,设置了下降沿中断,那么出现下降沿信号时,是从“进入掉电模式”之后开始执行,还是执行中断程序,然后再执行“进入掉电模式”之后的语句?。
作者: maijinzhi    时间: 2021-10-29 14:28
还是执行中断程序
作者: Jiang_YY    时间: 2021-10-29 15:02
如果开了中断,一般都是先进中断。之前也碰到过有些配置可以不进中断的,具体要看规格书,里面肯定有说明的。
作者: IdeaMing    时间: 2021-10-29 15:10
STC说他说要在休眠后面加两个nop,先运行nop再进入中断,STM8L是先进中断
作者: 188610329    时间: 2021-10-29 16:55
会先执行  PCON = 0x02;  这条语句之后紧跟着的一条语句,极端情况下会两条,然后才会执行中断语句。所以,为了防止误伤,PCON = 0x02; 之后会加两个nop
作者: wulin    时间: 2021-10-29 16:58
下降沿中断唤醒首先执行掉电模式后一条指令再执行中断程序。为了保证不因此出错,所以在掉电模式语句后加两条空指令。
作者: 沟里郭嘉    时间: 2021-10-30 07:52
188610329 发表于 2021-10-29 16:55
会先执行  PCON = 0x02;  这条语句之后紧跟着的一条语句,极端情况下会两条,然后才会执行中断语句。所以, ...

原来如此,nop的作用是这样啊
作者: yzwzfyz    时间: 2021-10-30 16:08
1、什么是掉电模式?它置起了一个标记,而这个标记切断了CPU运行的时钟,使得CPU停摆。
2、CPU在执行完成一条指令后,PC会指向下一条指令。
3、当CPU执行到此条(掉电)指令后,已指向了下一条指令,但由于掉电模式标记切断了时钟,所以无发继续取指。
4、什么是唤醒?唤醒即去除【被置起的掉电标记】,即CPU重新得到CLOCK,于是继续运行。
5、如果是中断“申请”唤醒了掉电模式,则CPU解封,将继续运行,也即执行下一条指令。
6、中断源首先是申请中断(置起中断标记),是否响应,还需要判定其它条件,判断需要时间(几个时钟周期),所以中断响应会在下个(至少是下个)指令周期的开始。
然而,由于传统的51CPU执行一条指令需要12个CLOCK(一个机器周期或指令周期),而中断申请是随机发生的,不确定它发生于第几个CLOCK,这就可能废掉几个时钟周期,再从下个指令周期开始响应(即执行一条指令后响应中断)。
所以,手册建议在掉电模式后写一、两条NOP指令。NOP指令只消耗时间,先执行,后执行无关大局。
结论:先执行掉电后的指令,再进入中断。
也可以这样理解:中断服务如果被执行,必定需要运行程序,就必须解封CPU的CLOCK,CPU一但解封,它将接续之先的运行,即进入下一条指令。而中断响应还要“领导审批”后才进行,会慢一拍。

作者: wufa1986    时间: 2021-10-30 16:38
唤醒不需要开中断
作者: fanghui78    时间: 2021-10-31 18:05
还是执行中断程序
作者: ax6808    时间: 2023-1-2 02:31
今天碰到个问题:
STC8 INT0和INT1设为边沿中断,一个已内部上拉,1个已外部下拉, 掉电后仍会几秒1个周期自动唤醒,不知道是被什么中断还是干扰误唤醒??????? 仍在查找问题中,其他都很正常了,就剩这个问题;
作者: coody_sz    时间: 2023-1-2 15:32
ax6808 发表于 2023-1-2 02:31
今天碰到个问题:
STC8 INT0和INT1设为边沿中断,一个已内部上拉,1个已外部下拉, 掉电后仍会几秒1个周期自动 ...

还是仔细检查下程序或外部干扰吧,多个唤醒源我很常用的。注意,一些睡眠前就允许的中断可能会唤醒,比如串口中断允许,睡眠后,串口接收脚有下降沿就会唤醒。
作者: dpj888888    时间: 2023-1-7 13:30
要加两个nop,先运行nop再进入中断




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1