MC9S12XS128之時(shí)間模塊TIM輸入捕捉_第1頁
MC9S12XS128之時(shí)間模塊TIM輸入捕捉_第2頁
MC9S12XS128之時(shí)間模塊TIM輸入捕捉_第3頁
MC9S12XS128之時(shí)間模塊TIM輸入捕捉_第4頁
MC9S12XS128之時(shí)間模塊TIM輸入捕捉_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

2、IOC 碇輸入捕捉輸出比較的外部針腳。當(dāng) IOSx=0 寸(IOSx=1 時(shí)為輸出比較),則將相應(yīng)的通道配置為輸入捕捉了。當(dāng)輸入捕捉檢測(cè)到有上升沿或下降沿時(shí),就會(huì)把那時(shí)寄存器的值鎖存到 TCx 中,這樣就可以通過查詢 TCx 來確定事件發(fā)生的時(shí)間了。如果輸入捕捉控制寄存器 TIE(CxI=1)中允許輸入捕捉中斷,則捕捉到事件時(shí),系統(tǒng)會(huì)產(chǎn)生一次中斷。接下來依次說明一下相關(guān)的寄存器設(shè)置:TSCR1:Bit7654321Bit0TENTSWAITSFRZTFFCAPRNT000TEN 是定時(shí)器允許位。TEN=1 時(shí),允許定時(shí)器工作,TEN=0 寸,禁止定時(shí)器工作。其余不常用,設(shè)為 0 即可。TSCR

3、2:000TCREPR2PR1PROTOI 是定時(shí)器溢出中斷允許位。這個(gè)在輸入捕捉中沒用到,設(shè)為 0 即可。TCRN 定時(shí)器計(jì)數(shù)寄存器復(fù)位允許位。用在輸出比較中,允許輸出比較寄存器 7 的事件來復(fù)位定時(shí)器計(jì)數(shù)寄存器。這里設(shè)為 0 即可。PR2PR 誕定時(shí)器分頻因子選擇位。不同的組合可以設(shè)定不同的定時(shí)器時(shí)鐘:TIOS 是輸入捕捉和輸出比較選擇寄存器,在這里設(shè)定 IOC0IOC 碇用于輸入捕捉還是用于輸出比較。54321I0S7I0S6I0S5I0S4I0S3I0S2I0S1IOSO里面的 8 位對(duì)應(yīng)著 IOC0IOC71 個(gè)通道,相應(yīng)位位 1,則設(shè)為輸出比較。相應(yīng)位設(shè)為 0,則為輸入捕捉。TCT

4、L 舜口 TCTL 提用來設(shè)定輸入捕捉極性的寄存器, 在這里可以設(shè)為上升沿、 下降沿、 上升沿或下降沿觸發(fā)輸入捕捉。OXOOOARTCTL3叫EDG7BEDG7AEDG6BEDG6AEDG5BEDG5AEDG4BEDG4A0 x0008RTCTL4WEDG3BEDG3AEDG2BEDG2AEDG1BEDG1AEDGOBEDGOA其中 EDGxB 和 EDGxA 一起來設(shè)相應(yīng)通道輸入捕捉極性,對(duì)應(yīng)的功能如下:(00)為禁止輸入捕捉。(01)為上升沿捕捉(10)為下降沿捕捉(11)為上升沿或下降沿捕捉TIE 是輸入捕捉或輸出比較中斷允許位。RWC71C6IC51C4IC3IC2IC11COI這里的

5、每一位是和 TIOS 上的位一一對(duì)應(yīng)的。相應(yīng)置 1 時(shí),則捕捉到事件時(shí),則系統(tǒng)會(huì)產(chǎn)生中斷。相應(yīng)位設(shè)為 0 時(shí),則不能。TFLG 促輸入捕捉或輸出比較中斷標(biāo)位寄存器。43210C7FC6FC4FC2FC1FCOF當(dāng)發(fā)生輸入捕捉或輸出比較事件時(shí),相應(yīng)位置 1。向該位寫 1,可以清空該標(biāo)志位。通道寄存器 TC0TC 浦于鎖存發(fā)生捕捉事件時(shí)自由運(yùn)行的計(jì)數(shù)器的計(jì)數(shù)值。通過查詢TC0TC 濟(jì)目應(yīng)的位,可以確定捕捉事件發(fā)生的時(shí)刻。與輸入捕捉相關(guān)的寄存器還有:ICOVW 輸入控制修改寄存器ICSYS 入控制系統(tǒng)控制寄存器DLYC 施遲計(jì)數(shù)控制寄存器(可以自動(dòng)處理窄脈沖干擾)這些不常,可以不管接下來按照上面的寄

6、存器設(shè)置好相應(yīng)的功能,程序就出來了:關(guān)閉溢出中斷且 64 分頻/定通道 0 為輸入捕捉,1 為輸出比較/上升沿捕捉 0 x02 為下降沿捕捉通道 0 中斷使能開啟總定時(shí)器中斷/標(biāo)志位清零中斷程序:#pragmaCODE_SEG_NEAR_SEGNON_BANKED/分配內(nèi)存空間 voidinterrupt8timer_onput()輸入捕捉通道 0 的中斷向量為 8(TFLG1_C0F=1;/標(biāo)志位清零 asmsei;關(guān)總中斷/PORTB=PORTB;PORTB&=(17);delay_us(1);PORTB|=(17);asmcli;開總中斷輸出比較看似不能,卻磨折了我兩天,其中大多都是些小

7、細(xì)節(jié)問題在糾纏?,F(xiàn)在終于想明白其中一些道理。不過有些寄存器還是沒有理解,如強(qiáng)制輸出比較寄存器 CFORC 測(cè)試了好久,都未能得到想要的結(jié)果,希望路過的高手能指點(diǎn)一下。接下來繼續(xù)記一下學(xué)習(xí)輸出比較的點(diǎn)點(diǎn)滴滴吧。XS128 勺定時(shí)器模塊中的輸入捕捉和輸出比較共用同一組管腳??梢酝ㄟ^設(shè)置TIOS 寄存器來選擇。我覺得輸出比較的原理和 PWM 波的產(chǎn)生原理差不多,都是通過計(jì)數(shù)器的數(shù)值和某一寄存器里的值比較產(chǎn)生輸出的高低電平變化。在輸出比較中,當(dāng)計(jì)數(shù)器的值與某一輸出比較通道的 TCx(TC0TC7 的值相等時(shí),該通道上引腳會(huì)輸出高電平、低電平,或是對(duì)引腳上的電平進(jìn)行翻轉(zhuǎn)。這時(shí)標(biāo)志位 CxF 會(huì)置位,如果

8、開通中斷的話(TIE 中的 CxI=1),系統(tǒng)還會(huì)產(chǎn)生一個(gè)中斷。輸出比較用到的寄存器好多都是和輸入捕捉的一樣,現(xiàn)在按照輸出比較的程序需要再過一遍。定時(shí)器系統(tǒng)控制寄存器 TSCR1 設(shè)置定時(shí)器正常工作定時(shí)器系統(tǒng)控制寄存器 TSCR2 設(shè)置定時(shí)器溢出中斷允許,和定時(shí)器時(shí)鐘分頻設(shè)置定時(shí)器計(jì)數(shù)寄存器 TCNT 這是個(gè) 16 位寄存器,在一般情況下是不可以寫的。輸入捕捉時(shí),就是這個(gè)寄存器的值存入 TCx 中,輸出比較時(shí),也是這個(gè)寄存器的值與 TCx 的值比較。它的時(shí)鐘由 TSCR歿置的分頻決定。程序中這個(gè)寄存器一般情況下不用理會(huì)。voidECT0_INIT()(TSCR2=0X06;TIOS_IOS0=

9、0;TCTL4=0X01;TIE_C0I=1;TSCR1=0X80;TFLG1_C0F=1;輸入捕捉通道 0 初始化函數(shù)主定時(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)的通道寫 1,可以清除標(biāo)志位。定時(shí)器中斷允許寄存器 TIE 里面有 8 位,對(duì)應(yīng)輸入捕捉或輸出比較的 8 個(gè)通道,設(shè)置是否允許相應(yīng)

10、通道的中斷。通道寄存器 TC0TC7 在輸出比較中隨時(shí)可以寫入,它的作用是,當(dāng) TCx=TCNT時(shí),相應(yīng)的 x 通道就會(huì)發(fā)生輸出比較。此時(shí)相應(yīng)的引腳就可以輸出高電平、低電平,或是翻轉(zhuǎn)引腳的電平。這個(gè)兩個(gè)寄存器中每個(gè) OMx 和 OLx 組合在一起,來設(shè)置相應(yīng)通道的引腳電平輸出方式:Table16-9.CompareResultOutputAction0MxOLxAction00Nooutputcompareactiononthetinneroutputsignal01ToggleOCxoutputline10ClearOCxoutputlinetozero11SetOCxoutputlinet

11、oone(00):輸出比較的通道與引腳邏輯斷開,也就是輸出比較的輸出不會(huì)影響相應(yīng)的引腳的電平。(01):翻轉(zhuǎn)輸出比較的引腳的電平。(10):在相應(yīng)的引腳上輸出低電平。(11):在相應(yīng)的引腳上輸出高電平。CFORC 定時(shí)器強(qiáng)制輸出比較寄存器7654321000000000F0C7FOC6F0C5F0C4F0C3FOC2F0C1FOCQ相應(yīng)位置 1 時(shí),可以把相應(yīng)通道的輸出比較設(shè)為強(qiáng)制輸出比較。一般情況下不用。OC7M:輸出比較通道 7 屏蔽寄存器E543210OC7M7口C7M6OC7M5OC7M4OC7M3OC7M2OC7M1OC7MoOC7D 輸出比較通道 7 數(shù)據(jù)寄存器76543210OC

12、7D7OC7D6OC7D5OC7D4OC7D3OC7D2OC7D1OC7DO通道 7 上的連續(xù)輸出比較會(huì)覆蓋所有其他通道的引腳上的輸出結(jié)果。OC7M 就是設(shè)置其他通道的哪些通道會(huì)受通道 7 控制的。當(dāng) OC7M 的某位置 1 時(shí),相應(yīng)通道的輸出比較就會(huì)受通道 7 控制,此時(shí)受控的通道在其通道上設(shè)置的 OMx和 OLx無效了, 而是按照 OC7D中對(duì)應(yīng)的 OC7Dx中的值輸出到相應(yīng)的引腳上。 總的來說, OC7M是選擇受通道 7 控制的其他通道,而 OC7D是受控的通道在通道 7 發(fā)生輸出比較時(shí)的輸出結(jié)果。TTOV:定時(shí)器溢出翻轉(zhuǎn)寄存器543210TOV7TOV6T0V5TOV4TOV3TOV2

13、TOV1TOVO相應(yīng)通道置 1 時(shí),計(jì)數(shù)器溢出時(shí),允許翻轉(zhuǎn)輸出比較引腳上的電平。這個(gè)寄存器只在輸出比較模式下才有效。一般情況下,用不到這個(gè)寄存器,程序中不用做設(shè)置。OCPD(OCPD0OCPD7 當(dāng)相應(yīng)位置 1 時(shí),標(biāo)志位正常,但是輸出比較的結(jié)果不能輸出到引腳上,也就是輸出比較的寄存器與引腳邏輯斷開了。當(dāng)相應(yīng)位設(shè)為 0 時(shí),標(biāo)志位正常,引腳輸出也正常。下面是相應(yīng)的程序:#include/*commondefinesandmacros*/#includederivative.h/*derivative-specificdefinitions*/voidmain(void)DDRB=0XFF;PO

14、RTB=0X7F;/DisableInterrupts;TSCR2=0X07;/股置定時(shí)器分頻TIOS=0X01;/通道 0 為輸出比較TCTL2=0X01;/模式為翻轉(zhuǎn)引腳輸出電平TC0=0XAAAA;/設(shè)置輸出引腳在一個(gè)周期內(nèi)翻轉(zhuǎn)的時(shí)間,如果這個(gè)值保持不變的話,那總的來看,/引腳輸出電平的周期是不變的,周期等于計(jì)數(shù)器計(jì)數(shù)一周的時(shí)間/TTOV=0X00;/CFORC=0X01;/加上這一句,似乎沒什么影響。還沒清這個(gè)寄存器的具體作用。TIE=0X01;/相應(yīng)通道中斷允許TSCR1=0X80;/打開定時(shí)器/PORTB=PTT;EnableInterrupts;while(1);#pragmaC

15、ODE_SEG_NEAR_SEGNON_BANKEDinterruptvoidinterrupt8CH0_ISR(void)/要特別注意中斷函數(shù)的書寫格式,我就在這里吃了大虧DisableInterrupts;TFLG1=0 x01;/清零標(biāo)志位if(TC0=0 xAAAA)改變引腳輸出的占空比。輸出的周期由計(jì)數(shù)器計(jì)數(shù)一周的時(shí)間決定,要改變,只能改變定時(shí)器的時(shí)鐘分頻TC0=0 xffff;elseTC0=0 xAAAA;PORTB_PB7=PORTB_PB7;/測(cè)試是否進(jìn)入中斷EnableInterrupts;XS128 中的脈沖累加器和 DG128 的很不一樣。相對(duì) DG128 來說,XS1

16、28 勺脈沖累加器大大簡(jiǎn)化了,其中只有三個(gè)寄存器需要設(shè)置:PACTLPAFLGPACNT16 位脈沖累加器 PACT 與 IOC 決用一個(gè)引腳。顧名思義,脈沖累加器就是對(duì)有效邊沿(上升沿或下降沿)進(jìn)行計(jì)數(shù),然后把計(jì)數(shù)的值保存在寄存器 PACNT 中。寄存器 PACTL是 16 位脈沖累加器的核心,幾乎所有的設(shè)置都是在這個(gè)寄存器中。接下來解剖一下這個(gè)核心寄存器 PACTL765432100PAENPAMODPEDGECLK1CLK0PAOVI馳PAEN:脈沖累加器允許位,置 1,則工作。置 0,則禁止。PAEN 與 TEN 無關(guān),定時(shí)器 TEN 禁止時(shí),脈沖累加器仍可以工作。PAMOD:工作方式

17、選擇位。置 1,為門控時(shí)間累加器方式。置 0,為事件計(jì)數(shù)器方式。門控時(shí)間累加器方式:輸入引腳上的有效電平會(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)。如下表:PAMODPEDGEPinAction00Fallingedge01Risingedge10Div,by64clockenabledwithpinhighievel11Div.by64clockenabledwithpinlowlevel(00):事件計(jì)數(shù)器方式,

18、下降沿有效(01):事件計(jì)數(shù)器方式,上升沿有效(10):門控時(shí)間累加器方式,IOC7 引腳上的高電平使 64 分頻后的總線時(shí)鐘輸入到脈沖累加器中。(11):門控時(shí)間累加器方式,IOC7 弓|腳上的低電平使 64 分頻后的總線時(shí)鐘輸入到脈沖累加器中。CLK0CLK1 時(shí)鐘選擇位。其功能如下表:CLK1CLKOTimerClock00Usetrmerprescaferclockastimercounterclock01UseFKCLKasinputtotimercounterclock10UsePACLK.256astimercounterclockfrequency11UsePACLK府5636astimercounterclockfrequency(00):使用 TIM 中分頻后的定時(shí)器時(shí)鐘作為計(jì)數(shù)時(shí)鐘(01):選 PACLK 乍為計(jì)數(shù)時(shí)鐘(10):選 PACLK256 作為計(jì)數(shù)時(shí)鐘(21):選 PACLK65536 作為計(jì)數(shù)時(shí)鐘其中 PACL 底對(duì)總線日鐘進(jìn)行 64 分頻后的時(shí)鐘。PAVOI 脈沖累加器溢出中斷允許位。置 1,則允許中斷產(chǎn)生。置 0,則禁止中斷。PAI:脈沖累加器輸入中斷允許位。置 1,則允許中斷產(chǎn)生。置 0,則禁止中斷。標(biāo)志寄存器 PAFLG76543210R000000FftOVF*IFWPAVOF 當(dāng)脈沖累加器溢出時(shí),此位置

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論