




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、恭喜你:選擇了正確的AVR學(xué)習(xí)資料ATmega16的中斷系統(tǒng) ATmega16的中斷源和中斷向量 AVR一般擁有數(shù)十個(gè)中斷源,每個(gè)中斷源都有獨(dú)立的中斷向量。 AVR的程序存儲(chǔ)區(qū)的最低端,即從Flash地址的0 x0000開始用于放置中斷向量,稱作中斷向量區(qū)。 各種型號(hào)的AVR中斷向量區(qū)的大小是不同的,由下式?jīng)Q定:中斷向量區(qū)大小 = 中斷源個(gè)數(shù) 每個(gè)中斷向量占據(jù)字?jǐn)?shù) AVR的21個(gè)中斷中,包含1個(gè)非屏蔽中斷(RESET)3個(gè)外部中斷(INT0、INT1、INT2)和17個(gè)內(nèi)部中斷, 1.外部部中斷INT0、INT1和和INT2是3個(gè)外部部中斷源源,它們們是分別別由芯片片外部引引腳PD2、PD3、
2、PB2上的電電平的變變化或狀狀態(tài)觸發(fā)發(fā)的。通通過對(duì)控控制寄存存器MCUCR和控制制與狀態(tài)態(tài)寄存器器MCUCSR的配置置,外部部中斷可可以定義義為由PD2、PD3、PB2引腳腳上的電電平的下下降沿、上升沿沿、邏輯輯電平變變化,或或者低電電平(INT2僅支持持電平變變化的邊邊沿觸發(fā)發(fā))觸發(fā)發(fā)。3個(gè)定時(shí)時(shí)計(jì)數(shù)器器觸發(fā)的的內(nèi)部中中斷MER2 COMPTIMER2OVF定定時(shí)時(shí)溢出2TIMER1CAPT撲撲捉捉溢出1TIMER1COMPA定定時(shí)時(shí)比較ATIMER1COMPB定定時(shí)時(shí)比較BTIMER1OVF定定時(shí)時(shí)溢出2TIMER0OVF定定時(shí)時(shí)溢出0TIMER0COMP定定時(shí)時(shí)比較0同步/異異步串行行接
3、收和和轉(zhuǎn)發(fā)器器USART的的內(nèi)部中中斷USARTRXC接接收一個(gè)個(gè)字節(jié)USARTTXC發(fā)發(fā)送一個(gè)個(gè)字節(jié)USARTUDRE發(fā)發(fā)送數(shù)據(jù)據(jù)寄存器器為空其它內(nèi)部部中斷SPISTC為內(nèi)部部SPI串行接接口傳送送結(jié)束中中斷ADC為為ADC單元完完成一次次A/D轉(zhuǎn)換的的中斷EE_RDY是是片內(nèi)的的EEPROM就緒(對(duì)EEPROM的操操作完成成)中斷斷ANA_COMP是由由內(nèi)置的的模擬比比較器輸輸出引發(fā)發(fā)的中斷斷TWI為為內(nèi)部兩兩線串行行接口的的中斷SPM_RDY是對(duì)片片內(nèi)的Flash寫操操作完成成中斷ATmega16的中中斷控制制中斷優(yōu)先先級(jí)的確確定1.在AVR單單片機(jī)中中,一個(gè)個(gè)中斷在在中斷向向量區(qū)中中的
4、位置置決定了了 它的的優(yōu)先級(jí)級(jí),位于于低地址址的中斷斷優(yōu)先級(jí)級(jí)高于位位于高地地址的中中斷。2AVR單片片機(jī)采用用固定的的硬件優(yōu)優(yōu)先級(jí)方方式,不不支持通通過軟件件對(duì)中斷斷優(yōu)先級(jí)級(jí)的重新新設(shè)定。AVR有有兩種機(jī)機(jī)制不同同的中斷斷:帶有中斷斷標(biāo)志的的中斷(可掛起起)不帶中斷斷標(biāo)志的的中斷(不能掛掛起)。中斷標(biāo)志志在AVR中,大大多數(shù)的的中斷都都屬于帶帶中斷標(biāo)標(biāo)志的中中斷。中斷標(biāo)志志概念每個(gè)中斷斷源在其其I/O空間寄寄存器中中具有自自己的一一個(gè)中斷斷標(biāo)志位位。AVR的硬硬件系統(tǒng)統(tǒng)在每個(gè)個(gè)時(shí)鐘周周期內(nèi)都都會(huì)檢測測(接受受)外部部(內(nèi)部部)中斷斷源的中中斷條件件。一旦旦中斷條條件滿足足,AVR的硬硬件就會(huì)
5、會(huì)將置位位相應(yīng)的的中斷標(biāo)標(biāo)志位(置為“1”),表示示向MCU提起起中斷請請求。中斷標(biāo)志志清除中斷標(biāo)志志位一般般在MCU響應(yīng)應(yīng)該中斷斷時(shí),由由硬件自動(dòng)動(dòng)清除,或在中中斷服務(wù)務(wù)程序中中通過讀/寫專專門數(shù)據(jù)據(jù)寄存器器的方式自自動(dòng)清除除。中斷標(biāo)志志位除了了由硬件件自動(dòng)清清除外也也可以使使用軟件件指令清清除,注注意:如如用軟件方法法清除,清除的的方法是是對(duì)其寫寫“1”。不帶(不不設(shè)置)中斷標(biāo)標(biāo)志的中中斷:如配置為為低電平平觸發(fā)的的外部中中斷即為為此類型型的中斷斷低電平中中斷的重重要應(yīng)用用是喚醒醒處于休休眠工作作模式的的MCU。三、中斷斷屏蔽與與管理為全局中中斷允許許控制位位:中斷允許許的總控控制位I(標(biāo)
6、志志寄存器器SREG中的的I標(biāo)志志位SREG.7)每一個(gè)中中斷源都都設(shè)置了了獨(dú)立的的中斷允允許位AVR對(duì)對(duì)中斷采采用兩級(jí)級(jí)控制方方式。這些中斷斷允許位位分散位位于各中中斷源所所屬模塊塊的控制制寄存器器中。AVR響響應(yīng)一個(gè)個(gè)可屏蔽蔽中斷源源(假定定為A中中斷)的的中斷的的條件是是:1.響應(yīng)應(yīng)A中斷斷 =全全局中中斷允許許標(biāo)志AND 中斷斷A允許許標(biāo)志AND 中斷斷A標(biāo)志志2.AVR復(fù)位位后,各各個(gè)中斷斷允許位位以及全全局中斷斷允許位位均被清清零,這這保證了了程序在在開始執(zhí)執(zhí)行時(shí)(一般程程序開頭頭是對(duì)芯芯片內(nèi)部部以及外外圍系統(tǒng)統(tǒng)的初始始化配置置)不會(huì)會(huì)受到中中斷的干干擾。3.在AVR復(fù)復(fù)位后的的用
7、戶初初始化程程序中,需要先先對(duì)需要要使用的的中斷源源進(jìn)行必必要的配配置。待待系統(tǒng)初初始化過過程結(jié)束束后再置置位I,使系統(tǒng)統(tǒng)進(jìn)入正正常的工工作狀態(tài)態(tài),開始始響應(yīng)中中斷請求求。由于AVR在響響應(yīng)一個(gè)個(gè)中斷的的過程中中通過硬硬件將I標(biāo)志位位自動(dòng)清清零,這這樣就阻阻止了MCU響響應(yīng)其它它中斷。因此通通常情況況下,AVR是是不能自自動(dòng)實(shí)現(xiàn)現(xiàn)中斷嵌嵌套的。如要系系統(tǒng)中必必須要實(shí)實(shí)現(xiàn)中斷斷嵌套的的應(yīng)用,用戶可可在中斷斷服務(wù)程程序中使使用指令令將全局局中斷允允許位開開放,通通過間接接的方式式實(shí)現(xiàn)中中斷的嵌嵌套處理理。四、中斷斷嵌套外部中斷斷觸發(fā)方方式和特特點(diǎn)INT0、INT1、INT2的中中斷觸發(fā)發(fā)方式取取決
8、于用用戶程序序?qū)CU控制制寄存器器MCUCR以以及MCU控制制與狀態(tài)態(tài)寄存器器MCUCSR的設(shè)定定。其中中,INT0和和INT1支持持4種中中斷觸發(fā)發(fā)方式,INT2支持持2種。任意電平平變化觸觸發(fā)表示示只要引引腳上有有邏輯電電平的變變化就會(huì)會(huì)產(chǎn)生中中斷申請請(不管管是上升升沿還是是下降沿沿都引起起中斷觸觸發(fā))4種觸發(fā)發(fā)方式中中,還有有以下的的一些不不同的特特點(diǎn):低電平觸觸發(fā)是不不帶中斷斷標(biāo)志類類型的,即只要要中斷輸輸入引腳腳PD2或PD3保持持低電平平,那么么將一直直會(huì)產(chǎn)生生中斷申申請。2.MCU對(duì)INT0和INT1的的引腳上上的上升升沿或下下降沿變變化的識(shí)識(shí)別(觸觸發(fā)),需要I/O時(shí)時(shí)鐘信
9、號(hào)號(hào)的存在在(由I/O時(shí)時(shí)鐘同步步檢測),屬于于同步邊邊沿觸發(fā)發(fā)的中斷斷類型。3.MCU對(duì)INT2的引腳腳上的上上升沿或或下降沿沿變化的的識(shí)別(觸發(fā)),以及及低電平平的識(shí)別別(觸發(fā)發(fā))是通通過異步步方式檢檢測的,不需要要I/O時(shí)鐘信信號(hào)的存存在。因因此,這這類觸發(fā)發(fā)類型的的中斷經(jīng)經(jīng)常作為為外部喚喚醒源,用于將將處在Idle休眠模模式,以以及處在在各種其其它休眠眠模式的的MCU喚醒。這是由由于除了了在空閑閑(Idel)模式時(shí)時(shí),I/O時(shí)鐘鐘信號(hào)還還保持繼繼續(xù)工作作,在其其它各種種休眠模模式下,I/O時(shí)鐘信信號(hào)均是是處在暫暫停狀態(tài)態(tài)的。4.如果果使用低低電平觸觸發(fā)方式式的中斷斷作為喚喚醒源,將MC
10、U從掉掉電模式式(Power-down)中喚醒醒時(shí),電電平拉低低后仍需需要維持持一段時(shí)時(shí)間才能能將MCU喚醒醒,這是是為了提提高了MCU的的抗噪性性能。拉拉低的觸觸發(fā)電平平將由看看門狗的的時(shí)鐘信信號(hào)采樣樣兩次(在通常常的5V電源和和25時(shí),看看門狗的的時(shí)鐘周周期為1s)。如果果電平拉拉低保持持2次采采樣周期期的時(shí)間間,或者者一直保保持到MCU啟啟動(dòng)延時(shí)時(shí)(start-up time)過程之之后,MCU將將被喚醒醒并進(jìn)入入中斷服服務(wù)。如如果該電電平的保保持時(shí)間間能夠滿滿足看門門狗時(shí)鐘鐘的兩次次采樣,但在啟啟動(dòng)延時(shí)時(shí)(start-up time)過程完完成之前前就消失失了,那那么MCU仍將將被喚醒
11、醒,但不不會(huì)觸發(fā)發(fā)中斷進(jìn)進(jìn)入中斷斷服務(wù)程程序。所所以,為為了保證證既能將將MCU喚醒,又能觸觸發(fā)中斷斷,中斷斷觸發(fā)電電平必須須維持足足夠長的的時(shí)間。5.如果果設(shè)置了了允許響響應(yīng)外部部中斷的的請求,則即便便是引腳腳PD2、PD3、PB2設(shè)設(shè)置為輸輸出方式式工作,引腳上上的電平平變化也也會(huì)產(chǎn)生生外部中中斷觸發(fā)發(fā)請求。這一特特性為用用戶提供供了使用用軟件產(chǎn)產(chǎn)生中斷斷的途徑徑。與外部中中斷相關(guān)關(guān)的寄存存器和標(biāo)標(biāo)志位在ATmega16中中,與外外部中斷斷有關(guān)的的寄存器器有4個(gè)個(gè),共有有11個(gè)個(gè)標(biāo)志位位。其作作用分別別是3個(gè)個(gè)外部中中斷各自自的中斷標(biāo)志志位,中中斷允許許控制位位,和用于定義外部部中斷的的觸
12、發(fā)類類型。1)MCU中中斷方式式控制寄寄存器MCUCRMCU控控制寄存存器MCUCR的低4位為INT0(ISC01、ISC00)和INT1(ISC11、ISC10)中斷觸觸發(fā)類型型控制位位MCU對(duì)對(duì)INT0、INT1引腳上上電平值值的采樣樣在邊沿沿檢測前前。1.如果果選擇脈脈沖邊沿沿觸發(fā)或或電平變變化中斷斷的方式式,那么在在INT0、INT1引腳上上的一個(gè)個(gè)脈寬大大于一個(gè)個(gè)時(shí)鐘周周期的脈脈沖變化化將觸發(fā)發(fā)中斷,過短的的脈沖則則不能保保證觸發(fā)發(fā)中斷。2.如果果選擇低低電平觸觸發(fā)中斷斷,那么低電電平必須須保持到到當(dāng)前指指令執(zhí)行行完成才才觸發(fā)中中斷。如如果是低低電平觸觸發(fā)方式式的話,中斷請請求將一一
13、直保持持到引腳腳上的低低電平消消失為止止。2)MCU控制制和狀態(tài)態(tài)寄存器器MCUCSRMCU控控制和狀狀態(tài)寄存存器MCUCSR中的的第6位位(ISC2)為INT2的中斷斷觸發(fā)類類型控制制位3)通用用中斷允允許控制制寄存器器GICR通用中斷斷控制寄寄存器GICR的高3位為INT0、INT1和和INT2的中中斷允許許控制位位 。GICR寄存器器中相應(yīng)應(yīng)的中斷斷允許位位被置為為“1”,當(dāng)外外部引腳腳INT0(或或INT1、或或INT2)上上的電平平變化時(shí)時(shí),MCU將會(huì)會(huì)響應(yīng)相相應(yīng)的中中斷請求求。4)通通用中斷斷標(biāo)志寄寄存器GIFR中斷標(biāo)志志寄存器器GIFR的高高3位為為INT0、INT1和INT2的
14、的中斷標(biāo)標(biāo)志位當(dāng)INT2.0引腳腳上的有有效事件件滿足中中斷觸發(fā)發(fā)條件后后,INTF2.0位會(huì)變變成“1”。如如果此時(shí)時(shí)SREG寄存存器中I =1,以以及GICR寄寄存器中中的INTn被被置為“1”,MCU將將響應(yīng)中中斷請求求,跳至至相應(yīng)的的中斷向向量處開開始執(zhí)行行中斷服服務(wù)程序序,同時(shí)時(shí)硬件自自動(dòng)將INTFn標(biāo)志志位清零零。用戶可以以使用指指令將INTFn清除除,清除除的方式式是寫邏邏輯“1”到INTFn,將將標(biāo)志清清零。當(dāng)當(dāng)INT0(INT1)設(shè)置置為低電電平觸發(fā)發(fā)方式時(shí)時(shí),標(biāo)志志位INTF0(INTF1)始終終為“0”,這這并不意意味著不不產(chǎn)生中中斷請求求,而是是低電平平觸發(fā)方方式是不不
15、帶中斷斷標(biāo)志類類型的中中斷觸發(fā)發(fā)。在系統(tǒng)程程序的初初始化部部分中對(duì)對(duì)外部中中斷進(jìn)行行設(shè)置時(shí)時(shí)(定義義或改變變觸發(fā)方方式),應(yīng)先將將GICR寄存存器中該該中斷的的中斷允允許位清清零,禁禁止MCU響應(yīng)應(yīng)該中斷斷后再設(shè)設(shè)置ISCn位位。而在開放放中斷允允許前,一般應(yīng)應(yīng)通過向向GIFR寄存存器中的的中斷標(biāo)標(biāo)志位INTFn寫入入邏輯“1”,將該中中斷的中中斷標(biāo)志志位清除除,然后后開放中中斷。這這樣可以以防止在在改變ISCn的過程程中誤觸觸發(fā)中斷斷。中斷服務(wù)務(wù)程序的的編寫中中斷服務(wù)務(wù)程序的的編寫編寫中斷斷服務(wù)程程序的兩兩個(gè)基本本原則:1.全面面、仔細(xì)細(xì)考慮中中斷現(xiàn)場場的保護(hù)護(hù)和恢復(fù)復(fù)。2.中斷斷服務(wù)程程序
16、應(yīng)盡盡可能的的短不同高級(jí)級(jí)語言開開發(fā)環(huán)境境中對(duì)編編寫中斷斷服務(wù)程程序的語語法規(guī)則則和處理理方法是是不同的的。用戶戶在編寫寫中斷服服務(wù)程序序前,應(yīng)應(yīng)對(duì)所使使用開發(fā)發(fā)平臺(tái),中斷程程序的編編寫方法法,中斷斷的處理理方法等等有較好好的了解解。使用ICCAVR等高高級(jí)語言言編寫中中斷服務(wù)務(wù)程序時(shí)時(shí),用戶戶通常不不必考慮慮中斷現(xiàn)現(xiàn)場保護(hù)護(hù)和恢復(fù)復(fù)的處理理,這是是由于編編譯器在在編譯中中斷服務(wù)務(wù)程序的的源代碼碼時(shí),會(huì)會(huì)在生成成的目標(biāo)標(biāo)代碼中中自動(dòng)加加入相應(yīng)應(yīng)的中斷斷現(xiàn)場保保護(hù)和恢恢復(fù)的指指令,同同時(shí)自動(dòng)動(dòng)采用RETI指令作作為中斷斷服務(wù)的的返回指指令。在ICCAVRR中,只要用用#pragma偽偽指令和和中
17、斷向向量說明明中斷服服務(wù)程序序的入口口地址。中斷服務(wù)務(wù)函數(shù)按按以下格格式定義義:#pragmainterrupt_handler:如:INT0中中斷服務(wù)務(wù)程序#pragma interrupt_handler int0_isr:2voidint0_isr(void)中斷斷服務(wù)程程序C編譯器器會(huì)自動(dòng)動(dòng)幫助用用戶產(chǎn)生生正確的的中斷向向量處的的以及初初始化堆堆棧指針針的代碼碼,同時(shí)時(shí)在中斷斷服務(wù)程程序中自自動(dòng)生成成中斷現(xiàn)現(xiàn)場保護(hù)護(hù)和恢復(fù)復(fù)(函數(shù)數(shù)中用到到的全部部寄存器器保護(hù))及使用用RETI指令令返回。圖中使用用了兩個(gè)個(gè)按鍵K1、K2,按按鍵的一一端分別別與PD2(INT0)、PD3(INT1)連連
18、接。INT0和INT1作作為外部部中斷的的輸入,采用電電平變化化的下降降沿觸發(fā)發(fā)方式,當(dāng)K1(K2)按下下時(shí),會(huì)會(huì)在PD2(PD3)引腳上上產(chǎn)生一一個(gè)高電電平到低低電平的的跳變,觸發(fā)INT0或INT1中中斷。外部中斷斷應(yīng)用實(shí)實(shí)例硬件電路路應(yīng)用中斷斷應(yīng)舉例例:定時(shí)掃描描數(shù)碼管管,INT0、INT1按鍵鍵下降沿沿出發(fā)中中斷,使使鍵值分分別加減減1/*功功能能:INT0中斷函函數(shù),使使鍵值加加1*/#pragma interrupt_handler Int0_isr:2void Int0_isr(void)delay_nms(20);/延時(shí)大大約20毫秒,去抖if(KEY0=0)/再再次判斷斷按鍵是是否按下下while(KEY0=0);/等等待按鍵鍵釋放Key_Number+;/鍵鍵值加1/*功功能能:INT1中斷函函數(shù),使使鍵值減減1*/#pragma interrupt_handler Int1_isr:3void Int1_isr(void)delay_nms(20);/延時(shí)時(shí)大約20毫秒秒,去抖抖if(KEY1=0)/再次次判斷按按鍵是否否按下while(KEY1=0);/等等待按鍵鍵釋放Key_Number-;/鍵值減減1/*功功能能:Timer0溢溢出中斷斷,數(shù)碼碼管掃描描*/#pragma int
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園安全教育日主題班會(huì)
- 水利水電工程新項(xiàng)目評(píng)審試題及答案
- 2025年中級(jí)經(jīng)濟(jì)師重要考點(diǎn)試題及回答
- 線護(hù)理工作總結(jié)與改進(jìn)計(jì)劃
- 在c語言期末考試試題及答案
- 孵化跳水測試題及答案
- 醫(yī)療機(jī)構(gòu)考試試題及答案
- 釣螃蟹面試題及答案
- 主管工作中的數(shù)據(jù)分析利用計(jì)劃
- 學(xué)校環(huán)境中的藝術(shù)裝置設(shè)計(jì)計(jì)劃
- 人造草坪足球場施工方案
- 重大疾病保險(xiǎn)介紹動(dòng)態(tài)PPT
- 工程鉆機(jī)和潛孔鉆機(jī)技術(shù)參數(shù)
- 六年級(jí)下冊道德與法治課件戰(zhàn)爭帶來的傷害人教部編版市公開課一等獎(jiǎng)省課獲獎(jiǎng)?wù)n件
- 模電直流穩(wěn)壓電源
- 標(biāo)識(shí)標(biāo)牌投標(biāo)服務(wù)方案
- 初中體育課堂學(xué)生體質(zhì)發(fā)展及體能鍛煉有效措施優(yōu)秀獲獎(jiǎng)科研論文
- 2023江蘇馬鞍山港華燃?xì)庀薰菊衅?4人高頻考點(diǎn)題庫(共500題含答案解析)模擬練習(xí)試卷
- 新高考人教版高中化學(xué)必修一全套課件
- 做一名幸福教師專題培訓(xùn)課件
- JJF 1973-2022 移動(dòng)生物檢測實(shí)驗(yàn)艙性能參數(shù)校準(zhǔn)規(guī)范
評(píng)論
0/150
提交評(píng)論