新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 飛思卡爾HCS12中斷

        飛思卡爾HCS12中斷

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





        中斷優先處理機制:

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

        自定義優先級
        中斷向量地址
        中斷源
        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


        要求:在低優先級的中斷服務程序中,高優先級的中斷請求可以被響應

        HPRIO = 0xEA:ECT0,1,2同時請求中斷時,CPU將會首先響應通道2
        默認時,CPU將會首先響應通道0


        優先機制-多級

        情況 1:
        每個中斷都單獨發生,在一個中斷程序執行時,沒有其他中斷
        情況 2:
        在執行ECT1的中斷服務程序時,ECT0請求中斷
        ECT0中斷服務程序將被執行
        情況 3:
        在執行ECT2的中斷服務程序時,ECT0請求中斷
        ECT2的中斷服務程序執行結束后,執行ECT0的中斷服務程序
        情況 4:
        ECT1,ECT2同時請求中斷

        ECT1的中斷服務程序先執行,當EnableInterrupts后
        執行ECT2的中斷服務程序
        ECT2的中斷服務程序執行結束后,返回執行ECT1的中斷服務程序

        在ECT0中斷服務程序中:
        TIE_C1I = 0; //關閉ECT1局部中斷
        TIE_C2I = 1; //開放ECT2局部中斷
        EnableInterrupts; //開放全局中斷

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

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

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



        關鍵詞: 飛思卡爾HCS12中

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 淅川县| 麻城市| 涟水县| 兰州市| 和静县| 张家口市| 靖州| 东莞市| 图木舒克市| 抚远县| 枣阳市| 巴塘县| 汾阳市| 科技| 松溪县| 合肥市| 舞钢市| 兴义市| 水城县| 禹城市| 紫金县| 巢湖市| 浦江县| 西乌| 萨迦县| 商城县| 外汇| 长宁县| 浦江县| 敦煌市| 桐柏县| 班戈县| 上犹县| 罗甸县| 漠河县| 海丰县| 景泰县| 逊克县| 阳谷县| 南靖县| 偃师市|