1.7 單脈沖輸出操作 通過將16 位定時器模式控制寄存器00 (TMC00) 的第3 位和第2 位(TMC003 與TMC002)設置為01 (自由運行定時器模式)或10(清零&啟動模式(通過TI000 引腳有效沿進入)),以及將16 位定時器輸出控制寄存器00 (TOC00)的第5 位(OSPE00)設置為1,可以輸出一個單脈沖。 當TOC00 的第6 位(OSPT00)=1 時或者在定時器操作期間將有效沿輸入到TI000 引腳時,觸發(fā)TM00 的清零&啟動,并且從TO00 引腳只輸出一次反映CR000 與CR010 之間差距的脈沖。 注意事項1. 當單脈沖輸出時,不要再次輸入觸發(fā)(設置OSPT00=1 或者檢測TI000 引腳的有效沿)。在當前單脈沖輸出完成后產生觸發(fā),才可再次輸出單脈沖。 2. 如果要使用單脈沖輸出觸發(fā)(僅設置OSPT00=1),則不要修改TI000 引腳或其復用功能端口引腳的電平。否則可能會產生異常輸出的脈沖。 (e) 16 位定時器計數器00 (TM00) 通過讀取TM00,可獲得計數值。 (f) 16 位捕捉/比較寄存器000 (CR000) 當輸出單脈沖時該寄存器用作比較寄存器。當TM00 的值與CR000 的值相等時,產生中斷信號(INTTM000)并反轉TO00 引腳的輸出電平。 (g) 16 位捕捉/比較寄存器010 (CR010) 當輸出單脈沖時,該寄存器用作比較寄存器。當TM00 的值與CR010 的值相等時,產生中斷信號(INTTM010)并反轉TO00 引腳的輸出電平。 注意事項 不要為CR000 與CR010 設置相同的值或0000H。 從輸入單脈沖觸發(fā)信號到輸出單脈沖的時間 = (M + 1) x 計數時鐘周期 單脈沖輸出活動電平寬度 = (N M) 計數時鐘周期 注 必須特別注意TOC00 的設置。 1.8 脈沖寬度測量操作 TM00 可用于測量輸入到TI000 與TI010 引腳的信號的脈沖寬度。 可以通過在自由運行定時器模式下操作16 位定時器/事件計數器00 以及通過同步使用TI000 引腳輸入信號的脈沖沿重新啟動定時器,來進行測量。 當產生中斷時,讀取捕捉寄存器的有效值,并測量脈沖寬度。檢測16 位定時器模式控制寄存器00 (TMC00)的第0位(OVF00)。如果該位被設置為1,則由軟件將其清零。 可以使用以下三種方法測量脈沖寬度。 通過使用TI000 與TI010 引腳的兩個輸入信號測量脈沖寬度(自由運行定時器模式) 通過使用TI000 引腳的一個輸入信號測量脈沖寬度(自由運行定時器模式) 通過使用TI000 引腳的一個輸入信號測量脈沖寬度(清零&啟動模式(通過TI000 引腳有效沿輸入進入)) 注意事項 當測量脈沖寬度時不要選擇TI000 有效沿作為計數時鐘。 (1) 通過使用TI000 與TI010 引腳的兩個輸入信號測量脈沖寬度(自由運行定時器模式) 設置自由運行定時器模式(TMC003 與TMC002 = 01)。當檢測到TI000 引腳的有效沿時,TM00 的計數值被捕捉到CR010。當檢測到TI010 引腳的有效沿時,TM00 的計數值被捕捉到CR000。規(guī)定檢測TI000 與TI010 引腳的兩種脈沖沿。 使用這種測量方法,要從每個輸入信號的脈沖沿捕捉的計數值中減去預設值。因此要將先前捕捉的值事先存入一個單獨的寄存器中。 如果產生溢出,則在當前捕捉值減去先前捕捉的值后計數值為負,并因此產生借位(將程序狀態(tài)字(PSW)的第0 位(CY)置1)。如果發(fā)生這種情況,可以忽略CY 并將計算結果作為脈沖寬度。此外,將16 位定時器模式控制寄存器00 (TMC00)的第0 位(OVF00)清零(0)。 (2) 通過使用TI000 引腳的一個輸入信號測量脈沖寬度(自由運行模式) 設置自由運行定時器模式(TMC003 與TMC002 = 01)。在TI000 引腳檢測到反向的有效沿時,將TM00 的計數值捕捉到CR000。當檢測到TI000 引腳的有效沿時,將TM00 的計數值捕捉到CR010。 使用這種測量方法,在測量從一個脈沖沿到另一個脈沖沿的寬度時將數值存入分開的兩個捕捉寄存器中。因此,不必保存捕捉值。將兩個捕捉寄存器的值相減,可以計算高電平寬度、低電平寬度和周期。 如果產生溢出,則當兩個捕捉的計數值相減后結果為負,并因此產生借位(將程序狀態(tài)字(PSW)的第0 位(CY)置1)。如果發(fā)生這種情況,可以忽略CY 并將計算結果作為脈沖寬度。此外,將16 位定時器模式控制寄存器00(TMC00)的第0 位(OVF00)清零(0)。 (3) 通過使用TI000 引腳的一個輸入信號測量脈沖寬度(清零&啟動模式(通過TI000 引腳有效沿輸入進入))設置清零&啟動模式(通過TI000 引腳有效沿進入)(TMC003 與TMC002 = 10)。在TI000 引腳檢測到反向的有效沿時,將TM00 的計數值捕捉到CR000。當檢測到TI000 引腳的有效沿時,將TM00 的計數值捕捉到CR010,并將TM00 清零(0000H)。因此,如果TM00 沒有溢出,則在CR010 中存入一個周期。 如果產生溢出,則將10000H 加上CR010 的值,結果作為一個周期。此外,將16 位定時器模式控制寄存器00(TMC00)的第0 位(OVF00)清零(0)。 <1> 脈沖周期= (10000H × OVF00 位被設置為1 的次數+CR010 的捕捉值) × 計數時鐘周期 <2> 高電平脈沖寬度= (10000H - OVF00 位被設置為1 的次數+ CR000 的捕捉值) × 計數時鐘周期 <3> 低電平脈沖寬度= (脈沖周期-高電平脈沖寬度) (e) 16 位定時器計數器00 (TM00) 通過讀取TM00,可獲得計數值。 (f) 16 位捕捉/比較寄存器000 (CR000) 該寄存器用作捕捉寄存器。選擇TI000 或TI010 引腳作為捕捉觸發(fā)。當檢測到指定脈沖沿的捕捉觸發(fā)時,將TM00 的計數值存入CR000。 (g) 16 位捕捉/比較寄存器010 (CR010) 該寄存器用作捕捉寄存器。將TI000 引腳的輸入信號用作捕捉觸發(fā)。當檢測到捕捉觸發(fā)時,將TM00 的計數值存入CR010。 注 當選擇TI000 引腳輸入的反向脈沖沿作為CR000 的有效沿時,不產生捕捉中斷信號(INTTM000)。 1.9 外部24 位事件計數器操作 16 位定時器/事件計數器00 通過級聯16 位定時器/事件計數器00 和8 位定時器/時間計數器52,可用于外部24 位事件計數器功能操作, 8 位定時器/事件計數器52 作為外部事件計數器使用。 作為外部24 位事件計數器使用,計算經過8 位定時器52(TM52)輸入到TI52 引腳的外部時鐘脈沖數,和計算當TM52 計數值與8 位定時器比較寄存器52(CR52=FFH 注)時由16 位定時器計數器00(TM00)輸出的信號。 當16 位定時器/事件計數器00 用于外部24 位事件計數器時,可通過8 位定時器計數器H2 輸出控制外部事件輸入允許。 輸入到TI52 引腳的有效沿可由8 位定時器計數器52 (TM52)的定時器時鐘選擇寄存器52 (TCL52) 指定。TM52 外部事件輸入允許也可以通過8 位定時器計數器H2 輸出控制,設置輸入切換控制寄存器(ISC) 的第2 位(ISC2)為“1”。 通過設置16 位定時器/事件計數器00 的預分頻模式寄存器00 (PRM00) 的第2,1 和0 位(PRM002, PRM001, 和PRM000) 為1,1和1,和設置16 位定時器模式控制寄存器00 (TMC00)的第3 和2 位(TMC003 和TMC002) 為1 和1(TM00 和CR000 相等時進入計數清零&啟動模式),用作計數時鐘的8 位定時器52 輸出計數操作開始。TM00 計數值 與16 位定時器比較寄存器000 (CR000)的值相等時TM00被清零并且產生一個中斷請求信號(INTTM000)。 隨后,TM00 和CR000 的值相等時產生INTTM000。 注 當16 位定時器/事件計數器00 作為外部24 位事件計數器操作時, 8 位定時器比較寄存器52 (CR52)的值必須設置為FFH。而且,TM52 中斷請求信號(INTTM52) 必須被屏蔽掉(TMMK52 = 1)。 <1> TM00 和TM52 的每種模式的設置。 (a) TM00 設置為間隔定時器。選擇TM52 輸出作為計數時鐘。 - TMC00: 設置操作禁止。 (TMC00 = 00000000B) - CRC00: 設置作為比較寄存器操作。 (CRC00 = 000000x0B, x = don’t care) - TOC00: 設置CR000 和TM00 相等時TO00 引腳輸出禁止。 (TOC00 = 00000000B) - PRM00: TM52 輸出選擇作為計數時鐘。 (PRM00 = 00000111B) - CR000: 設置比較值為FFFFH。 如果比較值設置為M,TM00 計數將到M。 - CR010: 通常,CR010 不使用,但是,當CR010 的設置值和TM00 值相等時產生一個比較相等中斷 (INTTM010)。因此,通過中斷屏蔽標志(TMMK010)屏蔽中斷請求。 (b) 設置TM52 作為外部事件計數器。 - TCL52: TI52 引腳輸入的沿選擇 TI52 引腳的下降沿→ TCL52 = 00H TI52 引腳的上升沿→ TCL52 = 01H - CR52: 設置比較寄存器的值為FFH。 - TMC52: 計數操作停止。 (TMC52 = 00000000B) - TMIF52: 清零此寄存器。 注意事項當16 位定時器/事件計數器00 作為外部24 位事件計數器操作時, INTTM52 必須屏蔽(TMMK52 = 1)。因此, 比較寄存器52 (CR52) 的值必須設置為FFH。 (c) 為TI52 引腳設置TMH2 到輸入允許寬度判定模式(PWM模式)。注 - TMHMD2: 計數操作停止,選擇計數時鐘,模式設置到輸入允許寬度判定模式(PWM 模式),定時器輸出電 平默認值設置為高電平,定時器輸出設置為允許(TMHMD2 = 0xxx1011B, x = 根據使用條件設 置)。 - CMP02: 比較值(N) 頻率設置 - CMP12: 比較值(M) 占空比設置 備注00H ≤CMP12 (M) < CMP02 (N) ≤FFH - ISC2: 設置ISC2 = 1 (TI52 引腳輸入允許控制) 注 如果TI52 引腳輸入允許不控制,此設置不需要。 <2> TM00, TM52, 和TMH2 計數操作開始。定時器操作開始必須按照下面的過程。 (a) 通過設置TMC003 和TMC002 位為1 和1 啟動TM00計數器操作。 (b) 通過設置TCE52 為1 啟動TM52 計數器操作。 (c) 通過設置TMHE2 為1 啟動TMH2 計數器操作。注 注 如果TI52 引腳輸入允許不控制,此設置不需要。 <3> 當TM52 和CR52 (= FFH) 的值相等時,TM52 被清零為00,并且相等信號使TM000 開始計數。然后,當TM000 和CR000 相等時,TM00 被清為0000H,并且產生一個相等中斷信號(INTTM000) 。 如果控制TI52 引腳輸入允許,通過讀取TM52,TI52 引腳在輸入允許期間的外部事件計數可以測量,TM00 計數值,和由TMH2 中斷請求信號(INTTMH2)經過中斷服務的TMIF52。 注 如果TI52 引腳輸入允許不控制,此設置不需要。 6.4.10 外部24 位事件計數器的注意事項 (1) 8 位定時器計數器H2 輸出信號 8 位定時器H2 的輸出電平控制(默認值) ,用于控制TI52 引腳輸入允許,必須設置為高電平(TOLEV2 = 1)。因此,當TI52 引腳輸入允許信號禁止(TMH2 輸出: 低電平)時產生一個中斷請求信號(INTTMH2),并且TM52 和TM00 計數值(= 輸入允許期間的外部事件計數值) 可以由此中斷服務讀取。 TI52 引腳的輸入允許信號的注意事項為高電平(允許狀態(tài)),在8 位定時器H2 操作通過設置(TOLEV2 = 1)已經允許(TMHE2 = 1)后,直到TMH2 和CMP02 寄存器值相等。 (2) TI52 引腳輸入允許控制的注意事項 TI52 引腳的輸入允許控制信號(TMH2 輸出信號) 與TI52 引腳輸入時鐘同步,在圖6-54 外部24 位事件計數器的框圖和圖6-55 外部24 位事件計數器的操作時序中說明。因此,當計數器作為外部事件計數器操作時,計數可能會引起錯誤。 (3) 外部24 位事件計數器操作期間16 位定時器/事件計數器00 的注意事項 16 位定時器/事件計數器00 當開始操作時與噪聲消除器同步,在操作開始后第一個時鐘不立即計數。 當使用計數器作為24 位計數器,通過設置16 位定時器/事件計數器00 和8 位定時器/事件計數器52 作為高位和低位定時器并將它們級聯,作為低位定時器的8 位定時器/事件計數器52 的中斷請求標志必須按照下面說明進行檢測,以便正確讀出24 位計數值。 - TMIF52 = 1 時讀取TM52 和TM00 : TM00 實際的計數值是“TM00 的讀取值+ 1”。 - TMIF52 = 0 時讀取TM52和TM00: 讀取的值是正確的值。 16 位定時器/事件計數器00 僅當操作開始出現這些情況。當16 位定時器/事件計數器00 溢出和計數從0000H 重啟時不發(fā)生計數延遲,因為已經實現同步。 文章來源:http://www.originic.hk/Item/Show.asp?m=1&d=1793 |