飛思卡爾RTI實時中斷模組

2021-08-18 10:30:41 字數 1704 閱讀 6207

實時中斷就是乙個定時模組,定時溢位,產生中斷。 第一步,實時中斷rti 在預設情況下是關閉的,怎樣才能讓 rti 工作呢? 這就用到實時中斷控制暫存器 rtictl 了。 rtictl是乙個八位暫存器,第七位沒定義,只用到低七位[rtr6~rtr0]。當rtr[6:4]=000時,實時中斷被禁止,只要當rtr[6:4] 不全為0時,實時中斷就開了同時實時中斷的溢位週期也是由該暫存器配置的。 rti 的參考時間是外部晶振的時鐘oscclk。故,實時中斷的溢位時鐘週期=(rtr[3:0]+1) x (2的(rtr[6:4] + 9)次方)/oscclk  第二步,要想在實時中斷溢位時產生乙個中斷,則用到暫存器 crgint 了。                 當crgint_rtie=1時,每個週期結束時,就會產生乙個中斷只要配置好上面說的兩個暫存器,再寫上相應的中斷函式,實時中斷就可以用了。順便提一下,實時中斷 rti 的中斷號是 7 crg***_rtif 是實時中斷的標誌位,當 rti 溢位時,crg***_rtif 就會由硬體置1,向crg***_rtif 寫1,可以清零標誌位。這和51微控制器不一樣,51微控制器的標誌位清零是向相應的暫存器寫0 與 rti 相關的暫存器還有 clksel_rtiwai,不過一般都不會用到。當clksel_rtiwai=1時,只要系統進入等待模式,rti 就停止工作。當clksel_rtiwai=0時,在等待模式下,rti 仍然工作實時中斷寫到這裡接進尾聲了,下面附些與實時中斷相關的程式:實時中斷就是乙個定時模組,定時溢位,產生中斷。 第一步,實時中斷rti 在預設情況下是關閉的,怎樣才能讓 rti 工作呢? 這就用到實時中斷控制暫存器 rtictl 了。 rtictl是乙個八位暫存器,第七位沒定義,只用到低七位[rtr6~rtr0]。當rtr[6:4]=000時,實時中斷被禁止,只要當rtr[6:4] 不全為0時,實時中斷就開了同時實時中斷的溢位週期也是由該暫存器配置的。 rti 的參考時間是外部晶振的時鐘oscclk。故,實時中斷的溢位時鐘週期=(rtr[3:0]+1) x (2的(rtr[6:4] + 9)次方)/oscclk  第二步,要想在實時中斷溢位時產生乙個中斷,則用到暫存器 crgint 了。                 當crgint_rtie=1時,每個週期結束時,就會產生乙個中斷只要配置好上面說的兩個暫存器,再寫上相應的中斷函式,實時中斷就可以用了。順便提一下,實時中斷 rti 的中斷號是 7 crg***_rtif 是實時中斷的標誌位,當 rti 溢位時,crg***_rtif 就會由硬體置1,向crg***_rtif 寫1,可以清零標誌位。這和51微控制器不一樣,51微控制器的標誌位清零是向相應的暫存器寫0 與 rti 相關的暫存器還有 clksel_rtiwai,不過一般都不會用到。當clksel_rtiwai=1時,只要系統進入等待模式,rti 就停止工作。當clksel_rtiwai=0時,在等待模式下,rti 仍然工作實時中斷寫到這裡接進尾聲了,下面附些與實時中斷相關的程式:

#include

#include

#pragma link_info derivative "mc9s12xs128"

void rti_init()       //實時中斷 rti 初始化函式

//實際上是10.24ms    16m是外部晶振的頻率,實時中斷以外部晶振時鐘為參考時鐘

void main()

}#pragma code_seg __near_seg non_banked       //實時中斷rti 中斷函式

void interrupt 7 rti(void)

{crg***_rtif=1; //向crg***_rtif 寫1 清除標誌位

飛思卡爾中斷設定

對於飛思卡爾codewarrior的中斷使用,一般有3種方法 1.把 pragma trap proc放在中斷程式前面,並把中斷向量表放到 prm。例如 pragma trap proc void pit1 void 例如 interrupt void intpit1 void 向量表的首位址放入 ...

飛思卡爾ATD模組

s12xs系列mcu的atd模組有27個暫存器,六個轉換控制暫存器,兩個轉換狀態暫存器,乙個比較使能暫存器,乙個比較方式暫存器和16個轉換結果暫存器,附上一段例程 void atd init void 一般常用到的也就是這段例程中用到的幾個暫存器。include include derivative...

飛思卡爾智慧型車總結 之中斷的處理方法

參加飛思卡爾比賽。對於我這個學計算機軟體的人,來寫微控制器的程式,還真的是由不少困難。最近一直在看freescale的程式規範,真的是很糾結。我全部的硬體程式設計經驗不過是去年硬體小學期的vhdl程式,在試驗箱上搗鼓搗鼓程式邏輯,就這點。本來就忘的差不多了,況且它與微控制器的模式還有很多區別。所以啊...