51單片機的邊沿觸發及電平觸發簡介及測量




51
單片機的外部中斷有兩種觸發方式可選:電平觸發和邊沿觸發。選擇電平觸發時,單片機在每個機器週期檢查中斷源口線,檢測到低電平,即置位中斷請求標誌,向CPU請求中斷。選擇邊沿觸發方式時,單片機在上一個機器週期檢測到中斷源口線爲高電平,下一個機器週期檢測到低電平,即置位中斷標誌,請求中斷。

這個原理很好理解。但應用時需要特別注意的幾點:

1)        
電平觸發方式時,中斷標誌寄存器不鎖存中斷請求信號。也就是說,單片機把每個機器週期的S5P2採樣到的外部中斷源口線的電平邏輯直接賦值到中斷標誌寄存器。標誌寄存器對於請求信號來說是透明的。這樣當中斷請求被阻塞而沒有得到及時響應時,將被丟失。換句話說,要使電平觸發的中斷被CPU響應並執行,必須保證外部中斷源口線的低電平維持到中斷被執行爲止。因此當CPU正在執行同級中斷或更高級中斷期間,產生的外部中斷源(產生低電平)如果在該中斷執行完畢之前撤銷(變爲高電平)了,那麼將得不到響應,就如同沒發生一樣。同樣,當CPU在執行不可被中斷的指令(如RETI)時,產生的電平觸發中斷如果時間太短,也得不到執行。

2)        
邊沿觸發方式時,中斷標誌寄存器鎖存了中斷請求。中斷口線上一個從高到低的跳變將記錄在標誌寄存器中,直到CPU響應並轉向該中斷服務程序時,由硬件自動清除。因此當CPU正在執行同級中斷(甚至是外部中斷本身)或高級中斷時,產生的外部中斷(負跳變)同樣將被記錄在中斷標誌寄存器中。在該中斷退出後,將被響應執行。如果你不希望這樣,必須在中斷退出之前,手工清除外部中斷標誌。

3)        
中斷標誌可以手工清除。一箇中斷如果在沒有得到響應之前就已經被手工清除,則該中斷將被CPU忽略。就如同沒有發生一樣。

4)        
選擇電平觸發還是邊沿觸發方式應從系統使用外部中斷的目的上去考慮,而不是如許多資料上說的根據中斷源信號的特性來取捨。比如,有的書上說(《Keil C51使用技巧及實戰》),就有類似的觀點。

MCS51 
單片機系列屬於8位單片機,它是Intel公司繼MCS48系列的成功設計之後,於1980年推出的產品。由於MCS51系列具有很強的片內功能和指令系統,因而使單片機的應用發生了一個飛躍,這個系列的產品也很快成爲世界上第二代的標準控制器。51系列單片機有5箇中斷源,其中有2個是外部輸入中斷源 INT0INT1。可由中斷控制寄存器TCONIT1TCON.2)和IT0TCON.1)分別控制外部輸入中斷1和中斷0的中斷觸發方式。若爲 0,則外部輸入中斷控制爲電平觸發方式;若爲1,則控制爲邊沿觸發方式。這裏是下降沿觸發中斷。 
1  
問題的引出

幾乎國內所有的單片機資料對單片機邊沿觸發中斷的響應時刻方面的定義都是不明確的或者是錯誤的。例如文獻[1]中關於邊沿觸發中斷響應時刻的描述爲對於脈衝觸發方式(即邊沿觸發方式)要檢測兩次電平,若前一次爲高電平,後一次爲低電平,則表示檢測到了負跳變的有效中斷請求信號,但實際情況卻並非如此。

我們知道,單片機外部輸入的中斷觸發電平是TTL電平。對於TTL電平,TTL邏輯門輸出高電平的允許範圍爲2.4~5 V,其標稱值  
3.6 V;輸出低電平的允許範圍爲0~0.7 V,其標稱值爲0.3 V[2],在0.7 V2.4 V之間的是非高非低的中間電平。

這樣,在實際應用中,假設單片機外部中斷引腳INT0輸入一路由+5 V下降到0 V的下降沿信號,單片機在某個時鐘週期採樣INT0引腳得到2.4 V的高電平;而在下一個時鐘週期到來進行採樣時,由於實際的外部輸入中斷觸發信號由高電平變爲低電平往往需要一定的時間,因此,檢測到的可能並非真正的低電平(小於0.7 V),而是處於低電平與高電平之間的某一中間電平,即0.7~2.4 V的某一電平。對於這種情況,單片機是否會依然置位中斷觸發標誌從而引發中斷呢?關於這一點,國內的絕大部分教材以及單片機生產商提供的器件資料都沒有給予準確的定義,但在實際應用中這種情況確實會碰到。

以美國Analog公司生產的運算放大器芯片AD708爲例,其轉換速率(slew rate)爲0.3 V/μs,在由AD708芯片組成的比較器電路中,其輸出方波的下降沿由2.4 V下降到0.7 V,所需時間約爲: (2.4 V-0.7 V)/0.3V·μs-1=4.67 μs。即需要約 4.67 μs的過渡時間,下降沿才真正地由高電平下降爲低電平,在實際應用電路中,這個下降時間往往可達10 μs以上。對於精密的測量系統,這麼長的不確定時間是無法接受的,因此,有必要對單片機邊沿中斷觸發時刻進行精確的測定。

2  
測試波形的設計與分析

爲了測定MCS51單片機下降沿觸發的實際時刻,使用Agilent公司生產的型號爲33250A80 MHz函數/任意波形發生器(function/arbitrary waveform generator,產生出如圖1所示的週期爲20 ms的週期波形。

  週期爲20 ms的週期波形

將該波形通過單片機的外部中斷0輸入,可以測出下降沿中斷觸發的實際時刻,下面對該波形進行具體分析。建立如圖2所示的直角座標。

2  建立的直角座標設

2所示波形的週期爲T,單片機在電壓下降到y=y′時刻觸發中斷,t1′t2′t3′分別爲前後週期的中斷觸發時刻,則有:




將以上波形由單片機外部中斷0輸入,選擇邊沿觸發方式,通過中斷服務程序測取T1或者T2的值,從而可求出中斷髮生時刻的電平值y′,即邊沿觸發中斷的實際時刻。在使用單片機對中斷時刻進行測量時,使用兩個計數器,均設爲方式1(16位計數方式)。其中,第一個計數器用於記錄從程序開始執行到第一個下降沿到來所經歷的時間,第二個計數器用來記錄程序開始執行到第二個下降沿到來所經歷的時間,將兩個計數器的計數值相減便可以得到兩個下降沿之間的時間間隔。由前面的分析可知,該時間間隔可能有兩種情況: 一種是T1時間,即t1′t2′之間的時間間隔;另一種是T2時間,即t2′t3′之間的時間間隔。其中,T1T2TT1時間要小於T2時間。通過測量得到T1或者T2時間,利用式(4)便可求得下降沿觸發中斷時刻的實際電平。

3  
測試流程和相應的單片機程序

該單片機的中斷服務程序流程如圖3所示。



相應的中斷服務程序爲:

    INCR1
MOVA,R1
CJNEA,#01H,SEC
CLRTR0
MOV20H,TL0
MOV21H,TH0
CLRIE0
RETI
SEC:CLRTR1
MOV22H,TL1
MOV23H,TH1
CLREX1
CLREX0
RETI


由於程序執行有一定的延時,在中斷返回後,還需對兩個計數器的輸出值進行校正。本實驗採用偉福公司生產的H51/L仿真器爲單片機測量系統,測得T1值爲6.514 ms,由式(4)可得:y′=0.729 V,即當y′約爲0.73 V時,單片機下降沿觸發中斷。

4  
結論

本文通過設計一簡單的波形,對單片機的邊沿觸發中斷響應時刻進行了準確的測量,從而糾正了國內單片機學習資料在邊沿觸發中斷時刻方面的不明確定義,且最終結果經過了實驗驗證。 

#c51/msp430單片機

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章