娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年01月03日(星期五)

正在發生

2020年01月03日 | AVR 嵌入式單片機芯片的中斷系統介紹

發布者:BlissfulSunrise 來源: eefocus關鍵字:AVR  單片機芯片  中斷系統 手機看文章 掃描二維碼
隨時隨地手機看文章

中斷源和中斷向量:


缺省情況下,AVR的程序存儲區的最低端,即從Flash地址的0x0000開始用于放置中斷向量,稱做中斷向量區。中斷向量區大小 = 中斷源個數 * 每個中斷向量占據字數。對于Flash比較小的AVR處理器,每個中斷向量占據一個字的空間,用于放置一條相對轉移指令 rjmp(跳轉范圍-2K~+2K),而Flash較大的AVR,每個中斷向量占據兩個字空間,用于放置一條絕對轉移指令 jmp,用于跳轉到相應中斷的中斷服務程序的起始地址。

 

在這21個中斷中,包含1個非屏蔽中斷(RESET)3個外部中斷(INT0、INT1、INT2)和17個內部中斷。

RESET $000INT0 $002INT1 $004INT2 $024

INT0、INT1和INT2是3個外部中斷源,它們是分別由芯片外部引腳PD2、PD3、PB2上的電平變化或狀態觸發的。通過對控制寄存器MCUCR和控制與狀態寄存器MCUCSR的配置,外部中斷可以定義為由PD2、PD3、PB2引腳上的電平的下降沿、上升沿、邏輯電平變化,或者低電平觸發(INT2僅支持電平變化的邊沿觸發),這為外部硬件電路和設備向AVR申請中斷服務提供了很大的方便。


**關于計數器的中斷寄存器:TIMER2 COMP、TIMER2 OVF、TIMER1 CAPT、TIMER1 COMPA、TIMER1 COMPB、TIMER1 OVF、TIMER0 OVF、TIMER0 COMP這8個中斷是來自于ATmega16內部的3個定時計數器觸發的內部中斷。定時器處在不同的工作模式下時,這些中斷的發生條件和具體意義是不同的。



ATmega16的中斷控制:

1)、中斷優先級的確定


AVR單片機中,一個中斷在中斷向量區中的位置決定了它的優先級,位于低地址的中斷優先級高于位于高地址的中斷。所以 RESET 具有最高優先級。


AVR單片機采用固定的硬件優先級方式,不支持通過軟件對中斷優先級的重新設定。當有多個中斷源向MCU申請中斷的情況中,MCU根據中斷優先級的不同,把低優先級的中斷掛起,首先響應中斷優先級最高的那個中斷。待優先級最高的中斷服務程序執行完成返回后,再順序響應低優先級的中斷。


2)、中斷標志


AVR有兩種機制不同的中斷:帶有中斷標志的中斷(可掛起)和不帶中斷標志的中斷(不能掛起)。在 AVR 中,大多數的中斷都屬于帶中斷標志的中斷。所謂的中斷標志,是每個中斷源在其 I/O 空間寄存器中具有自己的一個中斷標志位。AVR 的硬件系統在每個時鐘周期內都會檢測(接受)外部(內部)中斷源的中斷條件。一旦中斷條件滿足,AVR 的硬件就會將置位相應的中斷標志位(置為“1”),表示向 MCU 提起中斷請求。


3)、中斷屏蔽與管理


AVR 對中斷采用兩級控制方式。兩級控制是指 AVR 有一個中斷允許的總控制位 I(既 AVR 標志寄存器 SREG 中的 I 標志位“SREG.7”),通常稱為全局中斷允許控制位。同時 AVR 為每一個中斷源都設置了獨立的中斷允許位,這些中斷允許位分散位于各中斷源所屬模塊的控制寄存器中。

▋AVR響應一個可屏蔽中斷源(假定為A中斷)的中斷的條件是:
    響應A中斷 = 全局中斷允許標志 AND 中斷A允許標志位 AND 中斷A標志
    當某個中斷條件成立后,硬件會自動將該中斷的標志位置"1",表示中斷產生,同時也作為申請中斷服務的請求信號。如果該中斷的允許位為"1",同時AVR的全局中斷允許位 I 也是"1"時,那么MCU在執行完當前一條指令之后就會響應該中斷。
▋AVR復位后,各個中斷允許位以及全局中斷允許位均被清零,這保證了程序在開始執行時(一般程序開頭是對芯片內部以及外圍系統的初始化設置)不會受到中斷的干擾。
▋AVR復位后的用戶初始化程序中,需要先對需要使用的中斷源進行必要的配置,待系統初始化過程結束后在置位 I ,使系統進入正常的工作狀態,開始響應中斷請求。

4)、中斷嵌套


AVR在響應一個中斷的過程中通過硬件將 I 標志位自動清零,這樣就阻止了MCU響應其它中斷。通常情況下,AVR是不能自動實現中斷嵌套的。如果系統中必須要實現中斷嵌套的應用,用戶可以在中斷服務程序中使用指令將全局中斷允許位開放,通過間接的方式實現中斷的嵌套處理。


濫用中斷嵌套會造成程序流程的不確定性。因此建議只有當某中斷確實需要得到實時響應時才考慮使用中斷嵌套處理,一般情況下盡量不要采用中斷嵌套,因為 AVR 本身是高速單片機,它運行速度是能足夠快速的將中斷服務程序執行完的。當然,用戶編寫中斷服務程序時,應遵循盡量短小的原則。


AVR的中斷響應過程:

1)、中斷響應的過程

AVR在響應中斷請求時,MCU會使用4個時鐘周期自動順序的完成以下任務:

? 清零狀態寄存器SREG中的全局中斷允許標志位 I ,禁止響應其他中斷。

? 將被響應中斷的標志位清零(這個只是部分中斷有此操作)。

? 將中斷斷點的地址(即當前程序計數器PC的值)壓入堆棧,并將SP寄存器中的堆棧指針減二。

? 自動將相應的中斷向量地址壓入程序計數器PC,即強行轉入執行中斷入口地址處的指令。

中斷響應過程全部由硬件自己實現,不需要用戶干預。

2)、中斷返回的過程

AVR一旦執行中斷返回RETI指令,MCU便開始了中斷返回的過程。AVR在中斷返回過程中,使用4個時鐘周期自動按順序完成以下任務:

? 從棧頂彈出2個字節的數據,將這兩個數據壓入程序計數器PC中,并將SP寄存器中的堆棧指針加2。

? 置位狀態寄存器SREG中的全局中斷允許標志位I,允許響應其他中斷。

中斷返回后,會檢測中斷標志,如果存在其他被掛起的中斷,則AVR在中斷返回后還需執行一條指令,被掛起的中斷才會得到響應。

3)、中斷現場的保護

AVR的中斷響應和返回過程主要都是由硬件自動完成的,而在整個過程中用戶程序的作用在于:

? 中斷入口處的指令。用于指引MCU轉移到中斷服務程序。

? 中斷服務程序。完成中斷服務的功能。

? 中斷返回指令。指引MCU從中斷服務程序中返回。

  為了提高中斷響應的實時性,AVR在中斷響應和返回過程中,硬件上的處理僅僅保護和恢復了中斷的斷點(PC值)。而對中斷現場沒有采取任何處理。
  因此,中斷現場的保護工作需要用戶在自己編寫的中斷服務程序中通過軟件完成,以保證主程序在被打斷時所使用的標志位和臨時寄存器等不會被中斷服務程序改變,例如,對狀態寄存器SREG的保護等!



中斷服務程序編寫:(三個框架)中斷向量區部分、主程序部分和中斷服務程序部分。

1)、中斷向量區部分


缺省情況下,AVR的中斷向量區在Flash程序存儲器的最低端。最開始的0x0000是不可屏蔽的復位上電的中斷向量,此處有一條轉移到主程序開始處的跳轉指令。


2)、主程序部分


單片機主程序的開始階段通常要對整個系統已經芯片本身進行初始化設置,然后才能進入正常的工作流程中。分為:堆棧指針的初始化、中斷源設置、開放全局中斷、各中斷源相應的中斷允許設置。

  開放中斷源本身的中斷允許位之前,最好先使用指令將該中斷的中斷標志位清除,然后馬上將中斷允許位置“1”。
  在開放中斷前清楚可能存在的中斷標志,保證了中斷開放后不會形成一次“多余”的中斷,這個“多余”的中斷有時會造成致命的錯誤。因為在對中斷源進行設置過程中,或中斷源對應的硬件模塊在工作中都有可能改變中斷標志位。

3)、中斷服務程序

由于在中斷向量處通常放置一條轉移指令,用于再次跳轉到中斷服務程序的開始處,所以中斷服務程序可以放置在FLASH空間的任何地方。

中斷服務程序中要考慮被中斷現場的保護和恢復問題。中斷的產生和響應是隨機的,而且在中斷服務程序中經常要使用一些寄存器,或對RAM中的變量進行操作,也會有判斷和跳轉的操作,這些指令可能會改變SREG中的標志位,所以必須確保當從中斷服務程序返回時,被中斷服務程序改變的現場全部正確的恢復,這樣當中斷返回后,主程序才能正確繼續運行下去。


除了一些必須在中斷中完成的工作外,對于那些不需要馬上處理的工作,如鍵盤處理、掃描顯示等應該放在主程序中完成,也就是說,中斷服務程序應盡可能的短。中斷服務程序短,不是程序指令少,而是執行一次中斷服務程序所需要的時間短。盡量減少中斷服務程序的執行時間有以下優點:

▋可以不必采用中斷嵌套技術。AVR的硬件不支持自動的中斷嵌套處理,因此中斷執行時間短的話能夠盡快的響應其他被掛起的中斷,提供系統總體的實時響應速度。

▋能夠防止丟失周期性中斷或其它短時中斷。列如,當系統有一個1ms產生一次的周期型中斷源,你的中斷服務程序就必須在1ms完成,否則將會造成下一個中斷的“丟失”。

  有很多情況下,中斷僅僅表示外圍設備或內部功能部件的工作過程已經達到某種狀態,但不需要馬上去處理,或者允許在一個比較充裕的限定時間內處理,這就可以將它們的處理工作放到主程序中完成。在這種情況下,最好的方式就是定義和使用信號量或標志變量,在中斷服務程序中只是簡單的對這些信號量或標志量進行必要的設置,不做其他處理就馬上返回主程序,由主程序中根據這些信號量或表質量的值進行和完成處理工作。
  這樣做的另一個好處是,可以大大減少中斷服務程序中的對中斷現場保護和恢復的工作,從而又減少了中斷程序的執行時間,同時也節省了堆棧空間和FLASH空間(代碼少了)。
關鍵字:AVR  單片機芯片  中斷系統 引用地址:AVR 嵌入式單片機芯片的中斷系統介紹

上一篇:codeblocks+winavr開發avr單片機(atmega16)
下一篇:使用AVR單片機驅動舵機

推薦閱讀

據外媒報道,沙特阿拉伯人工智能(AI)機器人公民索菲亞,當地時間2017年12月30日首次穿著印度女性的傳統服飾紗麗,參加在印度孟買舉辦的科技大會“Techfest”,并在會中接受訪問。座談會上有民眾向索菲亞求婚但遭婉拒,索非亞表示,“我禮貌地拒絕求婚,但謝謝你的欣賞”。世界首個獲得公民身份的機器人索菲亞。中新社記者 陳驥旻 攝索菲亞的訪問過程并非...
集微網消息,作為全球霸主、老牌廠商,三星已在印度深耕二十余年。此前6年,三星一直在印度智能手機市場鰲頭獨占。但在2017年第四季度,小米首次在印度將三星拉下王座取而代之,這距其進入印度市場僅僅三年。根據IDC的數據,2018年第一季度,小米在印度市場達到30.3%的市場份額,穩居第一。比小米低了近9個百分點的三星,只能屈居亞軍。此外,根據研究機構...
2019年12月27日,東北能源大數據中心在遼寧沈陽成立。該中心是全國首家全面支撐工業互聯網的區域級能源大數據中心。該中心以沈陽為中心,輻射東北三省一區,匯集能源行業數據,打造資源融通共享、服務優質高效、技術安全可靠的“東北能源云”體系,更好地服務東北地方經濟發展。 據了解,東北能源大數據中心位于沈陽市蘇家屯區,依托國網遼寧省電力有...
智能汽車底層技術路線之爭,正無可避免地成為汽車智能化的核心議題之一。早前,智能汽車的概念尚不普及,車內信息娛樂體驗也并未成為市場主流訴求,成熟的安卓系統為廣大車企的智能化主張提供了一種“便宜之計”,大有一統車機“江湖”的勢頭。但是,隨著“軟件定義汽車”的理念愈發深入人心,軟件與車載環境及硬件的融合成為關注焦點,安卓系統的局限性因...

史海拾趣

問答坊 | AI 解惑

射頻工程師須知

經常有網友在網絡上問,一個射頻工程師應具備哪些知識,怎樣才能把射頻工作做好。有一個關于這個問題的討論貼都跟貼了幾十條,看來這是一個普遍的問題。 那么怎么樣才能把射頻工作做好呢?可以說沒有一個人敢說這樣或者那樣就一定可以學好射頻, ...…

查看全部問答∨

沒有并口下載線怎么辦!!!

我用的是周立功的EasyFPGA030,它只支持并口下載的,但是現在手上沒有并口的下載線,我的筆記本上也沒有,同學也沒有!!難道又要花幾十甚至幾百去買個并口下載線,望高手指點!!!!!!!!!…

查看全部問答∨

傳感器參數

各位高人:     我現在選用了一個直線位移傳感器PY2系列的     它上面寫的參數是無限分辨率  位移速度是10m/s     如果我希望測量的位移精度達到0.1mm     怎樣從這兩個參數中,判斷是否滿 ...…

查看全部問答∨

關于掛載jffs2文件系統的問題。求達人相助。

您好,我想在我的  /dev/mtd0 下掛載 jffs2 文件系統。 現在我的開發板的啟動信息如下: /*************************** 5-9  *****************************/ Auto detecting flash ...ok!!! Protected 2 sectors Flash: ...…

查看全部問答∨

linux-2.6.18內核移植及根文件系統的制做(簡易)

linux-2.6.18內核移植及根文件系統的制做(簡易) 一、        去 http://www.kernel.org 下載內核,下面以 linux-2.6.18.tar.bz2 為例。         [root@Binnary ~ ]# tar –jxvf linux-2.6.18.tar.bz2 & ...…

查看全部問答∨

兩段代碼,上一段顯示為0,,下一段顯示為8.。

#include <reg52.h> #define uint unsigned int #define uchar unsigned char sbit duan=P2^6;        //申明U1鎖存器的鎖存端        sbit wei=P2^7;        //申U2鎖存器 ...…

查看全部問答∨

【為C2000做貢獻】ucos在2812上的移植

ucos在2812上的移植,大家也跑跑系統…

查看全部問答∨

modelsim se添加altera庫 還是不工作

問題是這樣的,在modelsim se中添加了altera的庫,可以看到了。但是在在quartus中調用modelsim se進行仿真時,仍然默認的是work這個庫,仍然會編譯一大堆的altera的東西,我自己添加的altera的庫沒有起到作用。 請問大俠們,該怎么設置可以在調用m ...…

查看全部問答∨

TI LaunchPad 現在結束了? 怎么買到?

團購TI LaunchPad 現在結束了? 怎么買到?…

查看全部問答∨

msp430g2553的ADC10外部參考電壓問題

我在做msp430g2553的ADC10外部參考電壓時,想設置一個5V以上的外部參考電壓,可怎么也弄不出來!請各位大蝦指教指教! 下面是我的程序: #include <intrinsics.h> #include "1602-4.h" #include "1602-4.c" /******************** ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 琼中| 松滋市| 泰兴市| 佛学| 集安市| 顺昌县| 三门峡市| 仁布县| 普洱| 右玉县| 馆陶县| 香港 | 巨野县| 萨嘎县| 卓尼县| 银川市| 合水县| 大方县| 炉霍县| 桃源县| 福清市| 泗洪县| 闻喜县| 乌什县| 平果县| 政和县| 翼城县| 加查县| 华容县| 扎赉特旗| 阜新| 荣昌县| 太湖县| 视频| 钦州市| 内黄县| 保定市| 华宁县| 成武县| 和田县| 紫金县|