DSP 課件 第三章 程序控制和中斷管理_第1頁(yè)
DSP 課件 第三章 程序控制和中斷管理_第2頁(yè)
DSP 課件 第三章 程序控制和中斷管理_第3頁(yè)
DSP 課件 第三章 程序控制和中斷管理_第4頁(yè)
DSP 課件 第三章 程序控制和中斷管理_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章

程序控制和中斷管理 在執(zhí)行當(dāng)前指令的同時(shí),程序流要求處理器生成下一條指令的程序地址,預(yù)定程序的路線(xiàn)。 程序地址的產(chǎn)生見(jiàn)以下圖:3.1程序地址的產(chǎn)生程序地址產(chǎn)生框圖程序地址產(chǎn)生邏輯使用的硬件器件功能程序計(jì)數(shù)器(PC)對(duì)內(nèi)部和外部程序存儲(chǔ)器尋址程序地址寄存器(PAR)驅(qū)動(dòng)程序地址總線(xiàn),提供程序的讀、寫(xiě)地址堆棧保存返回地址微堆棧(MATACK)保存返回地址重復(fù)計(jì)數(shù)器(RPTC)與重復(fù)指令(RPT)一起,用來(lái) 確定RPT后的一條指令重復(fù)執(zhí)行的次數(shù)。程序地址產(chǎn)生源操作程序地址來(lái)源順序操作程序計(jì)數(shù)器PC(程序地址+1)空周期程序地址寄存器PAR(程序地址+1)從子程序返回堆棧棧頂(TOS)從表傳送或塊傳送返回微堆棧(MSTACK)轉(zhuǎn)移到或調(diào)用指令中指定的地址轉(zhuǎn)移到或調(diào)用累加器低半部分指定的地址轉(zhuǎn)移到中斷服務(wù)程序轉(zhuǎn)移或調(diào)用指令,即利用程序讀總線(xiàn)(PRDB)的方式獲取程序地址。累加器的低半部分,即利用數(shù)據(jù)讀總線(xiàn)(DRDB)的方式獲取程序地址中斷矢量單元,即利用 程序讀總線(xiàn)(PRDB)的方式獲取程序地址。程序計(jì)數(shù)器 程序地址產(chǎn)生邏輯使用16位程序計(jì)數(shù)器〔PC〕對(duì)內(nèi)部和外部程序存儲(chǔ)器尋址,PC中存放將被執(zhí)行的下一條指令的地址。通過(guò)程序地址總線(xiàn)〔PAB〕,從程序存儲(chǔ)器該地址處取出指令并裝入指令存放器,當(dāng)裝載入指令存放器時(shí),PC中保存下一個(gè)地址。裝入PC中的地址將累加器低16位加載到PC。利用BACC(轉(zhuǎn)移到累加器中的地址)或CALA(調(diào)用累加器指令單元的子程序)指令可實(shí)現(xiàn)計(jì)算轉(zhuǎn)移操作加載到PC的地址順序執(zhí)行若當(dāng)前指令字是一個(gè)字,則將PC+1加載到PC若當(dāng)前指令字是兩個(gè)字,則將PC+2加載到PC轉(zhuǎn)移轉(zhuǎn)移指令后的長(zhǎng)立即數(shù)直接加載到PC子程序調(diào)用和返回調(diào)用指令:將PC中的下一條指令的地址壓入堆棧, 然后將調(diào)用的指令后的長(zhǎng)立即數(shù)加載到PC返回指令:將返回地址從堆棧中彈回PC軟件或硬件中斷將相應(yīng)的中斷矢量地址裝入PC。在該矢量單元,通常有一條轉(zhuǎn)移指令,又將相應(yīng)的中斷服務(wù)程序的地址加載到PC計(jì)算轉(zhuǎn)移代碼操作堆棧 16位寬、8級(jí)深的硬件堆棧。當(dāng)調(diào)用子程序或發(fā)生中斷時(shí),程序地址產(chǎn)生邏輯用其保存返回地址。 當(dāng)CPU進(jìn)入子程序或中斷效勞程序時(shí),返回地址自動(dòng)裝入該堆棧的棧頂,這一操作不需附加周期。 當(dāng)子程序或中斷效勞程序完成時(shí),返回指令將返回地址從棧頂傳送到程序計(jì)數(shù)器。 當(dāng)不需要用8級(jí)返回地址時(shí),該堆棧也可用來(lái)保存子程序或中斷效勞程序的有關(guān)數(shù)據(jù)或用于其他目的。訪問(wèn)堆棧的指令:PUSH〔壓入〕和POP〔彈出〕PUSH:把累加器的低16位拷貝到棧頂POP:把棧頂值拷貝到累加器低16位PSHD和POPD

當(dāng)子程序或中斷嵌套超過(guò)8級(jí)時(shí),利用此指令在數(shù)據(jù)存儲(chǔ)區(qū)中建立一個(gè)堆棧。PSHD把數(shù)據(jù)存儲(chǔ)器中的值壓入棧頂,POPD將棧頂值彈出到數(shù)據(jù)存儲(chǔ)器。微堆棧 微堆棧只有1級(jí)深、16位寬,沒(méi)有可以使用微堆棧保存信息的指令,只有程序地址產(chǎn)生邏輯才能夠使用微堆棧。 程序地址產(chǎn)生邏輯在執(zhí)行BLDD、BLPD、MAC、TBLR及TBLW指令時(shí),用微堆棧保存返回地址。執(zhí)行這些指令時(shí),首先把PC+1的地址送到微堆棧保存,然后用PC存放第一個(gè)操作數(shù)的地址,用輔助存放器算術(shù)單元ARAU產(chǎn)生第二個(gè)操作數(shù)的地址,當(dāng)這些指令重復(fù)執(zhí)行時(shí),PC可使第一個(gè)操作數(shù)的地址自動(dòng)增量,ARAU使第二個(gè)操作數(shù)的地址改變,到所重復(fù)的指令完成時(shí)再將微堆棧彈回到程序地址產(chǎn)生邏輯。流水線(xiàn)操作

指令流水線(xiàn)包括執(zhí)行時(shí)發(fā)生的一系列總線(xiàn)操作。LF240x的流水線(xiàn)有4個(gè)獨(dú)立的階段:取指令、指令譯碼、取操作數(shù)和執(zhí)行指令。4個(gè)操作階段是獨(dú)立的,在任意的指定周期內(nèi),1~4個(gè)不同的指令都被激活,每一條被激活的指令都處于不同的完成階段。4級(jí)流水線(xiàn)的操作流水線(xiàn)操作一般是不可見(jiàn)的,但以下情況例外:〔1〕緊跟在修改全局存儲(chǔ)器分配存放器〔GREG〕后的單字、單周期指令使用先前的全局映射?!?〕在流水線(xiàn)操作的執(zhí)行階段,NORM指令修改ARP,并使用當(dāng)前輔助存放器,如果隨后的兩個(gè)指令要改變當(dāng)前輔助存放器的內(nèi)容或ARP,那么它們將在流水線(xiàn)的譯碼階段進(jìn)行,這將導(dǎo)致NORM指令使用錯(cuò)誤的輔助存放器值,并導(dǎo)致隨后的指令使用錯(cuò)誤的ARP值。所以在NORM后不要安排改變當(dāng)前輔助存放器和ARP內(nèi)容的指令。 轉(zhuǎn)移、調(diào)用和返回改變指令流的順序,轉(zhuǎn)到新的地址單元去執(zhí)行指令。 轉(zhuǎn)移僅使控制轉(zhuǎn)換到新的地址單元;調(diào)用要將返回地址保存到硬件堆棧的棧頂;返回指令將堆棧中的返回地址彈到程序計(jì)數(shù)器。3.2轉(zhuǎn)移、調(diào)用和返回3.2.1無(wú)條件指令無(wú)條件轉(zhuǎn)移執(zhí)行無(wú)條件轉(zhuǎn)移時(shí),將指定的程序存儲(chǔ)器的地址加載到PC上,并從該地址開(kāi)始執(zhí)行程序。加載到PC的地址可以來(lái)自轉(zhuǎn)移指令的第二個(gè)操作數(shù),也可能是累加器的低16位。 無(wú)條件轉(zhuǎn)移指令有B〔轉(zhuǎn)移〕和BACC〔轉(zhuǎn)移到累加器指定的地址〕。無(wú)條件調(diào)用執(zhí)行無(wú)條件調(diào)用時(shí),將指定的程序存儲(chǔ)器的地址加載到PC上,并從該地址開(kāi)始執(zhí)行程序。加載到PC的地址可以來(lái)自轉(zhuǎn)移指令的第二個(gè)操作數(shù),也可能是累加器的低16位。加載PC之前將返回地址保存到堆棧。子程序或函數(shù)執(zhí)行之后,返回指令將返回地址從堆棧加載到PC,從調(diào)用指令后的那條指令開(kāi)始執(zhí)行。 無(wú)條件轉(zhuǎn)移指令有CALL、CALA〔調(diào)用累加器指定單元處的子程序〕。無(wú)條件返回 執(zhí)行無(wú)條件返回指令〔RET〕時(shí),將棧頂?shù)闹导虞d到PC,并從該地址繼續(xù)執(zhí)行程序。3.2.2有條件指令操作符號(hào)條件描述EQNEQLTLEQGTGEQCNCOVNOVBIOTCNTCACC=0ACC≠0ACC<0ACC≤0ACC>0ACC≥0C=1C=0OV=1OV=0BIO低TC=1TC=0累加器的值等于0累加器的值不等于0累加器的值小于0累加器的值不小于0累加器的值大于0累加器的值不大于0進(jìn)位位置1進(jìn)位位清0檢測(cè)到累加器溢出檢測(cè)到累加器不溢出BIO引腳為低電平測(cè)試/控制位置1測(cè)試/控制位清0使用多個(gè)條件組1組2A類(lèi)B類(lèi)B類(lèi)A類(lèi)C類(lèi)EQNEQLTLEQGTGEQOVNOVNTCTCCNCBIO在條件指令的操作數(shù)中可以列出多個(gè)條件,必須所有條件都滿(mǎn)足才是條件滿(mǎn)足。對(duì)于每一種組合,必須按如下規(guī)那么從組1組2中選擇條件。組1:最多可選兩個(gè)條件。每個(gè)條件來(lái)自不同的類(lèi)。組2:最多可選3個(gè)條件。每個(gè)條件來(lái)自不同的類(lèi),不能有兩個(gè)條件來(lái)自同一類(lèi)。 條件指令必須能測(cè)試到狀態(tài)位的最新值。直到流水線(xiàn)的執(zhí)行階段,即前一條指令執(zhí)行后一個(gè)周期才能認(rèn)為條件穩(wěn)定。流水線(xiàn)控制器在條件穩(wěn)定之前停止對(duì)條件指令后的任何指令譯碼。條件的穩(wěn)定性條件轉(zhuǎn)移〔BCND、BANZ〕: 該指令使程序轉(zhuǎn)移到程序存儲(chǔ)器的任何地址,只有滿(mǎn)足一個(gè)或多個(gè)由用戶(hù)指定的條件時(shí),才能實(shí)現(xiàn)轉(zhuǎn)移。此時(shí),PC裝載轉(zhuǎn)移指令的第2個(gè)字,并從該地址開(kāi)始繼續(xù)執(zhí)行此指令。 無(wú)條件轉(zhuǎn)移指令有BCND〔條件轉(zhuǎn)移〕和BAND〔假設(shè)當(dāng)前輔助存放器不為0,那么轉(zhuǎn)移〕。條件指令的執(zhí)行條件調(diào)用〔CC〕:該指令可使程序根據(jù)處理數(shù)據(jù)的不同在多個(gè)子程序間進(jìn)行選擇,只有當(dāng)用戶(hù)指定的一個(gè)或多個(gè)特定條件滿(mǎn)足時(shí)才能調(diào)用。此時(shí),PC裝載調(diào)用指令的第2個(gè)字,并將返回地址保存在堆棧中,然后執(zhí)行子程序。 條件返回 返回指令〔RET〕: 與調(diào)用或中斷配合使用。調(diào)用或中斷把返回指令保存到堆棧里,被調(diào)用的子程序或中斷效勞程序以返回指令結(jié)束,該指令將返回地址從堆棧彈到PC。 條件返回指令〔RETC〕: 當(dāng)用戶(hù)指定的一個(gè)或多個(gè)條件滿(mǎn)足時(shí)才執(zhí)行。利用該指令可使子程序或中斷效勞程序有多種返回路徑。3.3重復(fù)指令 重復(fù)指令〔RPT〕:將單條指令重復(fù)執(zhí)行N+1次。N為指令的操作數(shù)。 執(zhí)行RPT時(shí),N裝入重復(fù)計(jì)數(shù)器RPTC,每執(zhí)行一次,RPTC減1,直至RPTC為0。如果N是從一個(gè)數(shù)據(jù)存儲(chǔ)單元讀取,RPTC為16位計(jì)數(shù)器;如果N為一操作常數(shù),RPTC為8位計(jì)數(shù)器。3.4中斷中斷是計(jì)算機(jī)的一種特殊的運(yùn)行方式。在正常情況下,CPU按照程序預(yù)定的路線(xiàn)進(jìn)行,當(dāng)外圍設(shè)備有事件產(chǎn)生需要CUP來(lái)處理,即發(fā)出中斷請(qǐng)求信號(hào),CPU暫停工作,保存好現(xiàn)場(chǎng),然后轉(zhuǎn)到該中斷請(qǐng)求對(duì)應(yīng)的效勞子程序的入口處,待效勞子程序運(yùn)行完畢,CPU自動(dòng)恢復(fù)現(xiàn)場(chǎng),從原停頓點(diǎn)繼續(xù)往下運(yùn)行。計(jì)算機(jī)采用中斷方式,可以節(jié)省CPU資源,CPU可以不花時(shí)間去輪尋外圍設(shè)備是否需要效勞。每一種計(jì)算機(jī)都有多個(gè)中斷源,CPU對(duì)中斷的響應(yīng)需要按序進(jìn)行,需要一個(gè)中斷管理系統(tǒng)模塊對(duì)中斷源進(jìn)行管理控制。3.4.1中斷的分類(lèi)軟件中斷 由指令I(lǐng)NTR、NMI和TRAP產(chǎn)生。硬件中斷 由來(lái)自物理設(shè)備的信號(hào)產(chǎn)生,包括復(fù)位、非屏蔽中斷NMI和可屏蔽中斷INT1、INT2、INT3、INT4、INT5、INT6。

可屏蔽中斷

可以通過(guò)軟件將它們禁止或允許的中斷。均為硬件中斷。當(dāng)硬件設(shè)備或外部引腳成功地請(qǐng)求了可屏蔽中斷時(shí),與其對(duì)應(yīng)的一個(gè)或幾個(gè)標(biāo)志被激活,無(wú)論是否響應(yīng)此中斷,這些標(biāo)志均被設(shè)置為1。不可屏蔽中斷 不能通過(guò)軟件將其禁止或允許的中斷。包括所有軟件中斷和兩種外部硬件中斷和。外設(shè)事件要引起中斷,必須保證:外設(shè)事件的中斷使能位被使能,CPU內(nèi)核級(jí)的6個(gè)可屏蔽中斷中,能控制該外設(shè)事件高級(jí)中斷至少有一個(gè)被使能。在外設(shè)事件發(fā)生時(shí),首先將其在外設(shè)中斷控制器中的標(biāo)志位置1,然后會(huì)在中斷標(biāo)志存放器IFR中的INTx位由硬件置1,說(shuō)明正在等待CPU響應(yīng),從而引起CPU內(nèi)核的INT1~INT6中的一個(gè)產(chǎn)生中斷。中斷響應(yīng)的延時(shí)從發(fā)出中斷請(qǐng)求到得到效勞之間的延遲時(shí)間,與很多因素有關(guān):〔1〕軟件中斷最少要延時(shí)4個(gè)CPU時(shí)鐘周期?!?〕外部可屏蔽中斷最少要延時(shí)8個(gè)CPU時(shí)鐘周期?!?〕假設(shè)在使用RPT重復(fù)時(shí)發(fā)生中斷,為了保證指令流水線(xiàn)的完整,需等到該重復(fù)循環(huán)完才響應(yīng)中斷。但復(fù)位中斷例外?!?〕為使CPU能完成返回,在RET指令后中斷被禁止,直至在返回指令上至少執(zhí)行一條指令?!?〕讀寫(xiě)速度慢的外部存儲(chǔ)器需要等待延時(shí),如果中斷向量存放在外部存儲(chǔ)器,等待狀態(tài)會(huì)影響中斷的響應(yīng)時(shí)間。當(dāng)CPU接受中斷請(qǐng)求時(shí),并不知道是哪一個(gè)外設(shè)事件引起的中斷請(qǐng)求。為了讓CPU能夠區(qū)別這些引起中斷的外設(shè)事件,DSP控制器給每個(gè)中斷分配了一個(gè)特定的入口地址,稱(chēng)為中斷向量。在每個(gè)外設(shè)中斷請(qǐng)求有效時(shí)都會(huì)產(chǎn)生一個(gè)唯一的外設(shè)中斷向量,這個(gè)外設(shè)中斷向量被裝載到外設(shè)中斷向量存放器〔PIVR〕中。CPU應(yīng)答外設(shè)中斷時(shí),從PIVR中讀取相應(yīng)中斷的向量,并產(chǎn)生一個(gè)轉(zhuǎn)到該中斷效勞程序入口的向量。當(dāng)某個(gè)中斷發(fā)出請(qǐng)求,而且允許中斷,那么CPU先將當(dāng)前的PC加1壓入堆棧,即保護(hù)返回地址;然后,CPU自動(dòng)地將該請(qǐng)求中斷的向量地址送入PC,CPU便轉(zhuǎn)入該請(qǐng)求中斷的效勞子程序運(yùn)行;當(dāng)碰到效勞子程序的返回指令RET時(shí),CPU自動(dòng)將堆棧中的返回地址彈出到PC中,恢復(fù)中斷前的程序繼續(xù)進(jìn)行。3.4.2中斷向量為了更好地管理中斷復(fù)用情況,DSP控制器為事件管理模塊的每一個(gè)中斷分配了一個(gè)偏移向量地址,并且當(dāng)某個(gè)事件管理模塊發(fā)出了請(qǐng)求信號(hào),會(huì)自動(dòng)地將該中斷的偏移向量地址寫(xiě)入到對(duì)應(yīng)的事件中斷向量存放器中。當(dāng)進(jìn)入DSP內(nèi)核中斷的效勞子程序GISR后,將事件中斷向量存放器的內(nèi)容送到累加器,然后經(jīng)分支指令便可轉(zhuǎn)入到專(zhuān)為某個(gè)事件管理模塊中斷所寫(xiě)的中斷效勞子程序SISR的入口。在程序存儲(chǔ)器的0000h~003FH單元。每個(gè)中斷有兩個(gè)地址單元。存放一條兩個(gè)字的分支指令〔如B指令〕。這樣,可以在較大的程序存儲(chǔ)空間中開(kāi)辟出一塊存放中斷效勞子程序的空間,通過(guò)中斷向量處的分支指令轉(zhuǎn)入到真正的中斷效勞子程序空間的入口處。中斷優(yōu)先級(jí)和中斷矢量表TMS320LF240xCPU提供了6個(gè)可屏蔽中斷:INT1~INT6,INT1優(yōu)先級(jí)最高,INT1最低。利用6個(gè)中斷級(jí),采用中斷擴(kuò)展設(shè)計(jì)可以使芯片能夠管理46個(gè)可屏蔽中斷請(qǐng)求。3.4.3TMS320LF240x的可屏蔽中斷〔1〕中斷標(biāo)志存放器〔IFR〕: 位于數(shù)據(jù)存儲(chǔ)器的0060H,用于識(shí)別和去除掛起的中斷。 當(dāng)中斷源INT1~INT6中某一級(jí)向CPU發(fā)出可屏蔽中斷請(qǐng)求時(shí),控制存放器中響應(yīng)的標(biāo)志位被置1。如果該中斷未被屏蔽,那么中斷請(qǐng)求被送到CPU,說(shuō)明該中斷正被掛起或等待響應(yīng)。 讀取IFR可以識(shí)別掛起的中斷,向IFR相應(yīng)的位寫(xiě)1那么去除已掛起的中斷。把IFR中當(dāng)前的內(nèi)容寫(xiě)回IFR那么可去除所有掛起的中斷CPU響應(yīng)中斷或器件復(fù)位那么將IFR標(biāo)志去除。3.4.3.1CPU中斷管理存放器IFRINT1flagINT2flagINT3flagINT4flagINT5flagINT6flagReservedD15~D6D0D1D2D3D4D5D15~D6Reserved---保存位。D5INT6flag---中斷6標(biāo)志位。作為連至INT6的所有外部中斷的標(biāo)志。D4INT5flag---中斷5標(biāo)志位。作為連至INT5的所有外部中斷的標(biāo)志。D3INT4flag---中斷4標(biāo)志位。作為連至INT4的所有外部中斷的標(biāo)志。D2INT3flag---中斷3標(biāo)志位。作為連至INT3的所有外部中斷的標(biāo)志。D1INT2flag---中斷2標(biāo)志位。作為連至INT2的所有外部中斷的標(biāo)志。D0INT1flag---中斷1標(biāo)志位。作為連至INT1的所有外部中斷的標(biāo)志?!?〕中斷屏蔽存放器〔IMR〕: 位于數(shù)據(jù)存儲(chǔ)器的0004H,包含所有中斷級(jí)〔INT1~INT6〕的屏蔽位。 讀IMR可以識(shí)別以被屏蔽或被使能的中斷,向IMR中某位寫(xiě)0那么屏蔽相應(yīng)的中斷級(jí);寫(xiě)1那么使能該中斷級(jí)。IMRINT1maskINT2maskINT3maskINT4maskINT5maskINT6maskReservedD15~D6D0D1D2D3D4D5D15~D6Reserved---保存位。D5INT6mask---中斷6屏蔽位。D4INT5mask---中斷5屏蔽位。D3INT4mask---中斷4屏蔽位。D2INT3mask---中斷3屏蔽位。D1INT2mask---中斷2屏蔽位。D0INT1mask---中斷1屏蔽位。3.4.3.2外設(shè)中斷存放器 外設(shè)中斷存放器包括:1個(gè)外設(shè)中斷矢量存放器〔PIVR,地址701Eh〕;3個(gè)外設(shè)中斷請(qǐng)求存放器0/1/2〔PIRQR0/1/2,地址7010h/7011h/7012h〕;3個(gè)外設(shè)中斷應(yīng)答存放器0/1/2〔PIACK0/1/2,地址7014h/7015h/7016h〕。 外設(shè)中斷請(qǐng)求存放器0/1/2和外設(shè)中斷應(yīng)答存放器0/1/2是外設(shè)中斷擴(kuò)展模塊用來(lái)向CPU產(chǎn)生INT1~INT6中斷請(qǐng)求的內(nèi)部存放器。只能對(duì)其測(cè)試〔可讀〕,不能對(duì)其編程〔不可寫(xiě)〕。 外設(shè)中斷請(qǐng)求存放器0/1/2的某位為1,說(shuō)明相應(yīng)的中斷請(qǐng)求被掛起;為0,未被掛起。向某位寫(xiě)1將發(fā)出一個(gè)中斷請(qǐng)求到CPU,寫(xiě)入0沒(méi)影響。向外設(shè)中斷應(yīng)答存放器的某位為1,將引起相應(yīng)的外設(shè)中斷應(yīng)答被插入,從而將相應(yīng)的外設(shè)中斷請(qǐng)求位清0,但不改變外設(shè)中斷矢量存放器的內(nèi)容。3.4.3.3外設(shè)中斷控制存放器〔1〕外設(shè)中斷1控制存放器〔XINT1CR〕XINT1flagReservedXINT1polarityXINT1priorityXINT1enableD14~D3D0D1D2D15D15XINT1flag---XINT1標(biāo)志位。指示在XINT1引腳上是否檢測(cè)到一個(gè) 跳變,無(wú)論外部中斷1是否使能,XINT1引腳中跳變時(shí)該位總被置 位。當(dāng)相應(yīng)的中斷被應(yīng)答時(shí),該位被自動(dòng)清0,通過(guò)軟件向該位寫(xiě)1 或復(fù)位是該位被清0。0----未檢測(cè)到跳變;1----檢測(cè)到跳變。D14~D3Reserved---保存位。D2XINT1polarity---XINT1極性。0----在下降沿產(chǎn)生中斷;1----在上 升沿產(chǎn)生中斷D1XINT1polarity---XINT1優(yōu)先級(jí)。0-----高優(yōu)先級(jí);1-----低優(yōu)先級(jí)D0XINT1enable---XINT1使能位。0-----屏蔽中斷;1-----使能中斷〔2〕外設(shè)中斷2控制存放器〔XINT2CR〕XINT2flagReservedXINT2polarityXINT2priorityXINT2enableD14~D3D0D1D2D15D15XINT2flag---XINT2標(biāo)志位。指示在XINT1引腳上是否檢測(cè)到一個(gè) 跳變,無(wú)論外部中斷1是否使能,XINT2引腳中跳變時(shí)該位總被置 位。當(dāng)相應(yīng)的中斷被應(yīng)答時(shí),該位被自動(dòng)清0,通過(guò)軟件向該位寫(xiě)1 或復(fù)位是該位被清0。0----未檢測(cè)到跳變;1----檢測(cè)到跳變。D14~D3Reserved---保存位。D2XINT2polarity---XINT2極性。0----在下降沿產(chǎn)生中斷;1----在上 升沿產(chǎn)生中斷D1XINT2polarity---XINT2優(yōu)先級(jí)。0-----高優(yōu)先級(jí);1-----低優(yōu)先級(jí)D0XINT2enable---XINT2使能位。0-----屏蔽中斷;1-----使能中斷3.4.4不可屏蔽中斷〔1〕硬件非屏蔽中斷 :TMS320LF240x有兩個(gè)復(fù)位源:一個(gè)外部復(fù)位引腳復(fù)位和一個(gè)程序監(jiān)視定時(shí)器〔看門(mén)狗〕復(fù)位。復(fù)位引腳為一個(gè)I/O腳,如果有內(nèi)部復(fù)位事件〔程序監(jiān)視定時(shí)器復(fù)位〕發(fā)生,那么該引腳被設(shè)置為輸出方式,并且為低電平,向外部電路說(shuō)明器件正在自己復(fù)位。外部復(fù)位引腳信號(hào)和程序監(jiān)視定時(shí)器復(fù)位信號(hào)相或后一起驅(qū)動(dòng)CPU的復(fù)位信號(hào)。當(dāng)復(fù)位信號(hào)有效后,CPU將終止一切工作,把系統(tǒng)復(fù)位到缺省狀態(tài)上,同時(shí),自動(dòng)轉(zhuǎn)到復(fù)位中斷向量0000h處開(kāi)始程序的運(yùn)行,因此在程序存儲(chǔ)器的首地址0000h必須安排一個(gè)分支到主程序入口的指令。:TMS320LF240x無(wú)該引腳,當(dāng)器件訪問(wèn)一個(gè)無(wú)效地址時(shí),將產(chǎn)生非屏蔽中斷請(qǐng)求,程序那么轉(zhuǎn)移到非屏蔽中斷矢量地址0024h處,從中取出一條轉(zhuǎn)移指令,然后轉(zhuǎn)向非屏蔽中斷的入口,執(zhí)行相應(yīng)的中斷效勞程序。無(wú)效地址檢測(cè):系統(tǒng)和外設(shè)模塊控制存放器地址映射中包含不可實(shí)現(xiàn)單元,譯碼邏輯能夠檢測(cè)任何對(duì)于這些無(wú)效地址的訪問(wèn)。一旦檢測(cè)到對(duì)無(wú)效地址的訪問(wèn),就將系統(tǒng)控制和狀態(tài)存放器〔SCSR1〕中的無(wú)效地址標(biāo)志位〔ILLADR〕置1,從而產(chǎn)生一個(gè)不可屏蔽中斷NMI。無(wú)論何時(shí)檢測(cè)到訪問(wèn)無(wú)效地址都會(huì)產(chǎn)生插入一個(gè)無(wú)效地址條件,無(wú)效地址標(biāo)志位在無(wú)效地址條件發(fā)生之后被置1,并保持直到軟件將其去除。〔2〕軟件非屏蔽中斷INTRK 該指令允許啟動(dòng)任何中斷,指令操作數(shù)K表示CPU將轉(zhuǎn)移到哪個(gè)中斷矢量單元,當(dāng)響應(yīng)INTR中斷時(shí),ST0中的INTM位置1,禁止可屏蔽中斷。NMI 該指令允許轉(zhuǎn)移到中斷矢量地址24h,與不可屏蔽中斷使用同一單元。即引腳為低或執(zhí)行NMI均可啟動(dòng)中斷。當(dāng)執(zhí)行NMI指令時(shí),INTM置1以禁止可屏蔽中斷。TRAP 該指令使CPU轉(zhuǎn)移到中斷矢量地址22h,TRAP不禁止任何不可屏蔽中斷。當(dāng)CPU轉(zhuǎn)移到中斷效勞程序時(shí),該中斷效勞程序可以被可屏蔽硬件中斷所中斷。3.4.5中斷效勞程序〔ISR〕CPU得到中斷請(qǐng)求并響應(yīng)之后,根據(jù)中斷矢量轉(zhuǎn)移到相應(yīng)的中斷效勞程序ISR中,ISR在為中斷所要求的任務(wù)前需要保存和恢復(fù)存放器的值,并且還要管理中斷嵌套。2中斷效勞程序嵌套的管理考慮中斷嵌套時(shí),需注意:〔1〕假設(shè)希望一個(gè)可屏蔽中斷能夠中斷ISR,那么,該ISR必須不屏蔽該中斷,可在中斷效勞程序中,對(duì)IMR中的相應(yīng)位設(shè)置和執(zhí)行允許中斷指令〔CLRCINTM〕來(lái)解除該中斷屏蔽?!?〕8級(jí)硬件堆棧。如果軟件需要的堆棧超過(guò)8級(jí),可以使用POPD和PSHD指令將堆棧有效地?cái)U(kuò)展到數(shù)據(jù)存儲(chǔ)空間?!?〕防止意外嵌套功能。在返回指令RET前至少兩條指令的位置上插入CLRCINTM指令。1保存和恢復(fù)存放器值 CPU進(jìn)入中斷效勞程序〔ISR〕之前,硬件只將增量后的程序計(jì)數(shù)器的值自動(dòng)保存起來(lái),所以在中斷效勞程序中要用軟件對(duì)一些重要存放器的值進(jìn)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論