中斷管理和復(fù)位課件_第1頁
中斷管理和復(fù)位課件_第2頁
中斷管理和復(fù)位課件_第3頁
中斷管理和復(fù)位課件_第4頁
中斷管理和復(fù)位課件_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

什么是中斷?中斷可以做什么?中斷怎么去做的?2812中斷有什么自己特點?第四章中斷管理和復(fù)位等待20分鐘等待20分鐘查詢方式中斷方式一、中斷矢量二、可屏蔽中斷三、非屏蔽中斷四、非法指令陷阱五、復(fù)位操作六、低功耗模式七、片內(nèi)外設(shè)的中斷擴展第四章中斷管理和復(fù)位7第4章中斷管理和復(fù)位什么是中斷中斷(Interrupt)是硬件和軟件激發(fā)的信號,它使得CPU暫停當(dāng)前的主程序,并轉(zhuǎn)而去執(zhí)行一個中斷服務(wù)子程序。中斷請求可由外圍設(shè)備和硬件產(chǎn)生(ADC、DAC、外設(shè)),也可作為特殊事件發(fā)生的標志信號(定時器計數(shù)器溢出)。可屏蔽中斷:可用軟件禁止或使能;不可屏蔽中斷:不能被禁止。所有軟件觸發(fā)的中斷均屬于不可屏蔽中斷。處理中斷過程:1.接收中斷請求:由軟件中斷(從程序代碼中)或者硬件中斷(從一個引腳或一個基于芯片的設(shè)備)提出請求去暫停當(dāng)前主程序的執(zhí)行。2.響應(yīng)中斷:CPU必須能夠響應(yīng)中斷請求。如果中斷是可屏蔽的,則必須滿足一定的條件,按照一定的順序去進行測試。而對于非屏蔽硬件中斷和軟件中斷,CPU會立即作出響應(yīng)。3.準備執(zhí)行中斷服務(wù)程序并保存寄存器值。(1)完整地執(zhí)行完當(dāng)前指令,清除流水線中還沒有到達第二階段的所有指令。(2)將寄存器ST0、T、AH、AL、PH、PL、AR0、ARl、DP、STl、DBGSTAT、PC和IER的內(nèi)容保存到堆棧中,以便自動保存主程序的大部分內(nèi)容(現(xiàn)場保護)。(3)取回中斷向量并把它放入程序寄存器PC中。4.執(zhí)行中斷服務(wù)子程序:CPU進入預(yù)先規(guī)定的向量地址,并且執(zhí)行已寫好的中斷服務(wù)程序ISR。第4章中斷管理和復(fù)位C28x中斷源C28xCORE2個不可屏蔽中斷/RSNMI14個可屏蔽中斷(INT1–INT14)INT1INT2INT3INT4INT5INT6INT7INT8INT9INT10INT11INT12INT13INT14RSNMIX2812中斷從上至下分成三級:

CPU級中斷

PIE級中斷

外設(shè)中斷10第4章中斷管理和復(fù)位C28xFastInterruptResponseManager支持96個獨立的中斷直接訪問專用RAM(向量表)自動標志更新自動現(xiàn)場保護軟件激發(fā)(INTR/TRAP)可屏蔽中斷-順序執(zhí)行非屏蔽中斷/軟立即執(zhí)行28xCPUInterruptlogic28xCPUINTMIFRIER96PeripheralInterrupts12x8=9612interruptsINT1toINT12PIERegisterMapPIEmoduleFor96interruptsT ST0 AH ALPH PLAR1(L) AR0(L)DP ST1DBSTAT IERPC(msw) PC(lsw)AutoContextSave▲

C28x支持32個CPU級中斷向量,包括復(fù)位向量。每一向量是一個22位的地址,該地址是相應(yīng)中斷服務(wù)程序ISR的入口地址。每一個32位的向量被保存在一個連續(xù)地址中。見書中表4-1-1

▲中斷向量地址的低16位保存該向量的低16位,高地址則保存它的高6位。當(dāng)—個中斷被確定后,其22位的向量被取回,而地址的高10位被忽略。

一、中斷矢量

第4章中斷管理和復(fù)位1314▲向量表可以映像到程序空間的底部或頂部,這取決于狀態(tài)寄存器ST1的向量映像位VMAP,如果VMAP位是0,向量就映像在以000000h開始的地址上;如果其值是1,向量就映像到以3FFFC0h開始的地址上?!?/p>

VMAP位可以由SETCVMAP指令進行置位,由CLRCVMAP指令進行復(fù)位。VMAP的復(fù)位值是1。一、中斷矢量

第4章中斷管理和復(fù)位▲

14個通用中斷——INTl~INTl4為仿真而設(shè)計的中斷——DLOGINT(數(shù)據(jù)標志中斷)和TOSINT(實時操作系統(tǒng)中斷)是為仿真目的而設(shè)計。▲

中斷寄存器:

√中斷標志寄存器IFR——l6位寄存器IFR包含的標志位表明相應(yīng)中斷在等待CPU的確認。外部輸入線INTl~INTl4在CPU的每—個時鐘周期都被采樣。如果識別出—個中斷信號,IFR相應(yīng)的位就被置位和鎖存。DLOGINT或RTOSINT,CPU片內(nèi)分析邏輯送來的信號使得相應(yīng)標志位被設(shè)置和鎖存。

√中斷使能寄存器IER——包含的每一位為可屏蔽中斷進行使能和關(guān)閉。

√調(diào)試中斷使能寄存器DBGIER——包含的每一位為可屏蔽中斷進行使能和關(guān)閉。表明了當(dāng)CPU處于實時仿真模式時哪一個中斷可以利用。二、可屏蔽中斷

第4章中斷管理和復(fù)位▲

可屏蔽中斷也利用狀態(tài)寄存器ST1的0位,即中斷全局屏蔽位INTM,可用來進行全局使能中斷和關(guān)閉中斷?!坍?dāng)INTM=0時,這些中斷全局使能;√當(dāng)INTM=1時,這些中斷全局關(guān)閉?!?/p>

在IFR中一個標志關(guān)閉后,直到IER、DBGIER和INTM位被使能,否則相應(yīng)的中斷將不再響應(yīng)。表4-2-1使能可屏蔽中斷的條件中斷處理過程 使能可屏蔽中斷的條件標準 INTM=0IFR中相應(yīng)位是“1”DSP工作在實時模式且暫停 IFR和中DBGIER相應(yīng)位是“1”二、可屏蔽中斷

第4章中斷管理和復(fù)位中斷全局使能INTM用來做全局的使能/禁止中斷:使能: INTM=0禁止: INTM=1(resetvalue)INTM只能被匯編語言修改:INTMST1

Bit0/***GlobalInterrupts***/asm(“CLRCINTM”);//enableglobalinterruptsasm(“SETCINTM”);//disableglobalinterrupts▲

為了識別未確認中斷,可以利用指令PUSHIFR,然后測試堆棧的值?!?/p>

運用ORIFR指令來設(shè)置IFR位,▲

利用指令A(yù)NDIFR,#0或硬件復(fù)位可以對所有的未決中斷進行清0。注意:當(dāng)通過指令TRAP發(fā)出中斷請求時,如果IFR的相應(yīng)位被置位,CPU并不會自動清除它。如果有一個應(yīng)用請求,它的IFR已被清0,則必須在中斷服務(wù)子程序中將相應(yīng)位清0。中斷標志寄存器(IFR)

二、可屏蔽中斷

RTOSINT

D15D14D13D12D11D10D9D8INT14INT13INT12INT11INT10INT9

R/W-0

R/W-0R/W-0

R/W-0

R/W-0

R/W-0R/W-0R/W-0DLOGINTINT8

D7D6D5D4D3D2D1D0INT6INT5INT4INT3INT2INT1

R/W-0

R/W-0R/W-0

R/W-0

R/W-0

R/W-0R/W-0R/W-0INT7中斷標志寄存器IFR第4章中斷管理和復(fù)位20▲若要使能中斷,需要把它的相應(yīng)位置1;▲若要關(guān)閉中斷,應(yīng)該清除它的相應(yīng)位。▲可以使用指令MOV的兩種語法對寄存器IER進行讀和寫?!?/p>

ORIER指令可以用來設(shè)置IER位,▲

ANDIER指令可以用來清除IER位。注意:當(dāng)執(zhí)行ANDIER和ORIER指令時,應(yīng)確保它們不會修改狀態(tài)位15(RTOSINT),除非當(dāng)前處于實時操作系統(tǒng)模式。

中斷使能寄存器(IER)

二、可屏蔽中斷

RTOSINT

D15D14D13D12D11D10D9D8INT14INT13INT12INT11INT10INT9

R/W-0

R/W-0R/W-0

R/W-0

R/W-0

R/W-0R/W-0R/W-0DLOGINTINT8

D7D6D5D4D3D2D1D0INT6INT5INT4INT3INT2INT1

R/W-0

R/W-0R/W-0

R/W-0

R/W-0

R/W-0R/W-0R/W-0INT7中斷使能寄存器IER第4章中斷管理和復(fù)位22▲當(dāng)CPU處于實時仿真模式下并暫停時,才可以使用DBGIER?!赏ㄟ^讀DBGIER來識別使能或關(guān)閉中斷,或通過寫DBGIER來使能或關(guān)閉中斷?!弥噶頟USHDBGIER對DBGIER進行讀操作,▲用指令POPDBGIET對DBGIER進行寫操作?!趶?fù)位時,DBGIER的所有位被清0。調(diào)試中斷使能寄存器DBGIER

二、可屏蔽中斷

RTOSINT

D15D14D13D12D11D10D9D8INT14INT13INT12INT11INT10INT9

R/W-0

R/W-0R/W-0

R/W-0

R/W-0

R/W-0R/W-0R/W-0DLOGINTINT8

D7D6D5D4D3D2D1D0INT6INT5INT4INT3INT2INT1

R/W-0

R/W-0R/W-0

R/W-0

R/W-0

R/W-0R/W-0R/W-0INT7調(diào)試中斷使能寄存器DBGIER第4章中斷管理和復(fù)位24可屏蔽中斷的標準操作二、可屏蔽中斷

1.送往CPU的中斷請求。2.設(shè)置相應(yīng)的IFR標志位。3.當(dāng)1)IER中的相應(yīng)位是1;2)STl中的INTM位是0,確認中斷;一旦一個中斷被使能并且被CPU響應(yīng),則在CPU開始執(zhí)行中斷服務(wù)程序(步驟13)之前,其他的中斷就不能得到響應(yīng)。4.清除相應(yīng)的IFR位。5.清空流水線。6.增加和臨時存儲PC。7.取回中斷向量。8.SP增1。9.執(zhí)行自動現(xiàn)場保護。10.清除相應(yīng)的IER位。11.設(shè)置INTM和DBGM,清除LOOP、EALLOW和IDLESTAT。12.取回向量賦值給PC。13.執(zhí)行中斷服務(wù)程序。14.繼續(xù)執(zhí)行程序。

——中斷處理的標準過程第4章中斷管理和復(fù)位2627第4章中斷管理和復(fù)位可屏蔽中斷響應(yīng)過程當(dāng)某個可屏蔽中斷提出響應(yīng)請求時,將其在中斷標志寄存器IFR中的中斷標志位自動置位。CPU檢測到該中斷標志位被置位后,接著會檢測該位是否被使能,也就是去讀CPU中斷使能寄存器IER中相應(yīng)位的值。三、非屏蔽中斷

C28x非屏蔽中斷包括:▲

軟中斷(INTR和TRAP指令)▲

硬件中斷NMI▲

非法指令陷阱▲

硬件復(fù)位中斷(RS)第4章中斷管理和復(fù)位不可屏蔽中斷不能被任何使能位(INTM、DBGM、IFR、IER、DBGIER中的使能位)禁止。CPU立即響應(yīng)這種類型的中斷,并執(zhí)行相應(yīng)的中斷服務(wù)程序。

但當(dāng)CPU處于實時仿真模式且被暫停時,不響應(yīng)任何正常中斷。INTR指令三、非屏蔽中斷

可以通過INTR指令對中斷INTl~INTl4、DLOGINT、RTOSINT和NMI進行激發(fā)?!?/p>

INTl~INTl4、DLOGINT和RTOSINT。當(dāng)這些中斷由INTR觸發(fā)時,相應(yīng)的IFR位并不會置1,而中斷仍將被響應(yīng)和服務(wù),并與任何使能位的值無關(guān)(但中斷過程中會清除IFR中相應(yīng)的位)?!?/p>

NMI——一個非屏蔽中斷,引腳上的硬件請求和用INTR指令引起的軟件請求都會導(dǎo)致同樣的事件發(fā)生。這些事件與執(zhí)行TRAP指令時所發(fā)生的事件相同。第4章中斷管理和復(fù)位由TRAP指令對中斷進行初始化的功能流程:1.取出TRAP指令。2.清空流水線。3.PC增1和臨時存儲PC。4.取回中斷向量。5.SP增1。6.執(zhí)行自動上下文存儲。7.設(shè)置INTM和DBGM,清除LOOP、EALLOW和IDLESTAT。8.用取回的向量裝載PC。9.執(zhí)行中斷服務(wù)程序。10.程序繼續(xù)。TRAP指令三、非屏蔽中斷

TRAP指令可初始化任何中斷,包括用戶定義的軟件中斷。TRAP指令與32個中斷的任何一個中斷有關(guān)。指令不受IFR\IER影響,也不影響IFR\IER。第4章中斷管理和復(fù)位,非屏蔽硬件中斷

NMI輸入引腳CPU一旦在NMI引腳上檢測到一個有效請求,就將按TRAP指令中所示的方式來處理。需要說明的是:盡管NMI不可以被屏蔽,但有一些調(diào)試執(zhí)行狀態(tài)是NMI所不能服務(wù)的。三、非屏蔽中斷

第4章中斷管理和復(fù)位▲

無效的指令被譯碼▲

操作碼0000h被譯碼ITRAP0▲

操作碼FFFFh被譯碼ITRAP1四、非法指令陷阱第4章中斷管理和復(fù)位▲

復(fù)位(RS=0)是優(yōu)先級最高的中斷,為非屏蔽外部中斷▲

復(fù)位通常在電源打開之后被啟動▲

每次復(fù)位之后必須重新初始化系統(tǒng)▲

作為硬件復(fù)位的一部分,所有當(dāng)前操作均被放棄,流水線被清除▲

復(fù)位后CPU的寄存器按表4-5-1所示進行復(fù)位,然后RESET中斷向量被取回,從而執(zhí)行相應(yīng)的中斷服務(wù)程序。五、復(fù)位操作第4章中斷管理和復(fù)位C28X復(fù)位中斷WatchdogTimerRSpinactiveToRSpinRSC28xCoreReset–BootLoaderResetOBJMODE=0AMODE=0ENPIE=0VMAP=1M0M1MAP=1BootdeterminedbystateofGPIOpinsResetvectorfetchedfrombootROM0x3FFFC0XMPNMC=1(microprocessormode)ResetvectorfetchedfromXINTFzone70x3FFFC0XMPNMC=0(microcomputermode)

Execution BootloadingEntryPoint RoutinesFLASH SPIH0SARAM SCI-AOTP ParallelloadNotes:F2810XMPNMCtiedlowinternaltodeviceXMPNMCreferstoinputsignalMP/MCisstatusbitinXINTFCNF2registerXMPNMConlysampledatresetBootloader模式

GPIOpinsF4F12F3F21xxxflash0x3F7FF6,用戶必須已經(jīng)編寫了分支指令重定位程序執(zhí)行*

0010H0SARAM0x3F8000*0001OTP0x3D7800*01xx從外部EEPROM調(diào)用SPL_Boot0011從SCI-A調(diào)用SCI-Boot0000從GPIOB口調(diào)用Parallel_Boot*BootROMsoftwareconfiguresthedeviceforC28xmodebeforejumpReset引導(dǎo)過程H0SARAM(8K)FLASH(128K)OTP(2K)0x3F7FF60x3D78000x3D80000x3F80000x3FF0000x3FFFC0BootROM(4K)BROMvector(32)0x3FFC00BootCodeRESETExecutionEntryPointDeterminedByGPIOPinsBootloadingRoutines(SPI,SCI-A,ParallelLoad)0x3FFC003839Reset–BootloaderResetOBJMODE=0AMODE=0ENPIE=0VMAP=1BootdeterminedbystateofGPIOpinsResetvectorfetchedfrombootROM0x3FFFC0XMPNMC=0(microcomputermode)

ExecutionEntryPointH0SARAMBootloadersetsOBJMODE=1AMODE=0▲

IDLE模式:任何被使能的中斷或NMI中斷都可以使處理器退出IDLE模式。在這種模式下,如果LPMCR[1:0]位都設(shè)置成零,LPM模塊將不完成任何工作?!?/p>

HALT模式:只有復(fù)位XRS非和XNMI_XINT13外部信號能夠喚醒器件,使其退出HALT模式。在XMNICR寄存器中,CPU有一位使能/禁止XNMI?!?/p>

STANDBY模式:如果在LPMCRl寄存器中被選中,所有信號(包括XNMI)都能夠?qū)⑻幚砥鲝腟TANDBY模式喚醒,用戶必須選擇具體哪個信號喚醒處理器。在喚醒處理器之前,要通過OSCCLK確認被選定的信號:OSCCLK的周期數(shù)在LPMCR0寄存器當(dāng)中確定。六、低功耗模式可使芯片核心部分進入休眠狀態(tài),耗散更少的功率。有三種模式:第4章中斷管理和復(fù)位42六、低功耗模式低功耗模式通過LPMCR0和LPMCRl兩個寄存器來控制

CANRX

D15D14D13D12D11D10D9D8SCIRXAC6TRIPC5TRIPC4TRIPC3TRIPC2TRIPSCIRXBC1TRIP

D7D6D5D4D3D2D1D0T3CTRIPT2CTRIPT1CTRIPWDINTXNMIXINT1T4CTRIP低功耗方式控制1寄存器LPMCR1

保留

D15D1D0QUALSTDBYLPM低功耗方式控制0寄存器LPMCR0

R-0

R/W-1R/W-0

R/W-0

R/W-0R/W-0

R/W-0

R/W-0

R/W-0R/W-0R/W-0

R/W-0

R/W-0R/W-0

R/W-0

R/W-0

R/W-0R/W-0R/W-0第4章中斷管理和復(fù)位44452個不可屏蔽中斷/RSNMI14個可屏蔽中斷(INT1–INT14)C28xCOREINT1INT2INT3INT4INT5INT6INT7INT8INT9INT10INT11INT12INT13INT14RSNMI七、片內(nèi)外設(shè)的中斷擴展▲X281x的CPU共有16根中斷線,其中包括2根不可屏蔽中斷,,還有14根可屏蔽中斷C28X復(fù)位中斷WatchdogTimerRSpinactiveToRSpinRSC28xCore七、片內(nèi)外設(shè)的中斷擴展X281XDSP的中斷源七、片內(nèi)外設(shè)的中斷擴展▲

外設(shè)級:一個中斷產(chǎn)生事件出現(xiàn)在某個外設(shè)中,和該事件相關(guān)的中斷標志(IFR)位會在這個特別外設(shè)的寄存器中被置為1。如果相應(yīng)的中斷使能(IER)位已經(jīng)置位,則外設(shè)向PIE控制器產(chǎn)生一個中斷請求。如果該中斷在外設(shè)級使能無效,則相應(yīng)的IFR位會一直保持直到用軟件清除它為止。如果在以后使能該中斷,且中斷標志仍然置位,那么就會向PIE發(fā)出一個中斷請求。外設(shè)寄存器中的中斷標志必須手工清除?!鳳IE級PIE(PeripheralInterruptExpansionBlock)外設(shè)中斷擴展模塊,簡稱為外設(shè)中斷管理器。

能夠?qū)Ω鞣N中斷請求源(來自各個外設(shè)或者其他外部引腳請求)做出判斷和相應(yīng)的決策。把許多中斷源多路復(fù)用成一個較小的中斷輸入集?!?/p>

功能:PIE模塊支持96個不同的中斷,這些中斷分成12個組,每個組有8個中斷,每個組都被反饋到CPU內(nèi)核的12條中斷線()的一條上。這96個中斷中的每一個都得到了各自向量的支持,這些向量被保存在專用RAM塊中并可以進行修改?!?/p>

在PIE塊中可對每個中斷分別使能或者使之無效。

七、片內(nèi)外設(shè)的中斷擴展外設(shè)中斷在PIE的分步CPU\PIEINTx.8INTx.7INTx.6INTx.5INTx.4INTx.3INTx.2INTx.1INT1WAKEINTTINT0ADCINTXINT2XINT1PDPINTBPDPINT1INT2T1OFINTT1UFINTT1CINTT1PINTCAP3INTCAP2INTCAP1INTINT3CAPINT3CAPINT2CAPINT1T2OFINTT2UFINTT2CINTT2PINTINT4T3OFINTT3UFINTT3CINTT3PINTCAP6INTCAP5INTCAP4INTINT5CAPINT6CAPINT5CAPINT4T4OFINTT4UFINTT4CINTT4PINTINT6MXINTMRINTSPITXINTASPIRXINTAINT7INT8INT9ECAN1INTECAN2INTSCITXINTBSCIRXINTBSCITXINTASCIRXINTAINT10INT11INT1251七、片內(nèi)外設(shè)的中斷擴展▲

CPU級:一旦某個中斷請求被送往CPU,CPU級中與INTx相關(guān)的中斷標志(IFR)位就被置位。該標志位被鎖存在IFR后,CPU不會馬上就去執(zhí)行相應(yīng)的中斷,而是等待CPU使能IER寄存器,或者使能DBGIER寄存器,并對全局中斷屏蔽位INTM進行適當(dāng)?shù)氖鼓堋?/p>

七、片內(nèi)外設(shè)的中斷擴展53七、片內(nèi)外設(shè)的中斷擴展X281x的三級中斷系統(tǒng)分析

X281x中斷的工作過程七、片內(nèi)外設(shè)的中斷擴展55PIE控制器概述

PIE中斷向量表PIE一共可以支持96個中斷,每一個中斷都有中斷服務(wù)子程序ISR,那么CPU響應(yīng)中斷時,如何找到對應(yīng)的中斷服務(wù)子程序呢?解決辦法就是將DSP的各個中斷服務(wù)子程序的地址存儲在專用RAM連續(xù)空間中,這就是中斷相量表?!卸嗤ǖ?MUXed)中斷和非多通道(nonMUXed)中斷中的每個中斷都有一個向量。非多通道中斷源由CPU直接提供。

▲在器件配置期間,用戶要使用向量表并在操作期間去修改它。

七、片內(nèi)外設(shè)的中斷擴展七、片內(nèi)外設(shè)的中斷擴展向量表映射

在C28x芯片上,中斷向量表可以和存儲器的五個不同位置相對應(yīng)。實際上,F(xiàn)28x芯片只使用了PIE向量表映像。向量映像由下述信號控制。1.VMAP:該位是狀態(tài)寄存器STl的位3。芯片復(fù)位將把該位置1。通過寫STl或執(zhí)行SETC/CLRCVMAP指令可以修改該位的狀態(tài)。對于正常的F2812操作,可把該位設(shè)置為1。2.M0M1MAP:該位是狀態(tài)寄存器ST1的位11。芯片復(fù)位將把該位置1。通過寫STl或執(zhí)行SETC/CLRCM0M1MAP指令可以修改該位的狀態(tài)。對于正常的F2812操作,該位應(yīng)該保持為1。M0M1MAP=0保留,僅用于TI測試。向量表映射

3.MP/MC:該位是XINTCNF2寄存器的位8。在有外部接口(XINTF)的芯片上,復(fù)位時,該位的默認值由XMP/MC輸入信號設(shè)置。在沒有XINTF的芯片上,在內(nèi)部將XMP/MC拉為低電平。復(fù)位后,通過寫XINTCNF2寄存器(地址:0x00000B34),可以修改該位狀態(tài)。4.ENPIE:該位是寄存器PIECTRL的位0。復(fù)位時該位的默認值設(shè)為0(PIE無效)。復(fù)位后,通過寫PIECTRL寄存器(地址:0x00000CE0),可以修改該位狀態(tài)。七、片內(nèi)外設(shè)的中斷擴展七、片內(nèi)外設(shè)的中斷擴展▲

M1和M0向量表映像僅留作TI測試之用,當(dāng)使用其他向量映像時,M0和M1存儲器用作RAM塊,可以自由使用,沒有限制。芯片復(fù)位后,向量表映像如書中表所示。▲

在復(fù)位和程序引導(dǎo)完成之后,應(yīng)該由用戶對PIE向量表進行代碼初始化,然后,由應(yīng)用程序使能PIE向量表,從PIE向量表所指出的位置上取回中斷向量。多路復(fù)用中斷處理過程1.不要清除一個PIEIFR位。當(dāng)讀-修改-寫操作發(fā)生時,一個已被錄入的中斷可能會丟失。清除相應(yīng)的PIEIFR位,該未決的中斷應(yīng)該被服務(wù)。假如用戶希望清除PIEIFR位,而不執(zhí)行正常的服務(wù)子程序,則應(yīng)按下列的過程:步驟1:設(shè)置EALLOW位,允許修改PIE向量表。步驟2:修改PIE向量表以便將外設(shè)服務(wù)子程序的向量指向一個臨時ISR。這個臨時ISR僅完成從中斷操作的返回(IRET)。步驟3:使能該中斷以便使該中斷通過臨時ISR得到服務(wù)。步驟4:在執(zhí)行了臨時中斷服務(wù)子程序后,將清除PIEIFR的位。步驟5:修改PIE向量表重新將外設(shè)的服務(wù)子程序映像至適當(dāng)?shù)姆?wù)子程序。步驟6:清除EALLOW位。CPU的IFR寄存器在CPU中是整合的。因為清除CPUIFR寄存器中的位不會造成一個己錄入的中斷的丟失。2.軟件—中斷優(yōu)先級。3.使用PIEIER禁止中斷。使用PIEIER寄存器去使能一個中斷或禁止這個中斷。

七、片內(nèi)外設(shè)的中斷擴展使能或禁止多路復(fù)用外設(shè)中斷

使能或禁止一個中斷的通常會產(chǎn)生下列兩個過程。1.使用PIEIERx寄存器去禁止中斷并保護相應(yīng)的PIEIFRx標志。當(dāng)清除PIEIERx寄存器中的位,保護PIEIFRx寄存器的相應(yīng)位時,應(yīng)按下列過程。步驟1:禁止全局中斷(INTM=1)。步驟2:清除PIEIERx.y位去禁止一個給定的外設(shè)中斷??梢詫νM一個或多個外設(shè)這樣去作。步驟3:等待5個周期。需要確保這個延時,任何錄入CPU的中斷均已經(jīng)被標志在CPU的IFR寄存器中。步驟4:為外設(shè)組清除CPUIFRx位。這是對CPU的IFR寄存器的軟件操作。步驟5:為外設(shè)組清除PIEACKx位。步驟6:使能全局中斷(INTM=0)。七、片內(nèi)外設(shè)的中斷擴展2.使用PIEIERx寄存器去禁止中斷并清除相應(yīng)的PIEIFRx標志。完成外設(shè)中斷的軟件復(fù)位并清除PIEIFRx寄存器和IFR寄存器中的相應(yīng)標志,按下列過程。步驟1:禁止全局中斷(INTM=1)。步驟2:置位EALLOW位。步驟3:修改PIE向量表,將特有的外設(shè)中斷暫時映像到—一個空的中斷服務(wù)子程序ISR。這個空的ISR僅完成從中斷指令的返回。在沒有丟失來自其他外設(shè)組的任何中斷的情況下,這是清除單個PIEIFRx.y位的一種安全途徑。步驟4:禁止外設(shè)寄存器的外設(shè)中斷。步驟5:使能全局中斷(INTM=0)。步驟6:通過空的ISR子程序為那些等待來自外設(shè)的未決中斷服務(wù)。步驟7:禁止全局中斷(INTM=1)。步驟8:修改PIE向量表,將外設(shè)向量映像到它最初的ISR。步驟9:清除EALLOW位。步驟10:禁止給定外設(shè)的PIEIER位。步驟11:清除給定外設(shè)組的IFR位(這是對CPUIFR寄存器的安全操作)。步驟12:清除PIE組的PIEACK位。步驟13:使能全局中斷。

七、片內(nèi)外設(shè)的中斷擴展使能或禁止多路復(fù)用外設(shè)中斷

從外設(shè)到CPU的多路復(fù)用中斷請求流程步驟1:任何PIE組里的外設(shè)和外部中斷產(chǎn)生一個中斷,假如外設(shè)中斷已被使能,那么,該中斷要求就被置入PIE模塊。步驟2:PIE模塊識別PIE組x內(nèi)已經(jīng)錄入的中斷y(INTx.y),并且將相應(yīng)的PIE中斷標志位鎖存:PIEIFRx.y=1。步驟3:為了置位從PIE到CPU的中斷要求,下列兩個條件必須為真。

(1)適當(dāng)?shù)氖鼓芪槐仨氈梦?PIEIERx.y=1)。

(2)必須清除該組

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論