




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 輕型建材培訓(xùn)課件模板
- 學(xué)習(xí)障礙的教育心理學(xué)分析與干預(yù)
- 心理輔導(dǎo)對(duì)提高學(xué)生學(xué)習(xí)動(dòng)力的影響
- 醫(yī)療健康教育中教育機(jī)器人的角色與挑戰(zhàn)
- 構(gòu)建智慧校園偏遠(yuǎn)地區(qū)教育技術(shù)的探索與實(shí)施
- 提升教師知識(shí)產(chǎn)權(quán)意識(shí)構(gòu)建教育創(chuàng)新生態(tài)圈
- 全球石油市場(chǎng)供需格局2025年調(diào)整策略與行業(yè)影響研究報(bào)告
- 公交優(yōu)先發(fā)展對(duì)2025年城市交通擁堵治理的長(zhǎng)期影響研究報(bào)告
- 北京工業(yè)職業(yè)技術(shù)學(xué)院《英語(yǔ)小說(shuō)導(dǎo)讀》2023-2024學(xué)年第一學(xué)期期末試卷
- 延邊大學(xué)《影視制片管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024-2025學(xué)年山東省濟(jì)南市市中區(qū)八年級(jí)(下)期末數(shù)學(xué)試卷(含解析)
- 2025年七一黨課-作風(fēng)建設(shè)永遠(yuǎn)在路上學(xué)習(xí)教育黨課
- 山東省2024年藝術(shù)類本科批美術(shù)與設(shè)計(jì)類第1次志愿投檔情況表(公布)
- 消除“艾梅乙”醫(yī)療歧視-從我做起
- (正式版)SHT 3075-2024 石油化工鋼制壓力容器材料選用規(guī)范
- 譯林小學(xué)英語(yǔ)單詞表帶音標(biāo)
- 《中國(guó)語(yǔ)言文化》課程教學(xué)大綱
- 庭審筆錄郭英賀駁回-離婚案件
- 精選兒歌(歌譜)88首
- 推拉力計(jì)操作規(guī)程完整
評(píng)論
0/150
提交評(píng)論