新聞中心

飛思卡爾HCS12中斷

作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
默認(rèn)狀態(tài):
在進(jìn)入中斷服務(wù)程序時,I位自動置1,禁止其他可屏蔽中斷
即使有優(yōu)先級更高的中斷請求,也必須等當(dāng)前中斷服務(wù)程序執(zhí)行完以后才能響應(yīng)
優(yōu)先級的作用只有在多個中斷源同時請求中斷時在能體現(xiàn)
無法實現(xiàn)中斷嵌套
如果在進(jìn)入中斷服務(wù)程序時,手動對I位清零:
任何其他可屏蔽中斷都可以被響應(yīng),無論其優(yōu)先級有多高
中斷響應(yīng)由時間控制,可以實現(xiàn)中斷嵌套
對中斷執(zhí)行無法預(yù)測
HPRIO寄存器
寫入HPRIO中的中斷向量的后八位,可以改變該中斷的優(yōu)先級
同樣,優(yōu)先級的作用只有在多個中斷源同時請求中斷時在能體現(xiàn)





中斷優(yōu)先處理機(jī)制:

1:在中斷服務(wù)程序中,首先對I為清零,即EnableInterrupts
2:選擇優(yōu)先級更高的中斷源可以進(jìn)入響應(yīng)中斷
3:設(shè)置優(yōu)先等級
(一)兩級
一個中斷源為低優(yōu)先級,其他為高優(yōu)先級
在低優(yōu)先級中斷服務(wù)程序中,對I位清零
在高優(yōu)先級中斷服務(wù)程序中,不清零
(二)多級
利用局部的中斷屏蔽位
比如Timer Channel0 的中斷屏蔽位 TIE_C0I
優(yōu)先機(jī)制 - 兩級
例如:
--中斷向量地址 $FFF0 – FFF1 為低優(yōu)先級
--其他的中斷為高優(yōu)先級
--在$FFF0 – FFF1 中斷服務(wù)程序中,EnableInterrupts(I位清零)
--其他的中斷包括自己都可以在中斷服務(wù)程序執(zhí)行時,被響應(yīng)
--在其他的中斷服務(wù)程序中,I位不清零(默認(rèn))
--只有當(dāng)前中斷服務(wù)程序執(zhí)行完后,才能響應(yīng)其他的中斷請求
當(dāng)同時有多個中斷源請求中斷時,中斷向量地址最靠近$FFFF的,將會首先被響應(yīng)。

自定義優(yōu)先級
中斷向量地址
中斷源
CCR屏蔽位
局部屏蔽位
HPRIO
1
$FFEE,$FFEF
ECT通道0
I
TIE_C0I
$EE
0
$FFEC,$FFED
ECT通道1
I
TIE_C1I
$EC
2
$FFEA,$FFEB
ECT通道2
I
TIE_C2I
$EA


要求:在低優(yōu)先級的中斷服務(wù)程序中,高優(yōu)先級的中斷請求可以被響應(yīng)

HPRIO = 0xEA:ECT0,1,2同時請求中斷時,CPU將會首先響應(yīng)通道2
默認(rèn)時,CPU將會首先響應(yīng)通道0


優(yōu)先機(jī)制-多級

情況 1:
每個中斷都單獨發(fā)生,在一個中斷程序執(zhí)行時,沒有其他中斷
情況 2:
在執(zhí)行ECT1的中斷服務(wù)程序時,ECT0請求中斷
ECT0中斷服務(wù)程序?qū)⒈粓?zhí)行
情況 3:
在執(zhí)行ECT2的中斷服務(wù)程序時,ECT0請求中斷
ECT2的中斷服務(wù)程序執(zhí)行結(jié)束后,執(zhí)行ECT0的中斷服務(wù)程序
情況 4:
ECT1,ECT2同時請求中斷

ECT1的中斷服務(wù)程序先執(zhí)行,當(dāng)EnableInterrupts后
執(zhí)行ECT2的中斷服務(wù)程序
ECT2的中斷服務(wù)程序執(zhí)行結(jié)束后,返回執(zhí)行ECT1的中斷服務(wù)程序

在ECT0中斷服務(wù)程序中:
TIE_C1I = 0; //關(guān)閉ECT1局部中斷
TIE_C2I = 1; //開放ECT2局部中斷
EnableInterrupts; //開放全局中斷

TIE_C1I = 1; //開放ECT1局部中斷
TIE_C2I = 1; //開放ECT2局部中斷
在ECT1中斷服務(wù)程序中(自定義優(yōu)先級最低):

TIE_C0I = 1; //開放ECT0局部中斷
TIE_C2I = 1; //開放ECT2局部中斷
EnableInterrupts; //開放全局中斷

TIE_C0I = 1; //開放ECT0局部中斷
TIE_C2I = 1; //開放ECT2局部中斷
在ECT2中斷服務(wù)程序中(自定義優(yōu)先級最高):
用戶程序



關(guān)鍵詞: 飛思卡爾HCS12中

評論


技術(shù)專區(qū)

關(guān)閉