外部中斷相關(guān)注意事項以及常見問題
賽元單片機提供多個外部中斷口 INT0~INT2,當外部中斷口有中斷條件發(fā)生時,外部 中斷就發(fā)生了。其中 INT0 和 INT1 會產(chǎn)生中斷標志為 IE0/IE1,正常情況下用戶不需要處 理,硬件會自動清除。外部中斷使用時,用戶可以根據(jù)需要設(shè)成上升沿、下降沿或者雙沿中 斷,可通過設(shè)置 SFR(INTxF 和 INTxR)來實現(xiàn)。外部中斷 INT0~2 還可以喚醒單片機的 STOP。?
本文檔主要是包含外部中斷在使用過程中的相關(guān)注意事項以及常見問題,主要包含以下 幾個內(nèi)容:?
1、外部中斷注意事項;?
2、同時使用同組的多個外部中斷口時,應(yīng)該如何判斷外部中斷的中斷觸發(fā)源;?
3、使用外部中斷后出現(xiàn)死機或復位的現(xiàn)象是什么原因;?
4、使用外部中斷喚醒低功耗時,出現(xiàn)無法喚醒的現(xiàn)象是什么原因;?
5、使用觸摸按鍵喚醒低功耗的庫時,同時使用外部中斷喚醒,觸摸按鍵出現(xiàn)無響應(yīng)的情況 是什么原因。?
以下為具體內(nèi)容:?
1、外部中斷注意事項?
1) 在使用外部中斷功能時,請將對應(yīng)的 IO 口設(shè)置為輸入模式;?
2) IO 口模式需要先設(shè)置,再進行相應(yīng)的外部中斷配置,反過來操作有可能會誤產(chǎn)生一 次邊沿中斷;?
3) 同組外部中斷共用一個中斷向量,如果同時使用了同一組外部中斷的多個中斷口,用 戶需要在中斷服務(wù)函數(shù)內(nèi)讀取 IO 口電平,判斷中斷的來源,再執(zhí)行對應(yīng)的操作;?
4) 當用戶程序在初始化完外部中斷 0/1 后(除 SC92F732X 和 SC92F725X 外),若后 續(xù)程序中有操作到 TCON 的 TR1、TR0、TF1、TF0 位的場合,需要在外部中斷 0/1 的中斷服務(wù)函數(shù)內(nèi)手動清除外部中斷標志,否則可能會導致外部中斷標志位無法硬件 清除;?
5) 使用 SC92F732X 和 SC92F725X 時,當用戶程序在初始化完外部中斷 0/1 后,若后 續(xù)程序中有操作到 TCON 的 TR1、TR0、TF1、TF0 位的場合,外部中斷 0/1 只能使 用其中一個,同時外部中斷服務(wù)函數(shù)內(nèi)需要手動清除兩個外部中斷標志,否則會導致 外部中斷標志位無法硬件清除。(若后續(xù)程序不需要操作到 TCON 寄存器的則可以同 時使用外部中斷 0 和 1,不需要軟件清除標志)。?
2、同時使用同組的多個外部中斷口時,應(yīng)該如何判斷外部中斷的中斷觸發(fā)源?
同組外部中斷共用一個中斷向量,如果同時使用了同一組外部中斷的多個中斷口,用戶 可以在中斷服務(wù)函數(shù)內(nèi)讀取 IO 口電平,判斷中斷的來源,再執(zhí)行對應(yīng)的操作。?
3、使用外部中斷后出現(xiàn)死機或復位的現(xiàn)象是什么原因?
檢查用戶程序在初始化完外部中斷 0/1 后,后續(xù)程序中是否有操作到 TCON 的 TR1、 TR0、TF1、TF0 位的場合,如果有的話,需要在外部中斷服務(wù)函數(shù)內(nèi)手動清除外部中 斷標志,否則可能會導致外部中斷標志無法硬件清除,導致頻繁進入外部中斷,從而表 現(xiàn)為死機或看門狗溢出復位的現(xiàn)象。?
4、使用外部中斷喚醒低功耗時,出現(xiàn)無法喚醒的現(xiàn)象是什么原因?
使用外部中斷無法喚醒低功耗時,可以從以下方面排查:?
1) 檢查外部中斷是否產(chǎn)生,可以在外部中斷服務(wù)函數(shù)里面加入 IO 口的翻轉(zhuǎn),通過測 試 IO 翻轉(zhuǎn)確認是否有外部中斷產(chǎn)生,如果沒有外部中斷產(chǎn)生就查看外部中斷初始 化是否正確,總中斷是否打開,外部中斷口上是否有觸發(fā)外部中斷的波形;?
2) 測試芯片功耗,查看有外部中斷產(chǎn)生時芯片功耗是否有上升,看是否為芯片實際已 經(jīng)從低功耗喚醒,只是沒有喚醒的現(xiàn)象,例如:亮燈等;?
3) 檢查程序中是否喚醒又立馬進入了低功耗模式,導致喚醒的時間太短,從而看不到 被喚醒的過程;?
4) 檢查用戶在初始化完外部中斷 0/1 后,后續(xù)的程序中是否有操作到 TCON 寄存器的 TR1、TR0、TF0、TF1,如果有的話,有可能會出現(xiàn)外部中斷標志無法硬件清除, 導致頻繁進入外部中斷,從而表現(xiàn)為無法喚醒,需要在外部中斷服務(wù)函數(shù)中手動清 除外部中斷標志。?
5、使用觸摸按鍵喚醒低功耗的庫時,同時使用外部中斷喚醒,觸摸按鍵出現(xiàn)無響應(yīng)的情況是什么原因?
使用觸摸按鍵喚醒低功耗的庫,同時使用外部中斷喚醒,當使用外部中斷喚醒時,觸摸 按鍵會無響應(yīng),建議檢查以下兩個方面?
1) 檢查外部中斷喚醒后,是否調(diào)用了 TouchKey_QuitLowPowerMode 函數(shù);?
2) 檢查所使用的庫文件是否為最新版本。
