




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、6 中斷系統(tǒng)6 中斷系統(tǒng) 概念 CPU在正常執(zhí)行程序的過程中,由于內(nèi)部/外部事件或由程序的預(yù)先安排,引起了CPU暫時(shí)中斷當(dāng)前程序的運(yùn)行,而轉(zhuǎn)去執(zhí)行由內(nèi)部/外部事件或預(yù)先安排的事件而需要執(zhí)行的中斷服務(wù)子程序,在中斷服務(wù)子程序執(zhí)行完畢后,CPU再重新回來執(zhí)行當(dāng)前的程序。6 中斷系統(tǒng) 上課過程中多媒體出現(xiàn)故障 上課過程中出現(xiàn)敲門、電話鈴聲生活中的中斷:6 中斷系統(tǒng) 上課過程中多媒體出現(xiàn)故障 上課過程中出現(xiàn)敲門、電話鈴聲生活中的中斷:異常不可控制可以控制6 中斷系統(tǒng) 上課過程中多媒體出現(xiàn)故障 上課過程中出現(xiàn)敲門、電話鈴聲生活中的中斷:異常不可控制可以控制同時(shí)出現(xiàn),處理哪一個(gè)?先后出現(xiàn),怎么半?6 中斷
2、系統(tǒng) 上課過程中多媒體出現(xiàn)故障 上課過程中出現(xiàn)敲門、電話鈴聲、提問生活中的中斷:異常不可控制可以控制同時(shí)出現(xiàn),處理哪一個(gè)?先后出現(xiàn),怎么半?中斷的優(yōu)先級管理與中斷嵌套處理MC9S12的異常上電復(fù)位 VDDCPU CLKDATA BUS/ADDRESS BUSIRESET8192 ECLK Cycles V F P P P V - VECTOR FETCHF - FREE CYCLEP - PROGRAM FETCHFFFE FFFE 1st Opcode 2nd Opcode 3rd Opcode 128 ECLK Cycles 64 ECLK Cycles外部 & 內(nèi)部復(fù)位 64 ECLK
3、CYCLES 32 ECLK CYCLESCPU CLK DATA BUS/ADDRESS BUS RESETIRESETSAMPLE PIN FFFE FFFE 1st Opcode 2nd Opcode3nd Opcode中斷信號源 From COPFromP.I.T From Crystal MonitorCOPRESETP.I.T IRQC.MRESET INTERRUPT & RESET VECTORGENERATION & PRIORITYECT IRQSSPI IRQSSCI IRQSOther IRQSResets SWI ILLOP I_Vector X_VectorIPEN
4、DXPEND IRQ XIRQ RESETINTERNAL BUSEXTERNAL BUSThe MC9S12DG128can generate over 50 Interrupt requests 異常(中斷)處理中斷請求中斷響應(yīng)、:關(guān)中斷保護(hù)斷點(diǎn)和標(biāo)志寄存器跳到中斷服務(wù)程序入口中斷程序處理中斷返回中斷優(yōu)先級與中斷嵌套當(dāng)多個(gè)中斷等待執(zhí)行時(shí),中斷優(yōu)先級決定哪一個(gè)中斷首先被執(zhí)行中斷嵌套是指中斷本身被另一個(gè)中斷所打斷中斷優(yōu)先級: RESET引腳和上電復(fù)位 時(shí)鐘監(jiān)視復(fù)位 看門狗(COP)復(fù)位 指令陷阱 軟件中斷(SWI) XIRQ中斷 I位可屏蔽中斷中斷優(yōu)先級與中斷嵌套按照X、I標(biāo)志位對于異常的影響
5、將所有的異常再次分類: 所有的復(fù)位、軟件中斷和指令陷阱不受X、I標(biāo)志位影響。 XIRQ中斷當(dāng)X=1時(shí)被屏蔽,但不受I標(biāo)志影響。 其余所有中斷當(dāng)I=1時(shí)被屏蔽。XIRQ中斷的優(yōu)先級高于I位可屏蔽中斷中斷的優(yōu)先級是通過XIRQ中斷會將X、I標(biāo)志同時(shí)置位,由此來屏蔽后續(xù)的X、I位中斷。而I位可屏蔽中斷僅僅將I標(biāo)志位置1,依次來屏蔽同類型的中斷??善帘沃袛嘀袛嘣?中斷源2中斷源3中斷源中斷源中斷XI=0I=1HCS12默認(rèn)中斷處理機(jī)制運(yùn) 行運(yùn) 行運(yùn) 行等 待運(yùn) 行等 待中斷 A中斷 B程序低優(yōu)先級高優(yōu)先級中斷A請求中斷B請求等 待人人平等在可屏蔽中斷服務(wù)程序中EnableInterrupts運(yùn) 行運(yùn)
6、行運(yùn) 行等 待運(yùn) 行運(yùn) 行等 待中斷 A中斷 B程序低優(yōu)先級高優(yōu)先級中斷B請求中斷B被掛起中斷A請求長幼不分采用中斷優(yōu)先處理機(jī)制運(yùn) 行運(yùn) 行等 待運(yùn) 行運(yùn) 行等 待中斷 A中斷 B程序低優(yōu)先級高優(yōu)先級中斷A請求中斷B請求中斷B返回運(yùn) 行等級森嚴(yán)在中斷服務(wù)程序中,首先對I為清零,即EnableInterrupts選擇優(yōu)先級更高的中斷源可以進(jìn)入響應(yīng)中斷設(shè)置優(yōu)先等級兩級一個(gè)中斷源為低優(yōu)先級,其他為高優(yōu)先級在低優(yōu)先級中斷服務(wù)程序中,對I位清零在高優(yōu)先級中斷服務(wù)程序中,不清零多級利用局部的中斷屏蔽位比如Timer Channel0 的中斷屏蔽位 TIE_C0I中斷優(yōu)先處理機(jī)制優(yōu)先機(jī)制 - 兩級例如:中斷
7、向量地址 $FFF0 FFF1 為低優(yōu)先級其他的中斷為高優(yōu)先級在$FFF0 FFF1 中斷服務(wù)程序中,EnableInterrupts(I位清零)其他的中斷包括自己都可以在中斷服務(wù)程序執(zhí)行時(shí)被響應(yīng)在其他的中斷服務(wù)程序中,I位不清零(默認(rèn))只有當(dāng)前中斷服務(wù)程序執(zhí)行完后,才能響應(yīng)其他中斷請求當(dāng)同時(shí)有多個(gè)中斷源請求中斷時(shí),中斷向量地址最靠近$FFFF的,將會首先被響應(yīng)最高優(yōu)先級設(shè)定寄存器(Highest Priority I Interrupt)優(yōu)先機(jī)制 多級優(yōu)先機(jī)制 多級自定義優(yōu)先級中斷向量地址中斷源CCR屏蔽位局部屏蔽位HPRIO1中$FFEE, $FFEFECT 通道0ITIE_C0I$EE0
8、低$FFEC, $FFEDECT 通道1ITIE_C1I$EC2高$FFEA, $FFEBECT 通道2ITIE_C2I$EA要求: 在低優(yōu)先級的中斷服務(wù)程序中,高優(yōu)先級的中斷請求可以被響應(yīng)HPRIO = 0 xEA: ECT0,1,2同時(shí)請求中斷時(shí),CPU將會首先響應(yīng)通道2默認(rèn)時(shí), CPU將會首先響應(yīng)通道0情況1:每個(gè)中斷都單獨(dú)發(fā)生,在一個(gè)中斷程序執(zhí)行時(shí),沒有其他中斷優(yōu)先機(jī)制 多級優(yōu)先級中斷向量地址中斷源CCR屏蔽位局部屏蔽位1 中$FFEE, FFEFECT 通道0ITIE_C0I0 低$FFEC, FFEDECT 通道1ITIE_C1I2 高$FFEA, FFEBECT 通道2ITIE_
9、C2I 情況2: 在執(zhí)行ECT1的中斷服務(wù)程序時(shí),ECT0請求中斷 ECT0中斷服務(wù)程序?qū)⒈粓?zhí)行優(yōu)先機(jī)制 多級優(yōu)先級中斷向量地址中斷源CCR屏蔽位局部屏蔽位1 中$FFEE, FFEFECT 通道0ITIE_C0I0 低$FFEC, FFEDECT 通道1ITIE_C1I2 高$FFEA, FFEBECT 通道2ITIE_C2I情況3:在執(zhí)行ECT2的中斷服務(wù)程序時(shí),ECT0請求中斷ECT2的中斷服務(wù)程序執(zhí)行結(jié)束后,執(zhí)行ECT0的中斷服務(wù)程序優(yōu)先機(jī)制 多級優(yōu)先級中斷向量地址中斷源CCR屏蔽位局部屏蔽位1 中$FFEE, FFEFECT 通道0ITIE_C0I0 低$FFEC, FFEDECT
10、通道1ITIE_C1I2 高$FFEA, FFEBECT 通道2ITIE_C2I情況4:ECT1,ECT2先后請求中斷 ECT1的中斷服務(wù)程序先執(zhí)行,當(dāng)EnableInterrupts后執(zhí)行ECT2的中斷服務(wù)程序ECT2的中斷服務(wù)程序執(zhí)行結(jié)束后,返回執(zhí)行ECT1的中斷服務(wù)程序優(yōu)先機(jī)制 多級優(yōu)先級中斷向量地址中斷源CCR屏蔽位局部屏蔽位1 中$FFEE, FFEFECT 通道0ITIE_C0I0 低$FFEC, FFEDECT 通道1ITIE_C1I2 高$FFEA, FFEBECT 通道2ITIE_C2I情況5:ECT1,ECT2同時(shí)請求中斷 ECT2的中斷服務(wù)程序先執(zhí)行ECT2的中斷服務(wù)程序
11、執(zhí)行結(jié)束后,執(zhí)行ECT1的中斷服務(wù)程序優(yōu)先機(jī)制 多級優(yōu)先級中斷向量地址中斷源CCR屏蔽位局部屏蔽位1 中$FFEE, FFEFECT 通道0ITIE_C0I0 低$FFEC, FFEDECT 通道1ITIE_C1I2 高$FFEA, FFEBECT 通道2ITIE_C2I方案:優(yōu)先機(jī)制 多級在ECT0(中)中斷服務(wù)程序中:在ECT1(低)中斷服務(wù)程序中(自定義優(yōu)先級最低):在ECT2(高)中斷服務(wù)程序中(自定義優(yōu)先級最高): TIE_C1I = 0; /關(guān)閉ECT1局部中斷TIE_C2I = 1; /開放ECT2局部中斷EnableInterrupts; /開放全局中斷TIE_C1I = 1;
12、 /開放ECT1局部中斷TIE_C2I = 1; /開放ECT2局部中斷TIE_C0I = 1; /開放ECT0局部中斷TIE_C2I = 1; /開放ECT2局部中斷EnableInterrupts; /開放全局中斷TIE_C0I = 1; /開放ECT0局部中斷TIE_C2I = 1; /開放ECT2局部中斷用戶程序中斷優(yōu)先級與中斷嵌套默認(rèn)狀態(tài):在進(jìn)入中斷服務(wù)程序時(shí),I位自動置1,禁止其他可屏蔽中斷即使有優(yōu)先級更高的中斷請求,也必須等當(dāng)前中斷服務(wù)程序執(zhí)行完以后才能響應(yīng)優(yōu)先級的作用只有在多個(gè)中斷源同時(shí)請求中斷時(shí)在能體現(xiàn)無法實(shí)現(xiàn)中斷嵌套如果在進(jìn)入中斷服務(wù)程序時(shí),手動對I位清零:任何其他可屏蔽中
13、斷都可以被響應(yīng),無論其優(yōu)先級有多高中斷響應(yīng)由時(shí)間控制,可以實(shí)現(xiàn)中斷嵌套對中斷執(zhí)行無法預(yù)測HPRIO寄存器寫入HPRIO中的中斷向量的后八位,可以改變該中斷的優(yōu)先級同樣,優(yōu)先級的作用只有在多個(gè)中斷源同時(shí)請求中斷時(shí)在能體現(xiàn)中斷向量表在0 xFF800 xFFFF地址空間設(shè)置了一個(gè)向量表,每個(gè)向量表對應(yīng)一種異常的處理程序的地址。向量表中每個(gè)向量為16位,占用2個(gè)字節(jié)空間,所有S12最大可有64個(gè)中斷向量。S12處理器在進(jìn)行中斷響應(yīng)時(shí),依據(jù)中斷信號的來源在中斷向量表中對應(yīng)位置取得中斷向量的16位中斷服務(wù)程序入口地址,進(jìn)而以此地址轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序。 頁2 Flash 頁1 Flash中斷程序設(shè)計(jì)實(shí)
14、例寄存器RAM不分頁Flash分頁Flash不分頁Flash中斷向量0 x00000 xFFFF中斷服務(wù)程序入口地址 頁2 Flash 頁1 Flash中斷程序設(shè)計(jì)實(shí)例寄存器RAM不分頁Flash分頁Flash不分頁Flash中斷向量0 x00000 xFFFF中斷服務(wù)程序入口地址 頁2 Flash 頁1 Flash中斷程序設(shè)計(jì)實(shí)例寄存器RAM不分頁Flash分頁Flash不分頁Flash中斷向量0 x00000 xFFFF中斷服務(wù)程序入口地址 頁2 Flash 頁1 Flash中斷程序設(shè)計(jì)實(shí)例寄存器RAM不分頁Flash分頁Flash不分頁Flash中斷向量0 x00000 xFFFF中斷服
15、務(wù)程序入口地址 頁2 Flash 頁1 Flash中斷程序設(shè)計(jì)實(shí)例寄存器RAM不分頁Flash分頁Flash不分頁Flash中斷向量0 x00000 xFFFF中斷服務(wù)程序入口地址 頁2 Flash 頁1 Flash中斷程序設(shè)計(jì)實(shí)例寄存器RAM不分頁Flash分頁Flash不分頁Flash中斷向量0 x00000 xFFFFRAM跳轉(zhuǎn)表入口$06$06中斷程序設(shè)計(jì)實(shí)例(1)用關(guān)鍵詞interrupt和中斷矢量編號定義中斷函數(shù)Interrupt INT_NUM void ISR_Function(void)interrupt 7 void RTI_ISR(void) . /*中斷服務(wù)程序?qū)崿F(xiàn)主體
16、*/ 中斷程序設(shè)計(jì)實(shí)例(2)用關(guān)鍵詞interrupt定義中斷函數(shù), 中斷矢量入口由prm文件指定void interrupt ISR_Function (void) . /*中斷服務(wù)程序?qū)崿F(xiàn)主體*/在項(xiàng)目對應(yīng)的prm文件中添加一行矢量位置定義,如:VECTOR 0 _Startup /系統(tǒng)缺省的復(fù)位矢量入口VECTOR 7 RTI_ISR /指定的中斷服務(wù)矢量入口中斷程序設(shè)計(jì)實(shí)例(3)用#pragma TRAP_PROC定義中斷函數(shù), 在prm文件中指定矢量入口#pragma TRAP_PROC void SCI0_ISR(void) /*中斷服務(wù)程序?qū)崿F(xiàn)主體*/ 在prm文件中使用VECT
17、OR實(shí)現(xiàn)中斷向量與中斷程序的連接:VECTOR 0 _Startup /這是系統(tǒng)默認(rèn)/復(fù)位中斷Startup() VECTOR 20 SCI0_ISR /指定中斷號 或者:VECTOR ADDRESS 0 xFFD6 SCI0_ISR /直接指定中斷向量地址中斷程序設(shè)計(jì)實(shí)例(4)直接建立中斷向量表數(shù)組_interrupt void UnimplementedISR(void) _asm BGND;_interrupt void ReservedISR(void) _asm BGND;typedef void (*tIsrFunc)(void);const tIsrFunc ResetVecto
18、rTable 0 xFF10 =ReservedISR, /* 0 xFF10 Spurious Interrupt */ReservedISR, /* 0 xFF12 Reserved */UnimplementedISR, /* 0 xFFF2 IRQ */UnimplementedISR, /* 0 xFFF4 XIRQ */UnimplementedISR, /* 0 xFFF6 SWI */UnimplementedISR, /* 0 xFFF8 Unimplemented instruction trap */UnimplementedISR, /* 0 xFFFA COP fai
19、lure reset */UnimplementedISR, /* 0 xFFFC Clock monitor fail reset */_Startup /* Reset vector */;中斷程序設(shè)計(jì)實(shí)例而且由于中斷向量表字長限制,中斷服務(wù)程序入口地址只能是16位,其尋址范圍為64K中斷服務(wù)子程序必須被放在非分頁存儲區(qū)內(nèi),即NON_BANKED。#pragma CODE_SEG _NEAR_SEG NON_BANKED/中斷服務(wù)程序#pragma CODE_SEG DEFAULT/下面內(nèi)容按默認(rèn)放置外部中斷例程讀寫B(tài)it7Bit6Bit5Bit4Bit3Bit2Bit1Bit0R/WIRQEIRQEN000000外部中斷控制寄存器:INTCRIRQE:邊沿觸發(fā)中斷使能 0:IRQ引腳接受低電平觸發(fā) 1:IRQ引腳接受下降沿觸發(fā)IRQEN:IRQ中斷使能位 0:禁止IRQ觸發(fā)中斷 1:允許IRQ觸發(fā)中斷void IRQInit(void) INTCR = 0 xC0; /11000000B,下降沿觸發(fā),允許IRQ中斷 EnableInterrupts; / 允許中斷#define EnableInterrupts _asmCLI 外部中斷例程#pragma CO
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 印制中標(biāo)采購合同范本
- 云倉配送合同范本
- 勞動關(guān)系有問題合同范本
- 合同范本 渣場
- 制冷店設(shè)備維修合同范本
- 上街區(qū)合同范本
- 醫(yī)療垃圾回收合同范例
- 關(guān)于公司培訓(xùn)合同范例
- 收購鴿子合同范本
- 代理公司勞務(wù)合同范本
- 甲醛優(yōu)質(zhì)課件
- 畢業(yè)設(shè)計(jì)工程造價(jià)預(yù)算書
- 英語七年級下冊u1-u8 2b翻譯
- 《大學(xué)英語教學(xué)大綱詞匯表》(1~4級,5~6級)
- 2022年在戲劇家協(xié)會會員大會上的講話
- DB11-T1630-2019城市綜合管廊工程施工及質(zhì)量驗(yàn)收規(guī)范
- 茂名市2008-2016年土地增值稅工程造價(jià)核定扣除標(biāo)準(zhǔn)
- 部編版語文九年級下冊《棗兒》公開課一等獎教案
- L阿拉伯糖與排毒課件
- 《現(xiàn)代交換原理》期末考試試習(xí)題和答案(免費(fèi))
- 手機(jī)開發(fā)流程圖
評論
0/150
提交評論