MC9S12XS128之時(shí)間模塊TIM_第1頁(yè)
MC9S12XS128之時(shí)間模塊TIM_第2頁(yè)
MC9S12XS128之時(shí)間模塊TIM_第3頁(yè)
MC9S12XS128之時(shí)間模塊TIM_第4頁(yè)
MC9S12XS128之時(shí)間模塊TIM_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、MC9S12XS128之時(shí)間模塊TIM(1)輸入捕捉買了本嵌入式系統(tǒng)使用HCS12微控制器的設(shè)計(jì)與應(yīng)用這本書(shū),看了覺(jué)得幫助不大。因?yàn)槔锩嬗行〇|西講得不夠詳細(xì),并且這本書(shū)不是針對(duì)XS128來(lái)寫(xiě)的。網(wǎng)上也有一些網(wǎng)友寫(xiě)的資料,那都只是針對(duì)某一方面的。我覺(jué)得最好的資料還是英文版的說(shuō)明文檔,里面好多東西都講得很詳細(xì),雖然看起來(lái)有點(diǎn)費(fèi)勁,但那里值得的。接下來(lái)就自己的學(xué)習(xí)經(jīng)歷。TIM中的功能比較多,有輸入捕捉、輸出比較,還有脈沖累加器。這里主要記一下輸入捕捉和輸出比較。輸入捕捉這個(gè)功能很有用,他不僅可以捕捉外界事件的發(fā)生(這個(gè)功能和51中的外部中斷差不多),還可以捕捉外界事件發(fā)生的時(shí)間。捕捉外界時(shí)間這個(gè)功能

2、可以運(yùn)用到驅(qū)動(dòng)超聲波測(cè)距中去。IOC0IOC7是輸入捕捉輸出比較的外部針腳。當(dāng)IOSx=0時(shí)(IOSx=1時(shí)為輸出比較),則將相應(yīng)的通道配置為輸入捕捉了。當(dāng)輸入捕捉檢測(cè)到有上升沿或下降沿時(shí),就會(huì)把那時(shí)寄存器的值鎖存到TCx中,這樣就可以通過(guò)查詢TCx來(lái)確定事件發(fā)生的時(shí)間了。如果輸入捕捉控制寄存器TIE(CxI=1)中允許輸入捕捉中斷,則捕捉到事件時(shí),系統(tǒng)會(huì)產(chǎn)生一次中斷。接下來(lái)依次說(shuō)明一下相關(guān)的寄存器設(shè)置:TSCR1:TEN是定時(shí)器允許位。TEN=1時(shí),允許定時(shí)器工作,TEN=0時(shí),禁止定時(shí)器工作。其余不常用,設(shè)為0即可。TSCR2:TOI是定時(shí)器溢出中斷允許位。這個(gè)在輸入捕捉中沒(méi)用到,設(shè)為0即

3、可。TCRE是定時(shí)器計(jì)數(shù)寄存器復(fù)位允許位。用在輸出比較中,允許輸出比較寄存器7的事件來(lái)復(fù)位定時(shí)器計(jì)數(shù)寄存器。這里設(shè)為0即可。PR2PR0是定時(shí)器分頻因子選擇位。不同的組合可以設(shè)定不同的定時(shí)器時(shí)鐘:TIOS是輸入捕捉和輸出比較選擇寄存器,在這里設(shè)定IOC0IOC7是用于輸入捕捉還是用于輸出比較。里面的8位對(duì)應(yīng)著IOC0IOC7八個(gè)通道,相應(yīng)位位1,則設(shè)為輸出比較。相應(yīng)位設(shè)為0,則為輸入捕捉。TCTL3和TCTL4是用來(lái)設(shè)定輸入捕捉極性的寄存器,在這里可以設(shè)為上升沿、下降沿、上升沿或下降沿觸發(fā)輸入捕捉。其中EDGxB和EDGxA一起來(lái)設(shè)相應(yīng)通道輸入捕捉極性,對(duì)應(yīng)的功能如下:(0 0)為禁止輸入捕捉

4、。(0 1)為上升沿捕捉(1 0)為下降沿捕捉(1 1)為上升沿或下降沿捕捉TIE是輸入捕捉或輸出比較中斷允許位。這里的每一位是和TIOS上的位一一對(duì)應(yīng)的。相應(yīng)置1時(shí),則捕捉到事件時(shí),則系統(tǒng)會(huì)產(chǎn)生中斷。相應(yīng)位設(shè)為0時(shí),則不能。TFLG1是輸入捕捉或輸出比較中斷標(biāo)位寄存器。當(dāng)發(fā)生輸入捕捉或輸出比較事件時(shí),相應(yīng)位置1。向該位寫(xiě)1,可以清空該標(biāo)志位。通道寄存器TC0TC7用于鎖存發(fā)生捕捉事件時(shí)自由運(yùn)行的計(jì)數(shù)器的計(jì)數(shù)值。通過(guò)查詢TC0TC7相應(yīng)的位,可以確定捕捉事件發(fā)生的時(shí)刻。與輸入捕捉相關(guān)的寄存器還有:ICOVW:輸入控制修改寄存器ICSYS:輸入控制系統(tǒng)控制寄存器DLYCT:延遲計(jì)數(shù)控制寄存器(可

5、以自動(dòng)處理窄脈沖干擾)這些不常,可以不管接下來(lái)按照上面的寄存器設(shè)置好相應(yīng)的功能,程序就出來(lái)了:void ECT0_INIT()       /輸入捕捉通道0初始化函數(shù) TSCR2=0X06;           /關(guān)閉溢出中斷且64分頻 TIOS_IOS0=0;          /定通道0為輸入捕

6、捉,1為輸出比較 TCTL4=0X01;             /上升沿捕捉  0x02為下降沿捕捉 TIE_C0I=1;               /通道0中斷使能 TSCR1=0X80;      /開(kāi)

7、啟總定時(shí)器中斷 TFLG1_C0F=1;   /標(biāo)志位清零中斷程序:#pragma CODE_SEG _NEAR_SEG NON_BANKED  /分配內(nèi)存空間void interrupt 8 timer_onput()    /輸入捕捉通道0的中斷向量為8   TFLG1_C0F=1;   /標(biāo)志位清零   asm sei;      /關(guān)總中斷 

8、;  / PORTB=PORTB;   PORTB&=(1<<7);   delay_us(1);   PORTB|=(1<<7);      asm cli;   /開(kāi)總中斷                

9、                                                  

10、                                                  

11、                                                  

12、                         BY DABAOMC9S12XS128之時(shí)間模塊TIM(2)輸出比較     輸出比較看似不能,卻磨折了我兩天,其中大多都是些小細(xì)節(jié)問(wèn)題在糾纏?,F(xiàn)在終于想明白其中一些道理。不過(guò)有些寄存器還是沒(méi)有理解,如強(qiáng)制輸出比較寄存器CFORC,測(cè)試了好久,都未能得到想要的結(jié)果,希望

13、路過(guò)的高手能指點(diǎn)一下。            接下來(lái)繼續(xù)記一下學(xué)習(xí)輸出比較的點(diǎn)點(diǎn)滴滴吧。             XS128的定時(shí)器模塊中的輸入捕捉和輸出比較共用同一組管腳??梢酝ㄟ^(guò)設(shè)置TIOS寄存器來(lái)選擇。我覺(jué)得輸出比較的原理和PWM波的產(chǎn)生原理差不多,都是通過(guò)計(jì)數(shù)器的數(shù)值和某一寄存器里的值比較產(chǎn)生輸出的高低電平變化。在輸出比較中,當(dāng)計(jì)數(shù)器的值與某一輸出比較通道的T

14、Cx(TC0TC7)的值相等時(shí),該通道上引腳會(huì)輸出高電平、低電平,或是對(duì)引腳上的電平進(jìn)行翻轉(zhuǎn)。這時(shí)標(biāo)志位CxF會(huì)置位,如果開(kāi)通中斷的話(TIE中的CxI=1),系統(tǒng)還會(huì)產(chǎn)生一個(gè)中斷。            輸出比較用到的寄存器好多都是和輸入捕捉的一樣,現(xiàn)在按照輸出比較的程序需要再過(guò)一遍。            定時(shí)器系統(tǒng)控制寄存器TSCR1:設(shè)置定時(shí)器正常工作 

15、60;          定時(shí)器系統(tǒng)控制寄存器TSCR2:設(shè)置定時(shí)器溢出中斷允許,和定時(shí)器時(shí)鐘分頻設(shè)置            定時(shí)器計(jì)數(shù)寄存器TCNT:這是個(gè)16位寄存器,在一般情況下是不可以寫(xiě)的。輸入捕捉時(shí),就是這個(gè)寄存器的值存入TCx中,輸出比較時(shí),也是這個(gè)寄存器的值與TCx的值比較。它的時(shí)鐘由TSCR2設(shè)置的分頻決定。程序中這個(gè)寄存器一般情況下不用理會(huì)。   &

16、#160;    主定時(shí)器國(guó)斷標(biāo)志寄存器TFLG2:在這個(gè)寄存器中只有最高位TOF有效,是定時(shí)器溢出標(biāo)志位。當(dāng)TCNT運(yùn)行產(chǎn)生溢出時(shí),該位就置位了。如果允許定時(shí)器溢出中斷的話,則系統(tǒng)會(huì)產(chǎn)生一個(gè)中斷。         輸入捕捉和輸出比較選擇寄存器TIOS:設(shè)置相應(yīng)的通道為輸入捕捉或是輸出比較。         主定時(shí)器中斷標(biāo)志寄存器TFLG1:輸入捕捉或輸出比較的各通道的中斷標(biāo)志位。對(duì)相應(yīng)的通道寫(xiě)1,可以清除

17、標(biāo)志位。              定時(shí)器中斷允許寄存器TIE:里面有8位,對(duì)應(yīng)輸入捕捉或輸出比較的8個(gè)通道,設(shè)置是否允許相應(yīng)通道的中斷。             通道寄存器TC0TC7:在輸出比較中隨時(shí)可以寫(xiě)入,它的作用是,當(dāng)TCx=TCNT時(shí),相應(yīng)的x通道就會(huì)發(fā)生輸出比較。此時(shí)相應(yīng)的引腳就可以輸出高電平、低電平,或是翻轉(zhuǎn)引腳的電平。 

18、           上面的寄存器都是和輸入捕捉共用的,在輸入捕捉中講過(guò)。接下來(lái)就具體說(shuō)明輸出比較特別有的寄存器設(shè)置。      TCTL1TCTL2:這個(gè)兩個(gè)寄存器中每個(gè)OMx和OLx組合在一起,來(lái)設(shè)置相應(yīng)通道的引腳電平輸出方式: (0 0):輸出比較的通道與引腳邏輯斷開(kāi),也就是輸出比較的輸出不會(huì)影響相應(yīng)的引腳的電平。 (0 1):翻轉(zhuǎn)輸出比較的引腳的電平。 (1 0):在相應(yīng)的引腳上輸出低電平。

19、0;(1 1):在相應(yīng)的引腳上輸出高電平。      CFORC:定時(shí)器強(qiáng)制輸出比較寄存器相應(yīng)位置1時(shí),可以把相應(yīng)通道的輸出比較設(shè)為強(qiáng)制輸出比較。一般情況下不用。      OC7M:輸出比較通道7屏蔽寄存器      OC7D:輸出比較通道7數(shù)據(jù)寄存器通道7上的連續(xù)輸出比較會(huì)覆蓋所有其他通道的引腳上的輸出結(jié)果。OC7M就是設(shè)置其他通道的哪些通道會(huì)受通道7控制的。當(dāng)OC7M的某位置1時(shí),相應(yīng)通道的輸出比較就會(huì)受通道7

20、控制,此時(shí)受控的通道在其通道上設(shè)置的OMx和OLx無(wú)效了,而是按照OC7D中對(duì)應(yīng)的OC7Dx中的值輸出到相應(yīng)的引腳上。總的來(lái)說(shuō),OC7M是選擇受通道7控制的其他通道,而OC7D是受控的通道在通道7發(fā)生輸出比較時(shí)的輸出結(jié)果。      TTOV:定時(shí)器溢出翻轉(zhuǎn)寄存器相應(yīng)通道置1時(shí),計(jì)數(shù)器溢出時(shí),允許翻轉(zhuǎn)輸出比較引腳上的電平。這個(gè)寄存器只在輸出比較模式下才有效。一般情況下,用不到這個(gè)寄存器,程序中不用做設(shè)置。     OCPD(OCPD0OCPD7):當(dāng)相應(yīng)位置1時(shí),標(biāo)志位正常,但是輸出比較的結(jié)果不

21、能輸出到引腳上,也就是輸出比較的寄存器與引腳邏輯斷開(kāi)了。當(dāng)相應(yīng)位設(shè)為0時(shí),標(biāo)志位正常,引腳輸出也正常。  下面是相應(yīng)的程序:     #include <hidef.h>      /* common defines and macros */#include "derivative.h"      /* derivative-specific definitions */v

22、oid main(void)  DDRB=0XFF;  PORTB=0X7F;  /DisableInterrupts;  TSCR2=0X07; /設(shè)置定時(shí)器分頻  TIOS=0X01;/通道0為輸出比較  TCTL2=0X01;  /模式為翻轉(zhuǎn)引腳輸出電平  TC0=0XAAAA;   /設(shè)置輸出引腳在一個(gè)周期內(nèi)翻轉(zhuǎn)的時(shí)間,      

23、0;                        /如果這個(gè)值保持不變的話,那總的來(lái)看,                       &#

24、160;   /引腳輸出電平的周期是不變的,周期等于計(jì)數(shù)器計(jì)數(shù)一周的時(shí)間  /TTOV=0X00;  /  /CFORC=0X01; /加上這一句,似乎沒(méi)什么影響。還沒(méi)清這個(gè)寄存器的具體作用。    TIE=0X01; /相應(yīng)通道中斷允許     TSCR1=0X80;    /打開(kāi)定時(shí)器  /PORTB=PTT;    

25、60;EnableInterrupts; while(1);#pragma CODE_SEG _NEAR_SEG NON_BANKED interrupt void  interrupt 8 CH0_ISR(void)   /要特別注意中斷函數(shù)的書(shū)寫(xiě)格式,我就在這里吃了大虧DisableInterrupts;TFLG1=0x01;        /清零標(biāo)志位if(TC0=0xAAAA)     /

26、改變引腳輸出的占空比。輸出的周期由計(jì)數(shù)器計(jì)數(shù)一                   /周的時(shí)間決定,要改變,只能改變定時(shí)器的時(shí)鐘分頻TC0=0xffff;TC0=0xAAAA; PORTB_PB7=PORTB_PB7;     /測(cè)試是否進(jìn)入中斷EnableInterrupts;      

27、;                                                  

28、;           BY DABAOMC9S12XS128之時(shí)間模塊TIM(3)脈沖累加器         XS128中的脈沖累加器和DG128的很不一樣。相對(duì)DG128來(lái)說(shuō),XS128的脈沖累加器大大簡(jiǎn)化了,其中只有三個(gè)寄存器需要設(shè)置:PACTL、PAFLG、PACNT。        16位脈沖累加器PACT與IOC7共用一個(gè)引腳。顧名思義

29、,脈沖累加器就是對(duì)有效邊沿(上升沿或下降沿)進(jìn)行計(jì)數(shù),然后把計(jì)數(shù)的值保存在寄存器PACNT中。寄存器PACTL是16位脈沖累加器的核心,幾乎所有的設(shè)置都是在這個(gè)寄存器中。        接下來(lái)解剖一下這個(gè)核心寄存器PACTL:PAEN:脈沖累加器允許位,置1,則工作。置0,則禁止。PAEN與TEN無(wú)關(guān),定時(shí)器TEN禁止時(shí),脈沖累加器仍可以工作。PAMOD:工作方式選擇位。置1,為門(mén)控時(shí)間累加器方式。置0,為事件計(jì)數(shù)器方式。        門(mén)控時(shí)間

30、累加器方式:輸入引腳上的有效電平會(huì)觸發(fā)脈沖累加器對(duì)64分頻后的時(shí)鐘進(jìn)行計(jì)數(shù)。        事件計(jì)數(shù)器方式:脈沖累加器對(duì)引腳上的每個(gè)有效邊沿計(jì)數(shù)。引腳上每產(chǎn)生一個(gè)有效邊沿,脈沖累加器計(jì)數(shù)器的值就會(huì)加1。PEDGE:邊沿跳變控制位。它的功能和脈沖累加器的工作方式有關(guān)。如下表:(0  0):事件計(jì)數(shù)器方式,下降沿有效(0  1):事件計(jì)數(shù)器方式,上升沿有效(1       0):門(mén)控時(shí)間累加器方式,IOC7引腳上的高電平使64分頻

31、后的總線時(shí)鐘輸入到脈沖累加器中。(1       1):門(mén)控時(shí)間累加器方式,IOC7引腳上的低電平使64分頻后的總線時(shí)鐘輸入到脈沖累加器中。CLK0CLK1:時(shí)鐘選擇位。其功能如下表:(0       0):使用TIM中分頻后的定時(shí)器時(shí)鐘作為計(jì)數(shù)時(shí)鐘(0       1):選PACLK作為計(jì)數(shù)時(shí)鐘(1       0)

32、:選PACLK/256作為計(jì)數(shù)時(shí)鐘(2       1):選PACLK/65536作為計(jì)數(shù)時(shí)鐘其中PACLK是對(duì)總線時(shí)鐘進(jìn)行64分頻后的時(shí)鐘。PAVOI:脈沖累加器溢出中斷允許位。置1,則允許中斷產(chǎn)生。置0,則禁止中斷。PAI:脈沖累加器輸入中斷允許位。置1,則允許中斷產(chǎn)生。置0,則禁止中斷。標(biāo)志寄存器PAFLG:PAVOF:當(dāng)脈沖累加器溢出時(shí),此位置1。如果有PAVOI=1時(shí),則產(chǎn)生中斷。向該位寫(xiě)1,可以清除標(biāo)志位。PAIF:當(dāng)在IOC7引腳上檢測(cè)到選定的邊沿跳變,此位置1。在事件計(jì)數(shù)方式下,事件沿跳變會(huì)使該位置位。在門(mén)控時(shí)間累加器方式下,IOC7引腳上門(mén)控信號(hào)的最后一個(gè)下降沿使該位置位。對(duì)其寫(xiě)1,可以清除標(biāo)志位。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論