今天在寫外部中斷的程序的時(shí)候,發(fā)現(xiàn)中斷特別容易受到干擾,我把手放在對(duì)應(yīng)的中斷引腳上,中斷就一直觸發(fā),沒有停過。經(jīng)過一天的學(xué)習(xí),找到了幾個(gè)解決方法,所以寫了這篇筆記。如果你的中斷也時(shí)不時(shí)會(huì)誤觸發(fā),可以對(duì)照找一下原因。
1,上下拉
中斷的外圍電路,該上拉的就上拉,該下拉就下拉,如下圖:
圖中的BAT6_#CHRG和BAT6_#DONE是連接到MCU的2個(gè)中斷引腳,其中R183已經(jīng)是上拉3.3V了,D63和D64用于指示,并沒有任何作用。除了上圖的上拉,還需要一個(gè)對(duì)地的電容下拉,接到GND,這樣就可以讓信號(hào)沒有毛刺。
2,中斷延遲檢測(cè)
在觸發(fā)中斷之后,延遲一段時(shí)間,然后去處理。個(gè)人認(rèn)為不好,中斷的好處就是實(shí)時(shí)性和優(yōu)先級(jí),現(xiàn)在在中斷里面加Delay函數(shù),不是和中斷的初衷相悖嗎?
? ?
3,清除中斷標(biāo)志位或者開關(guān)中斷源
網(wǎng)上有部分人也說,清除中斷或者開關(guān)中斷源,這樣就可以釋放中斷,把中斷“趕”出去,等下次中斷,再讓它“進(jìn)”來,但是STM32的Cortex-M內(nèi)核有一個(gè)問題,中斷標(biāo)志位清除之后,并不是馬上清除,而是要等一會(huì),這就導(dǎo)致清除標(biāo)志位的方法不太可行,只能去開關(guān)中斷源了。
4,施密特滯留器
這是網(wǎng)上上比較靠譜的一種方法,將施密特接到中斷之后,MCU之前,保證進(jìn)入中斷的信號(hào)都是經(jīng)過“滯留”的。施密特觸發(fā)器分為兩種類型,即反相施密特觸發(fā)器和同相施密特觸發(fā)器。反相施密特觸發(fā)器可以定義為一個(gè)輸出元件連接到運(yùn)算放大器的正端。類似地,同相施密特觸發(fā)器可以定義為輸入信號(hào)在運(yùn)算放大器的負(fù)端給出。
下圖是反向施密特觸發(fā)器的輸入和輸出的電壓波形關(guān)系,其中輸入也不一定是正弦函數(shù),有可能是三角波甚至是方波,反正輸出的電壓是通過閾值來判斷的。
使用NE555的施密特觸發(fā)器電路圖如下所示,下面的電路可以用基本的電子元件組成,但NE555是這個(gè)電路中必不可少的元件。NE555的兩個(gè)引腳(例如引腳4和引腳8)都與VCC電源相連。兩腳(如引腳2和引腳6)短接,通過電容將輸入相提供給這些腳。
在上圖中,電阻R1和R2形成的分壓器提供外部偏置電壓(VCC/2) ,閾值為1/3VCC和2/3VCC。
-
電子元件
+關(guān)注
關(guān)注
94文章
1431瀏覽量
57933 -
中斷
+關(guān)注
關(guān)注
5文章
905瀏覽量
42809 -
外部中斷
+關(guān)注
關(guān)注
1文章
133瀏覽量
16208
發(fā)布評(píng)論請(qǐng)先 登錄
第六章 外部中斷

極海APM32F003觸發(fā)NMI中斷的解決方案

存儲(chǔ)示波器的觸發(fā)問題及解決辦法
STM32使用外部中斷觸發(fā)ADC采樣DMA搬運(yùn)出現(xiàn)兩次進(jìn)入DMA中斷的異常情況,怎么解決?
外部中斷觸發(fā)類型為雙邊沿觸發(fā),進(jìn)入中斷回調(diào)后有什么辦法判斷該邊沿是上升沿還是下降沿?
ADS2812做UPS使用外部AD8364,PWM中斷觸發(fā)外部AD,但電流采樣不到是為什么?
串口中斷是內(nèi)部中斷還是外部中斷,串口中斷是怎么觸發(fā)的
ADS7864用BUSY接DSP的外部中斷來讀取采樣數(shù)據(jù),應(yīng)該是采樣上升沿觸發(fā)外部中斷還是下降沿?
關(guān)于中斷知識(shí)學(xué)習(xí)總結(jié)筆記
LMX2594每次外部觸發(fā)掃頻后,相位會(huì)發(fā)生變化,為什么?
單片機(jī)的中斷有哪些?各類型中斷有什么作用?
具有錯(cuò)誤觸發(fā)避免功能的過零檢測(cè)

評(píng)論