找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4822|回復(fù): 12
收起左側(cè)

關(guān)于51單片機掉電喚醒

  [復(fù)制鏈接]
ID:378990 發(fā)表于 2021-10-29 13:58 來自手機 | 顯示全部樓層 |閱讀模式
如果單片機進入掉電模式,設(shè)置了下降沿中斷,那么出現(xiàn)下降沿信號時,是從“進入掉電模式”之后開始執(zhí)行,還是執(zhí)行中斷程序,然后再執(zhí)行“進入掉電模式”之后的語句?。
回復(fù)

使用道具 舉報

ID:398094 發(fā)表于 2021-10-29 14:28 | 顯示全部樓層
還是執(zhí)行中斷程序
回復(fù)

使用道具 舉報

ID:959346 發(fā)表于 2021-10-29 15:02 | 顯示全部樓層
如果開了中斷,一般都是先進中斷。之前也碰到過有些配置可以不進中斷的,具體要看規(guī)格書,里面肯定有說明的。
回復(fù)

使用道具 舉報

ID:276663 發(fā)表于 2021-10-29 15:10 | 顯示全部樓層
STC說他說要在休眠后面加兩個nop,先運行nop再進入中斷,STM8L是先進中斷
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2021-10-29 16:55 | 顯示全部樓層
會先執(zhí)行  PCON = 0x02;  這條語句之后緊跟著的一條語句,極端情況下會兩條,然后才會執(zhí)行中斷語句。所以,為了防止誤傷,PCON = 0x02; 之后會加兩個nop
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2021-10-29 16:58 | 顯示全部樓層
下降沿中斷喚醒首先執(zhí)行掉電模式后一條指令再執(zhí)行中斷程序。為了保證不因此出錯,所以在掉電模式語句后加兩條空指令。
回復(fù)

使用道具 舉報

ID:378990 發(fā)表于 2021-10-30 07:52 來自手機 | 顯示全部樓層
188610329 發(fā)表于 2021-10-29 16:55
會先執(zhí)行  PCON = 0x02;  這條語句之后緊跟著的一條語句,極端情況下會兩條,然后才會執(zhí)行中斷語句。所以, ...

原來如此,nop的作用是這樣啊
回復(fù)

使用道具 舉報

ID:123289 發(fā)表于 2021-10-30 16:08 | 顯示全部樓層
1、什么是掉電模式?它置起了一個標(biāo)記,而這個標(biāo)記切斷了CPU運行的時鐘,使得CPU停擺。
2、CPU在執(zhí)行完成一條指令后,PC會指向下一條指令。
3、當(dāng)CPU執(zhí)行到此條(掉電)指令后,已指向了下一條指令,但由于掉電模式標(biāo)記切斷了時鐘,所以無發(fā)繼續(xù)取指。
4、什么是喚醒?喚醒即去除【被置起的掉電標(biāo)記】,即CPU重新得到CLOCK,于是繼續(xù)運行。
5、如果是中斷“申請”喚醒了掉電模式,則CPU解封,將繼續(xù)運行,也即執(zhí)行下一條指令。
6、中斷源首先是申請中斷(置起中斷標(biāo)記),是否響應(yīng),還需要判定其它條件,判斷需要時間(幾個時鐘周期),所以中斷響應(yīng)會在下個(至少是下個)指令周期的開始。
然而,由于傳統(tǒng)的51CPU執(zhí)行一條指令需要12個CLOCK(一個機器周期或指令周期),而中斷申請是隨機發(fā)生的,不確定它發(fā)生于第幾個CLOCK,這就可能廢掉幾個時鐘周期,再從下個指令周期開始響應(yīng)(即執(zhí)行一條指令后響應(yīng)中斷)。
所以,手冊建議在掉電模式后寫一、兩條NOP指令。NOP指令只消耗時間,先執(zhí)行,后執(zhí)行無關(guān)大局。
結(jié)論:先執(zhí)行掉電后的指令,再進入中斷。
也可以這樣理解:中斷服務(wù)如果被執(zhí)行,必定需要運行程序,就必須解封CPU的CLOCK,CPU一但解封,它將接續(xù)之先的運行,即進入下一條指令。而中斷響應(yīng)還要“領(lǐng)導(dǎo)審批”后才進行,會慢一拍。
回復(fù)

使用道具 舉報

ID:879348 發(fā)表于 2021-10-30 16:38 | 顯示全部樓層
喚醒不需要開中斷
回復(fù)

使用道具 舉報

ID:619604 發(fā)表于 2021-10-31 18:05 | 顯示全部樓層
還是執(zhí)行中斷程序
回復(fù)

使用道具 舉報

ID:975054 發(fā)表于 2023-1-2 02:31 | 顯示全部樓層
今天碰到個問題:
STC8 INT0和INT1設(shè)為邊沿中斷,一個已內(nèi)部上拉,1個已外部下拉, 掉電后仍會幾秒1個周期自動喚醒,不知道是被什么中斷還是干擾誤喚醒??????? 仍在查找問題中,其他都很正常了,就剩這個問題;
回復(fù)

使用道具 舉報

ID:1034262 發(fā)表于 2023-1-2 15:32 | 顯示全部樓層
ax6808 發(fā)表于 2023-1-2 02:31
今天碰到個問題:
STC8 INT0和INT1設(shè)為邊沿中斷,一個已內(nèi)部上拉,1個已外部下拉, 掉電后仍會幾秒1個周期自動 ...

還是仔細檢查下程序或外部干擾吧,多個喚醒源我很常用的。注意,一些睡眠前就允許的中斷可能會喚醒,比如串口中斷允許,睡眠后,串口接收腳有下降沿就會喚醒。
回復(fù)

使用道具 舉報

ID:823677 發(fā)表于 2023-1-7 13:30 | 顯示全部樓層
要加兩個nop,先運行nop再進入中斷
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表