




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、MC9S12XS128之時間模塊TIM(1)輸入捕捉買了本嵌入式系統(tǒng)使用HCS12微控制器的設(shè)計與應(yīng)用這本書,看了覺得幫助不大。因為里面有些東西講得不夠詳細(xì),并且這本書不是針對XS128來寫的。網(wǎng)上也有一些網(wǎng)友寫的資料,那都只是針對某一方面的。我覺得最好的資料還是英文版的說明文檔,里面好多東西都講得很詳細(xì),雖然看起來有點費勁,但那里值得的。接下來就自己的學(xué)習(xí)經(jīng)歷。TIM中的功能比較多,有輸入捕捉、輸出比較,還有脈沖累加器。這里主要記一下輸入捕捉和輸出比較。輸入捕捉這個功能很有用,他不僅可以捕捉外界事件的發(fā)生(這個功能和51中的外部中斷差不多),還可以捕捉外界事件發(fā)生的時間。捕捉外界時間這個功能
2、可以運用到驅(qū)動超聲波測距中去。IOC0IOC7是輸入捕捉輸出比較的外部針腳。當(dāng)IOSx=0時(IOSx=1時為輸出比較),則將相應(yīng)的通道配置為輸入捕捉了。當(dāng)輸入捕捉檢測到有上升沿或下降沿時,就會把那時寄存器的值鎖存到TCx中,這樣就可以通過查詢TCx來確定事件發(fā)生的時間了。如果輸入捕捉控制寄存器TIE(CxI=1)中允許輸入捕捉中斷,則捕捉到事件時,系統(tǒng)會產(chǎn)生一次中斷。接下來依次說明一下相關(guān)的寄存器設(shè)置:TSCR1:TEN是定時器允許位。TEN=1時,允許定時器工作,TEN=0時,禁止定時器工作。其余不常用,設(shè)為0即可。TSCR2:TOI是定時器溢出中斷允許位。這個在輸入捕捉中沒用到,設(shè)為0即
3、可。TCRE是定時器計數(shù)寄存器復(fù)位允許位。用在輸出比較中,允許輸出比較寄存器7的事件來復(fù)位定時器計數(shù)寄存器。這里設(shè)為0即可。PR2PR0是定時器分頻因子選擇位。不同的組合可以設(shè)定不同的定時器時鐘:TIOS是輸入捕捉和輸出比較選擇寄存器,在這里設(shè)定IOC0IOC7是用于輸入捕捉還是用于輸出比較。里面的8位對應(yīng)著IOC0IOC7八個通道,相應(yīng)位位1,則設(shè)為輸出比較。相應(yīng)位設(shè)為0,則為輸入捕捉。TCTL3和TCTL4是用來設(shè)定輸入捕捉極性的寄存器,在這里可以設(shè)為上升沿、下降沿、上升沿或下降沿觸發(fā)輸入捕捉。其中EDGxB和EDGxA一起來設(shè)相應(yīng)通道輸入捕捉極性,對應(yīng)的功能如下:(0 0)為禁止輸入捕捉
4、。(0 1)為上升沿捕捉(1 0)為下降沿捕捉(1 1)為上升沿或下降沿捕捉TIE是輸入捕捉或輸出比較中斷允許位。這里的每一位是和TIOS上的位一一對應(yīng)的。相應(yīng)置1時,則捕捉到事件時,則系統(tǒng)會產(chǎn)生中斷。相應(yīng)位設(shè)為0時,則不能。TFLG1是輸入捕捉或輸出比較中斷標(biāo)位寄存器。當(dāng)發(fā)生輸入捕捉或輸出比較事件時,相應(yīng)位置1。向該位寫1,可以清空該標(biāo)志位。通道寄存器TC0TC7用于鎖存發(fā)生捕捉事件時自由運行的計數(shù)器的計數(shù)值。通過查詢TC0TC7相應(yīng)的位,可以確定捕捉事件發(fā)生的時刻。與輸入捕捉相關(guān)的寄存器還有:ICOVW:輸入控制修改寄存器ICSYS:輸入控制系統(tǒng)控制寄存器DLYCT:延遲計數(shù)控制寄存器(可
5、以自動處理窄脈沖干擾)這些不常,可以不管接下來按照上面的寄存器設(shè)置好相應(yīng)的功能,程序就出來了: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; /開
7、啟總定時器中斷 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; /開總中斷
9、
10、
11、
12、 BY DABAOMC9S12XS128之時間模塊TIM(2)輸出比較 輸出比較看似不能,卻磨折了我兩天,其中大多都是些小細(xì)節(jié)問題在糾纏?,F(xiàn)在終于想明白其中一些道理。不過有些寄存器還是沒有理解,如強制輸出比較寄存器CFORC,測試了好久,都未能得到想要的結(jié)果,希望
13、路過的高手能指點一下。 接下來繼續(xù)記一下學(xué)習(xí)輸出比較的點點滴滴吧。 XS128的定時器模塊中的輸入捕捉和輸出比較共用同一組管腳??梢酝ㄟ^設(shè)置TIOS寄存器來選擇。我覺得輸出比較的原理和PWM波的產(chǎn)生原理差不多,都是通過計數(shù)器的數(shù)值和某一寄存器里的值比較產(chǎn)生輸出的高低電平變化。在輸出比較中,當(dāng)計數(shù)器的值與某一輸出比較通道的T
14、Cx(TC0TC7)的值相等時,該通道上引腳會輸出高電平、低電平,或是對引腳上的電平進行翻轉(zhuǎn)。這時標(biāo)志位CxF會置位,如果開通中斷的話(TIE中的CxI=1),系統(tǒng)還會產(chǎn)生一個中斷。 輸出比較用到的寄存器好多都是和輸入捕捉的一樣,現(xiàn)在按照輸出比較的程序需要再過一遍。 定時器系統(tǒng)控制寄存器TSCR1:設(shè)置定時器正常工作
15、60; 定時器系統(tǒng)控制寄存器TSCR2:設(shè)置定時器溢出中斷允許,和定時器時鐘分頻設(shè)置 定時器計數(shù)寄存器TCNT:這是個16位寄存器,在一般情況下是不可以寫的。輸入捕捉時,就是這個寄存器的值存入TCx中,輸出比較時,也是這個寄存器的值與TCx的值比較。它的時鐘由TSCR2設(shè)置的分頻決定。程序中這個寄存器一般情況下不用理會。 &
16、#160; 主定時器國斷標(biāo)志寄存器TFLG2:在這個寄存器中只有最高位TOF有效,是定時器溢出標(biāo)志位。當(dāng)TCNT運行產(chǎn)生溢出時,該位就置位了。如果允許定時器溢出中斷的話,則系統(tǒng)會產(chǎn)生一個中斷。 輸入捕捉和輸出比較選擇寄存器TIOS:設(shè)置相應(yīng)的通道為輸入捕捉或是輸出比較。 主定時器中斷標(biāo)志寄存器TFLG1:輸入捕捉或輸出比較的各通道的中斷標(biāo)志位。對相應(yīng)的通道寫1,可以清除
17、標(biāo)志位。 定時器中斷允許寄存器TIE:里面有8位,對應(yīng)輸入捕捉或輸出比較的8個通道,設(shè)置是否允許相應(yīng)通道的中斷。 通道寄存器TC0TC7:在輸出比較中隨時可以寫入,它的作用是,當(dāng)TCx=TCNT時,相應(yīng)的x通道就會發(fā)生輸出比較。此時相應(yīng)的引腳就可以輸出高電平、低電平,或是翻轉(zhuǎn)引腳的電平。
18、 上面的寄存器都是和輸入捕捉共用的,在輸入捕捉中講過。接下來就具體說明輸出比較特別有的寄存器設(shè)置。 TCTL1TCTL2:這個兩個寄存器中每個OMx和OLx組合在一起,來設(shè)置相應(yīng)通道的引腳電平輸出方式: (0 0):輸出比較的通道與引腳邏輯斷開,也就是輸出比較的輸出不會影響相應(yīng)的引腳的電平。 (0 1):翻轉(zhuǎn)輸出比較的引腳的電平。 (1 0):在相應(yīng)的引腳上輸出低電平。
19、0;(1 1):在相應(yīng)的引腳上輸出高電平。 CFORC:定時器強制輸出比較寄存器相應(yīng)位置1時,可以把相應(yīng)通道的輸出比較設(shè)為強制輸出比較。一般情況下不用。 OC7M:輸出比較通道7屏蔽寄存器 OC7D:輸出比較通道7數(shù)據(jù)寄存器通道7上的連續(xù)輸出比較會覆蓋所有其他通道的引腳上的輸出結(jié)果。OC7M就是設(shè)置其他通道的哪些通道會受通道7控制的。當(dāng)OC7M的某位置1時,相應(yīng)通道的輸出比較就會受通道7
20、控制,此時受控的通道在其通道上設(shè)置的OMx和OLx無效了,而是按照OC7D中對應(yīng)的OC7Dx中的值輸出到相應(yīng)的引腳上??偟膩碚f,OC7M是選擇受通道7控制的其他通道,而OC7D是受控的通道在通道7發(fā)生輸出比較時的輸出結(jié)果。 TTOV:定時器溢出翻轉(zhuǎn)寄存器相應(yīng)通道置1時,計數(shù)器溢出時,允許翻轉(zhuǎn)輸出比較引腳上的電平。這個寄存器只在輸出比較模式下才有效。一般情況下,用不到這個寄存器,程序中不用做設(shè)置。 OCPD(OCPD0OCPD7):當(dāng)相應(yīng)位置1時,標(biāo)志位正常,但是輸出比較的結(jié)果不
21、能輸出到引腳上,也就是輸出比較的寄存器與引腳邏輯斷開了。當(dāng)相應(yīng)位設(shè)為0時,標(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è)置定時器分頻 TIOS=0X01;/通道0為輸出比較 TCTL2=0X01; /模式為翻轉(zhuǎn)引腳輸出電平 TC0=0XAAAA; /設(shè)置輸出引腳在一個周期內(nèi)翻轉(zhuǎn)的時間,
23、0; /如果這個值保持不變的話,那總的來看,
24、160; /引腳輸出電平的周期是不變的,周期等于計數(shù)器計數(shù)一周的時間 /TTOV=0X00; / /CFORC=0X01; /加上這一句,似乎沒什么影響。還沒清這個寄存器的具體作用。 TIE=0X01; /相應(yīng)通道中斷允許 TSCR1=0X80; /打開定時器 /PORTB=PTT;
25、60;EnableInterrupts; while(1);#pragma CODE_SEG _NEAR_SEG NON_BANKED interrupt void interrupt 8 CH0_ISR(void) /要特別注意中斷函數(shù)的書寫格式,我就在這里吃了大虧DisableInterrupts;TFLG1=0x01; /清零標(biāo)志位if(TC0=0xAAAA) /
26、改變引腳輸出的占空比。輸出的周期由計數(shù)器計數(shù)一 /周的時間決定,要改變,只能改變定時器的時鐘分頻TC0=0xffff;TC0=0xAAAA; PORTB_PB7=PORTB_PB7; /測試是否進入中斷EnableInterrupts;
27、;
28、; BY DABAOMC9S12XS128之時間模塊TIM(3)脈沖累加器 XS128中的脈沖累加器和DG128的很不一樣。相對DG128來說,XS128的脈沖累加器大大簡化了,其中只有三個寄存器需要設(shè)置:PACTL、PAFLG、PACNT。 16位脈沖累加器PACT與IOC7共用一個引腳。顧名思義
29、,脈沖累加器就是對有效邊沿(上升沿或下降沿)進行計數(shù),然后把計數(shù)的值保存在寄存器PACNT中。寄存器PACTL是16位脈沖累加器的核心,幾乎所有的設(shè)置都是在這個寄存器中。 接下來解剖一下這個核心寄存器PACTL:PAEN:脈沖累加器允許位,置1,則工作。置0,則禁止。PAEN與TEN無關(guān),定時器TEN禁止時,脈沖累加器仍可以工作。PAMOD:工作方式選擇位。置1,為門控時間累加器方式。置0,為事件計數(shù)器方式。 門控時間
30、累加器方式:輸入引腳上的有效電平會觸發(fā)脈沖累加器對64分頻后的時鐘進行計數(shù)。 事件計數(shù)器方式:脈沖累加器對引腳上的每個有效邊沿計數(shù)。引腳上每產(chǎn)生一個有效邊沿,脈沖累加器計數(shù)器的值就會加1。PEDGE:邊沿跳變控制位。它的功能和脈沖累加器的工作方式有關(guān)。如下表:(0 0):事件計數(shù)器方式,下降沿有效(0 1):事件計數(shù)器方式,上升沿有效(1 0):門控時間累加器方式,IOC7引腳上的高電平使64分頻
31、后的總線時鐘輸入到脈沖累加器中。(1 1):門控時間累加器方式,IOC7引腳上的低電平使64分頻后的總線時鐘輸入到脈沖累加器中。CLK0CLK1:時鐘選擇位。其功能如下表:(0 0):使用TIM中分頻后的定時器時鐘作為計數(shù)時鐘(0 1):選PACLK作為計數(shù)時鐘(1 0)
32、:選PACLK/256作為計數(shù)時鐘(2 1):選PACLK/65536作為計數(shù)時鐘其中PACLK是對總線時鐘進行64分頻后的時鐘。PAVOI:脈沖累加器溢出中斷允許位。置1,則允許中斷產(chǎn)生。置0,則禁止中斷。PAI:脈沖累加器輸入中斷允許位。置1,則允許中斷產(chǎn)生。置0,則禁止中斷。標(biāo)志寄存器PAFLG:PAVOF:當(dāng)脈沖累加器溢出時,此位置1。如果有PAVOI=1時,則產(chǎn)生中斷。向該位寫1,可以清除標(biāo)志位。PAIF:當(dāng)在IOC7引腳上檢測到選定的邊沿跳變,此位置1。在事件計數(shù)方式下,事件沿跳變會使該位置位。在門控時間累加器方式下,IOC7引腳上門控信號的最后一個下降沿使該位置位。對其寫1,可以清除標(biāo)志位。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年活牛運輸合同
- 2025商業(yè)店鋪買賣合同(標(biāo)準(zhǔn)版)
- 初中生自我介紹【7篇】
- 2025年勞動合同的疑義利益解釋原則分析
- 做好急診信息系統(tǒng)的建設(shè)與維護計劃
- 個人貸款過橋合同標(biāo)準(zhǔn)文本
- 歡迎新領(lǐng)導(dǎo)上任歡迎詞講話稿【4篇】
- 為職業(yè)生涯制定長期目標(biāo)計劃
- 債權(quán)出質(zhì)擔(dān)保合同標(biāo)準(zhǔn)文本
- 2024年中級經(jīng)濟師原題
- 對配合和服從總包管理的認(rèn)識和協(xié)調(diào)方案
- 2025年上海市各區(qū)高三語文一模試題匯編之文言文閱讀試題和答案
- 江蘇省常州市金壇區(qū)2023-2024學(xué)年小升初語文試卷(有答案)
- 專題11 浮力 課件中考物理復(fù)習(xí)
- 《橋梁工程中的預(yù)應(yīng)力混凝土技術(shù)》課件
- 學(xué)習(xí)通《形勢與政策》2025春章節(jié)測試答案
- 浦發(fā)銀行個人信用報告異議申請表
- 232425黃昆固體物理教案
- IQC(來料)檢測報告模板
- 韓國現(xiàn)代起亞skt100數(shù)控車床
- 公司師徒協(xié)議模板(共3頁)
評論
0/150
提交評論