色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用MAXQ系列微控制器中的定時器

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-03-02 13:56 ? 次閱讀

本應用筆記描述了如何針對不同的應用設置和使用MAXQ?系列微控制器中的Type 2定時器。它包括供參考的源代碼。

介紹

MAXQ系列微控制器有三種類型的定時器:定時器0、定時器1和定時器2。

MAXQ定時器0型是仿照許多0微型控制器上常見的定時器8051型。MAXQ定時器1類型仿照8051定時器2類型。大多數MAXQ產品都有一個新的定時器,稱為定時器2,這是MAXQ系列獨有的。本應用筆記詳細介紹了如何為不同目的設置和使用這款新的定時器2,并附有一些源代碼供參考。

概述

功能
定時器的三個主要用途是生成輸出波形、對輸入信號的轉換進行計數(包括對系統時鐘轉換進行計數,從而起到定時器的作用)以及對輸入信號進行計時。本節介紹使用計時器 2 的配置模式執行這些計時器功能的方法。

比較
在此模式下,計數器由系統時鐘或備用時鐘(通常為 32,768 Hz RTC 時鐘)在內部提供,其中任何一個都可以選擇按 1、2、4、8、16、32、64 或 128 進行預分頻。然后,計數器用于控制初級和/或次級定時器引腳的輸出,以生成各種波形。

通過改變重載(T2R)和比較(T2C)寄存器中的值,可以修改輸出波形的頻率和占空比。這樣,MAXQ處理器就可以產生脈寬調制(PWM)波形。輸出可以有選擇地使能,起始極性可以反轉。頻率和占空比的限制由選擇作為源的時鐘的頻率(無論是系統時鐘還是備用時鐘)和所選的時鐘除數決定。最小脈沖寬度為預分頻源時鐘的一個時鐘周期(通過將比較值和重載值設置為相同值或將比較值設置為 FFFEh 來選擇)。最大脈沖寬度為預分頻源時鐘的 65,536 個周期。預標因數為 128 時,最大脈沖寬度為 8,388,608 個系統時鐘周期 - 對于 1 MHz 系統時鐘,超過 <> 秒。使用頻率較低的交替時鐘可以進一步增加此值。

比較模式還提供了通過使用單脈沖 (SS2) 功能生成單個脈沖的功能。單脈沖允許固件在觸發脈沖之前設置脈沖的長度,從而排除了固件對脈沖進行計時并確定何時結束的要求。門控允許初級引腳觸發次級輸出上的單個脈沖或打開和關閉計數器,從而允許輸入信號修改次級引腳上的PWM輸出。比較模式還可用于按特定計劃生成重復中斷。

捕獲
在這種模式下,計數器在內部供電,但用于計算或計時主定時器引腳上輸入信號的持續時間。計數器可以在輸入信號的任一或兩個邊緣進行選通和觸發,從而可以靈活地定時脈沖、單個事件或遞歸波形。T2C寄存器中的值可用于計算測量事件的周期。

計數器 在此模式下,主定時器引腳為計數器
提供時鐘源。在這種模式下,計數器計算主引腳上的轉換,上升沿或下降沿,或兩者兼而有之。次級引腳可用于輸出波形,當計數溢出以及計數器與特定值匹配時,波形將切換。在這兩種情況下也可以生成中斷。

雙八位模式定時器2可以在十六位模式下運行(在這種情況下只有一個計數器可用)或八位模式,八位模式
將計數器視為兩個八位計數器,可以獨立使用。這允許定時器電路具有三個附加功能。在八位模式下,主計數器(高計數器)可用于比較、捕獲或計數器功能,而次級計數器(低計數器)可用于比較或PWM輸出。

雙比較
在這種模式下,每個八位計數器單獨計數,可用于輸出波形,但每個計數器都來自相同的內部時鐘源。通過使用每個八位計數器的不同重載和比較值,可以在兩個定時器引腳上輸出波形的不同頻率和占空比。

捕獲/PWM
在此模式下,一個八位計數器(高計數器)在捕獲模式下工作,以計時輸入信號的持續時間。另一個八位計數器(低計數器)在比較模式下工作,可用于輸出波形。

計數器/PWM
在這種模式下,一個八位計數器(高計數器)在計數器模式下工作,以計算輸入信號的轉換。另一個八位計數器(低計數器)在比較模式下工作,可用于輸出波形。

選項

單次 (SS2) 此選項允許計數器像運行位 (T2R)
已打開一樣運行,但僅在計數器下一次溢出之前運行。然后,計數器恢復為使用運行位來確定它是否將繼續計數。在八位模式下,此位僅適用于主八位計數器(高計數器)。

門控使能 (G2EN)
此選項允許在一段時間內關閉計數器(即門控),而無需固件手動切換運行位 (T2R)。在比較和計數器模式下,門控適用于源時鐘。在捕獲模式下,門控適用于重新加載事件。

門控由主引腳上的值控制。這要求主引腳是輸入(T2OE [0]=0),因此輸出波形(如果需要)必須輸出在次級(或B)引腳上。門控控制僅在主輸入端可用。

極性選擇 極性位
(T2POL [0] 和 T2POL [1])可用于反轉輸出波形。用于此功能時,必須在設置相應的輸出使能位(T2OE [0] 和 T2OE [1])之前設置它們。設置使能位后設置極性位不起作用。T2POL [0] 位還可用于在初級引腳不用作輸出時反相選通條件。T2POL [0] 位在捕獲模式下也具有額外的含義,當兩個邊沿都定義為捕獲時。在這種情況下,它定義哪個邊緣開始單次注射循環,并在啟用門控時禁止在一個邊緣上重新加載。

輸出使能 輸出使能
位(T2OE [0] 和 T2OE [1])確定初級和次級引腳是否由定時器電路主動驅動。當輸出使能位關斷時,可以使用相應的端口輸入寄存器將這些引腳讀取為輸入。當輸出主引腳未使能時,可用于對計數器進行選通(關斷)。

時鐘選擇 T2CI 位(備用時鐘選擇
)和 T2DIV [2:0] 位(時鐘除數)用于設置計數器使用的時鐘源和預縮放因子。T2CI 用于在系統時鐘和備用時鐘之間進行選擇。然后,這些中的任何一個都可以按 2 倍進行預縮放n(n 是存儲在 T0DIV 中的 7 到 2 之間的值)。

使用計時器

計數器寄存器 計數器在 2 位模式下有三個與之關聯的寄存器,在 2 位模式下有三個附加寄存器
。這些寄存器可以在任一模式(2 位或 2 位)下讀取和寫入,但在 2 位模式下,低寄存器的行為不同。在 2 位模式下工作時,T2V、T2R 和 T2C 分別用作 <> 位計數器、重新加載和比較寄存器。在八位模式下工作時,這三個寄存器用作低階八位寄存器。高階寄存器由T<>H、T<>RH和T<>CH分別表示計數器、重載和比較寄存器。此外,這些寄存器充當主計數器的角色,T<>V、T<>R 和 T<>C 寄存器承擔輔助角色。

這意味著,當定時器處于 8 位模式與 16 位模式時,使用定時器寄存器的任何代碼的操作都將大不相同。因此,建議您對特定計時器使用八位模式或十六位模式。如果您需要在不同時間在兩種模式下使用它,則為每種模式使用單獨的函數將減少程序員的困惑。

在2位模式下,T2V寄存器包含電流計數。當運行位 (TR2) 或單脈沖位 (SS2) 導通且選通未激活 (G0EN=2) 時,此寄存器隨所選時鐘邊沿遞增。如果門控處于活動狀態 (G1EN=2),則除了 TR2 或 SS2 導通外,初級引腳上的輸入必須與初級極性位 (T0POL [<>]) 的極性相反,計數器才能遞增。

T2R 寄存器保存計數器的重新加載值。每當此值溢出(已達到 FFFFh 并且由于再次遞增)時,該值都會自動插入計數器 (T2V) 中。

控制和配置寄存器

有三個控制和配置寄存器:T2CFG、T2CNA 和 T2CNB。 T2CFG 包含常規配置信息

pYYBAGQAOqGAXJCoAAALVcRkESo511.gif

C/T2位(計數器/定時器選擇)選擇定時器是在計數器模式還是定時器模式下工作(捕獲、比較和捕獲與比較輸出是定時器模式的子模式)。在定時器模式下,CCF [1:0] 位(捕獲/比較選擇)確定定時器是處于比較模式 (CCF [1:0] = 00) 還是捕獲模式 (CCF [1:0] = 01、10 或 11)。在計數器模式下,CCF 位確定將計算哪些邊沿(下降、上升或兩者兼而有之)。在計數器模式下,不使用 CCF 位中的值 00,因為計數器沒有可計數的內容。 模式選擇位 (T2MD) 確定定時器是作為一個 <> 位定時器還是兩個獨立的 <> 位定時器運行。設置后,選擇兩個八位定時器。次級定時器始終是比較/PWM 定時器。

可以選擇系統時鐘或備用時鐘(在某些MAXQ實現中為32 kHz RTC時鐘)作為源時鐘,并且每個時鐘都可以根據需要進行預分頻。備用時鐘選擇位 (T2CI) 默認為 0,用于選擇系統時鐘。設置此位將選擇備用時鐘。

預分頻器位 (T2DIV [2:0]) 選擇時鐘除數,范圍從 1 到 128。預分頻器的公式為 2n,其中 n 是 T2DIV [2:0] 中的值。

T2CNA 包含選通使能、單次觸發、重載使能、運行使能、低運行使能、初級輸出極性、主輸出使能和中斷使能位。

poYBAGQAOqKAc1FPAAAIwxvtox8302.gif

選通使能位(G2EN)允許有選擇地禁用計數器。 單次觸發位 (SS2) 允許定時器運行,直到下一個溢出情況,此時定時器停止。

捕獲和重裝位 (CPRL2) 指示定時器將其值捕獲到其捕獲寄存器中,并從外部邊沿上的重載寄存器重新加載該值。CPRL2 不用于比較和計數器模式。

運行使能位 (TR2) 允許主計數器運行,低運行使能位 (TR2L) 允許輔助計數器在 <> 位模式下運行。

初級極性選擇位 (T2POL0) 選擇初級輸出的初始極性。通過 T2OE0 啟用輸出后更改此位不起作用。設置主輸出使能位 (T2OE0) 將打開初級引腳的輸出,并將其值設置為等于極性位 (T2POL0) 中的值。

設置主中斷使能 (ET2) 允許生成中斷,前提是定時器模塊已啟用中斷(在 IMR 寄存器中設置適當的位)并且已啟用全局中斷(IC 寄存器位 0 設置為 1)。當主計數器溢出(達到FFFFh)或與比較寄存器匹配時,將生成中斷。在這些情況下,將設置適當的位(TF2 用于溢出,TCC2 用于比較),并應由中斷處理程序中的固件重置。未能重置這些位將導致重復中斷,直到它們被重置或中斷被禁用。

T2CNB 包含比較和溢出標志、次級中斷使能以及次級輸出極性和使能位。

pYYBAGQAOqOAB_oxAAAJEnj8mOI469.gif

捕獲/比較標志 (TCC2) 是在主計數器值與比較值匹配時設置的。

低捕獲/比較標志 (TC2L) 類似于 TCC2,但僅在處于 <> 位模式且低計數器或次級計數器與低比較值匹配時才設置。

溢出標志 (TF2) 在主計數器溢出時設置。低溢出標志 (TF2L) 與 TF2 類似,但僅在處于 2 位模式且低計數器或次級計數器溢出時設置。 次級極性選擇位 (T1POL2) 選擇次級或 B 輸出引腳的初始極性。通過 T1OE2 啟用輸出后更改此位不起作用。設置次級輸出使能位 (T1OE2) 將打開次級引腳的輸出,并將其值設置為等于極性位 (T1POL<>) 中的值。次級輸出不直接鏈接到次級計數器,因為在 <> 位模式下,主計數器提供輸出,而在 <> 位模式下,低計數器源輸出。

設置次級中斷使能 (ET2L) 允許在 2 位模式下,當次級或低位 2 位計數器的溢出 (TF2L) 或比較 (TC2L) 設置 TF2L 或 TC<>L 位時生成中斷。ET<>L 位不用于 <> 位模式。

例子

比較示例 1 - 輸出帶門控
的波形 以下代碼將輸出頻率為 100 Hz、占空比為 1/3 的信號。該代碼是為 4.9152 MHz 的時鐘速度編寫的。4000h(16384 十進制)的重載值在重載和溢出以及隨后的重載之間提供 C000h(49152 十進制)時鐘周期,持續時間為 10 ms (100 Hz)。C000 的比較值為我們提供了 32768 個時鐘周期 (C000h - 4000h) 或重新加載后 6.7 毫秒,將進行比較(以及因此產生的脈沖邊沿)。

T2POL1 位設置初始值,因為我們使用的是次級輸出,主輸出用于選通。在這種情況下,T2POL0 位選擇門控電平。當 T2POL1 設置為 0 時,輸出的初始值為 0,因此輸出低電平持續 6.7 毫秒,然后高電平持續 3.3 毫秒。只要初級引腳保持高電平,就會輸出1/3占空比波形。當初級引腳被拉低時,計數器將停止計數,并將次級引腳保持在當前電平。通過將T2POL3設置為2,可以反轉波形(產生1/1占空比脈沖)。通過將 T2POL0 設置為 1,可以將門控電平更改為高電平有效。

move	T2V0, #04000h ; set to reload value to keep first pulse
  ; from being extra long
	move 	T2R0, #04000h ; reload value
	move 	T2C0, #0C000h ; compare value

	move 	T2CFG0, #000h ;
; 0000,0000 - use system clock (0), divide by 1 (000),
;	16 bit mode (0), compare mode (00), c/t2=timer (0)

move 	T2CNB0, #040h
; 0100,0000 - ET2L off - low interrupts not available in 16-bit mode (0),
;	secondary OE is on (1), POL1 = low starting value (0), reserved (0)
;	TF2 is not used (0), TF2L is not used (0), TCC2 is not used (0),
;	TC2L is not used (0)

move 	T2CNA0, #009h
; 0000,1001 - ET2 off - interrupts not needed (0),
;	primary OE off as primary pin is used for gating (0),
;	POL0 low, gated when primary pin is low (0), TR2L is not needed (0)
;	TR2 on, run enabled (1), CPRL2 is not needed (0),
;	SS2 is not needed (0), gating enabled (1)

比較示例2 - 單次脈沖
以下代碼是為MAXQ2000器件編寫的,該器件具有3個獨立的定時器2。它使用模塊 4 中的第三個計時器。它也是為4.9152 MHz的系統時鐘頻率編寫的,觸發時將輸出寬度為兩毫秒的低脈沖,輸出通常為高電平。在脈沖結束時,將生成一個中斷,以指示脈沖已完成。此代碼在八位模式下使用計時器,還演示了預分頻器的用法。

為了獲得所需的兩毫秒周期,使用預標度值 64 和定時器周期 154 個預分頻時鐘 (4915200 / 64 * 0.002 = 153.6)。選擇 66h (100h - 9Ah) 的比較值,在計數器從 FFh 溢出到 9 之前,會得到 154Ah(00 個十進制)的刻度。將重新加載值設置為 65h 會導致脈沖在我們設置 SS1(單次)位后開始 2 個刻度。

SetupPulse:
	; This code sets up the timer and should be run once
	; set up Int handler
	move    IV, #IntHandler	    ; Set interrupt vector.
    	move    IC.0, #1            ; Enable global interrupts.
    	move    IMR.4, #1           ; Enable interrupts for module 3.
	; timer 0 is in module 3, timer 1 & 2 are in module 4

	move 	T2CFG2, #068h ;
; 0110,1000 -- use system clock (0), divide by 64 (110),
;	8 bit mode (1), compare mode (00), c/t2=timer (0)

	move 	T2CNB2, #000h
; 0000,0000 -- ET2L off, low interrupts not needed (0), secondary OE off (0),
;	T2POL1 = not used (0), reserved(0)
;	TF2 is generated by the timer (0), TF2L is not used (0), TCC2 is not used (0),
;	TC2L is not used (0)

	move 	T2CNA2, #0E0h
; 1110,0000 -- ET2 on, interrupt will be generated (1), primary OE on (1),
;	T2POL0 is high (1), TR2L is not needed (0)
;	TR2 off, run not enabled (0), CPRL2 is not needed (0), SS2 is set later (0),
;	gating disabled (0)

	move	T2H2, #065h ; set to reload value
	move 	T2RH2, #065h ;
	move 	T2CH2, #066h ; 0x100 - 0x66(compare value) = 0x9A = 154 ticks

每當要觸發脈沖時,都應調用以下代碼。

TriggerPulse:
	move T2CNA2.1, #1 ; set the single shot bit to start the timer
ret
The following is a piece of the interrupt code.
IntHandler:
move c, T2CNB2.3
jump nc, NonTimerInt
move T2CNB2.3, #0 ; turn off overflow bit so interrupt is serviced
; code for end of pulse here...

NonTimerInt:
	; other interrupt code here.

reti

比較示例 3 - 定時中斷 以下代碼將生成兩個中斷
,每 125 微秒一個,第二個每毫秒一個。它使用一個分為兩個八位定時器的定時器。由于兩個八位定時器將在同一輸入時鐘上運行,因此我們希望選擇一個時鐘除數,允許兩個定時器的計數小于256(八位計數器的最大值)。使用備用時鐘作為源為我們提供了一種無需劃分系統時鐘即可獲得兩個時序的方法,但代價是一些精度:高計數器的實際時序接近 122 微秒,低計數器的實際時序接近 0.98 毫秒,因為備用時鐘以 32768 Hz 運行,并且沒有所需時間段的偶數除數可用。我們將從低計數器每秒獲得 1024 個中斷,從高計數器每秒獲得 8192 個中斷。高中斷和低中斷均使能,中斷類型由TF2和TF2L位標識,必須清除這些位才能為中斷提供服務。

; This code sets up the timer and should be run once
	; set up Int handler
	move    IV, #IntHandler	    ; Set interrupt vector.
    	move    IC.0, #1            ; Enable global interrupts.
    	move    IMR.3, #1           ; Enable interrupts for module 3.
	; timer 0 is in module 3

	move 	T2CFG0, #088h ;
; 1000,1000 -- use 32 kHz clock (1), divide by 1 (000),
;	8 bit mode (1), compare mode (00), c/t2=timer (0)

	move 	T2CNB0, #080h
; 1000,0000 -- ET2L on, low interrupt will be generated (1), secondary OE off (0),
;	T2POL1 = not used (0), reserved(0)
;	TF2 is generated by the timer (0), TF2L is generated by timer (0),
;   	TCC2 is not used (0), TC2L is not used (0)

	move 	T2CNA0, #080h
; 1000,0000 -- ET2 on, interrupt will be generated (1), primary OE off (0),
;	T2POL0 is not needed (0), TR2L off, will be set later (0)
;	TR2 off, will be set later (0), CPRL2 is not needed (0),
;   	SS2 is not needed (0), gating disabled (0)

	move	T2H0, #0FCh ; set to reload value to keep first pulse from being extra long
	move 	T2RH0, #0FCh ; reload value (0x100 - 0xFC = 4 ticks)
	move 	T2CH0, #000h ;

	move	T2V0, #0E0h ; set to reload value to keep first pulse from being extra long
	move 	T2R0, #0E0h ; reload value (0x100 - 0xE0 = 32 ticks)
	move 	T2C0, #000h ;

	move	ACC, T2CNA0 ; turn on high run and low run (TR2, TR2L)
	or	#018h ;
	move	T2CNA0, ACC

以下是中斷處理程序代碼的一部分:

IntHandler:
	move c, T2CNB0.3
	jump nc, No8KHz
	; code for 8KHz interrupt here
	move T2CNB0.3, #0


No8KHz:
	move c, T2CNB0.2
	jump nc, No1KHz
	; code for 1KHz interrupt here
	move T2CNB0.2, #0


No1KHz:
	; other interrupt code here

reti

捕獲示例 - 對輸入波形進行計時
此示例對輸入信號進行計時。此代碼使用第二個定時器(它們編號為 0、1 和 2),并設置為對高脈沖的持續時間進行計時。在看到上升沿之前,它不會開始計時。CPRL2位可在捕獲時重新加載,因此后續脈沖也可以定時。T2POL [0] 和 SS2 位在此模式下的含義略有不同。SS2位(單次)用于禁止計數,直到檢測到起始邊沿。這使得定時器可以隨時設置,即使輸入當前為高電平,因為定時器直到下一個上升沿才會啟動。T2POL [0] 位選擇門控電平,而不是前面示例中的輸出極性。門控電平為 0 可防止計數器在輸入為低電平時運行。此示例適用于更長的脈沖,并將系統時鐘除以 128。系統時鐘頻率為 4.9152 MHz,定時器的分辨率約為 26 微秒,溢出前可計數至 1.7 秒。

以下代碼設置捕獲。

; set up Int handler
	move    IV, #IntHandler         ; Set interrupt vector.
      move    IC.0, #1                ; Enable global interrupts.
      move    IMR.4, #1               ; Enable interrupts for module 3.
	; timer 0 is in module 3, timer 1 & 2 are in module 4

	; repeated capture of high pulse
	move T2CFG1, #074h ;
; 0111,0100 -- use system clock (0), divide by 128 (111),
;	16 bit mode (0), capture on falling edge (10), c/t2=timer (0)

	move T2CNA1, #08Fh ;
; 1000,1111 -- ET2 on, interrupt will be generated (1), primary OE off (0),
;	T2POL0 (gating) at low (0), TR2L off, will be set later (0)
;	TR2 on (1), CPRL2 (reload on capture) is on (1),
;   	SS2 on (1), gating enabled (1)

	move 	T2CNB1, #000h
; 0000,0000 -- ET2L off, low interrupt not used (0), secondary OE off (0),
;	T2POL1 = not used (0), reserved(0)
;	TF2 is generated by the timer (0), TF2L is not used (0),
;   	TCC2 is not used (0), TC2L is not used (0)

以下是中斷處理程序代碼的一部分:

IntHandler:
	; looking for Timer2 interrupt...

move c, T2CNB1.1 ; capture/reload flag
jump nc, NoCapture
move T2CNB1.1, #0
; put code for capture event here
move ACC, T2C1 ; capture value now in ACC

NoCapture:
move c, T2CNB1.3 ; overflow flag
jump nc, NoOverflow
	move T2CNB1.3, #0 ;
	; put code to deal with overflow here
	; pulse was too long to measure with current clock speed and divisor
	; can add 65536 to a 32-bit value to keep counting

NoOverflow:
	; put other interrupt code here

reti

計數器示例 - 使用中斷和輸出波形
計算傳入轉換 以下示例對初級引腳上的輸入脈沖進行計數,并在每八個脈沖后生成一個中斷。它還控制次級引腳上的輸出波形,該波形每 8 個輸入脈沖切換一次。

	; This code sets up the timer and should be run once
	; set up Int handler
	move    IV, #IntHandler	    ; Set interrupt vector.
      move    IC.0, #1            ; Enable global interrupts.
      move    IMR.3, #1           ; Enable interrupts for module 3.
	; timer 0 is in module 3

	move	T2V0, #0FFF8h ; set to reload value
	move 	T2R0, #0FFF8h ; reload value 0x10000 - 0x0ffff = 8 ticks
	move 	T2C0, #00000h ;

	move 	T2CFG0, #003h ;
; 0000,0011 -- use system clock (0), divide by 1 (000),
;	16-bit mode (0), rising edge (01), c/t2=counter (1)

	move 	T2CNB0, #060h
; 0110,0000 -- ET2L not used (0), secondary OE on (1),
;	T2POL1 start at high (1), reserved(0)
;	TF2 is generated by the timer (0), TF2L is not used (0),
;   	TCC2 is generated by the timer (0), TC2L is not used (0)

	move 	T2CNA0, #088h
; 1000,1000 -- ET2 on, interrupt will be generated (1), primary OE not used (0),
;	T2POL0 is not used (0), TR2L is not needed(0)
;	TR2 on (1), CPRL2 is not needed (0),
;   	SS2 is not needed (0), gating disabled (0)

以下是中斷處理程序的一部分

IntHandler:

	move c, T2CNB0.3
	jump nc, NoTimer
	move T2CNB0.3, #0 ; service interrupt
	; put code for every 8 pulses here

NoTimer:
	; other interrupt code here

reti

要避免的一些常見陷阱

在比較模式下,如果比較值和重載值相等,則在重載發生一個時鐘周期后,輸出上會發生第二次轉換。雖然當您想要一個時鐘周期的脈沖寬度時,這是一個有效的選項,但很容易讓這種情況發生而沒有打算,因為它們都默認為相同的值 0。如果不要使用比較值,則應將其設置在計時器使用的范圍之外。通常,將比較值設置為小于重新加載值的值將執行此操作。如果無法做到這一點(由于使用重新加載值 0),則比較值應設置為 <> 位模式下的 FFFFh 或 <> 位模式下的 FFh。這會導致比較和溢出事件發生在同一計時器時鐘周期上,從而阻止輸出的第二次轉換。

輸出使能應在運行使能之前或同時打開。在輸出使能之前設置運行使能可能會導致輸出反轉,因為在計時器設置為運行和斷言輸出使能之間,中斷可能會導致代碼掛起(在中斷提供服務時)。這可能導致在使能輸出之前發生比較或溢出事件,從而導致輸出具有相反的極性。這通常發生在B或次級輸出上,因為輸出使能(T2OE1)位于T2CNB寄存器中,而運行位(TR2)和低運行位(TR2L)位于T2CNA寄存器中。在這種情況下,應首先設置 T2CNB 寄存器,或者應設置 T2CNA 寄存器,將運行位設置為零,然后在配置所有寄存器后設置運行位。

審核編輯:郭婷


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7542

    瀏覽量

    151316
  • 寄存器
    +關注

    關注

    31

    文章

    5336

    瀏覽量

    120232
  • 定時器
    +關注

    關注

    23

    文章

    3246

    瀏覽量

    114721
收藏 人收藏

    評論

    相關推薦

    16位微控制器MAXQ613電子資料

    概述:MAXQ613是一款低功耗、16位MAXQ 微控制器 ,設計用于通用 遙控 、消費類 電子 和白色家電等低功耗產品。器件結合了強大的16位RISC
    發表于 04-13 07:35

    MAXQ2000微控制器與MAX4397是如何連接的?

    MAX4397是什么?MAXQ2000微控制器與MAX4397是如何連接的?
    發表于 06-04 06:15

    用uIP堆棧實現MAXQ微控制器聯網-MAXQ2000的應用

    用uIP堆棧實現MAXQ微控制器聯網 摘要:本應用筆記描述了如何用uIP TCP/IP網絡協議棧實現MAXQ®微控制器聯網。本設計
    發表于 08-04 09:47 ?507次閱讀
    用uIP堆棧實現<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b>聯網-<b class='flag-5'>MAXQ</b>2000的應用

    MAXQ微控制器JTAG接口引腳的復用

    摘要:通常在嵌入式應用微控制器的每個端口引腳都是必需的,沒有多余引腳。大部分MAXQ®微控制器帶有可重新進行寫操作的內部程序存儲
    發表于 04-23 16:28 ?954次閱讀

    在應用編程MAXQ微控制器可分區擦除的程序和數據閃存

    摘要:本應用筆記介紹了MAXQ微控制器的程序和數據閃存,以及如何使用內置的應用ROM對閃存進行擦/寫。本應用筆記適用于所有使用分區擦除閃存的MAXQ
    發表于 04-23 17:16 ?702次閱讀
    在應用編程<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b><b class='flag-5'>中</b>可分區擦除的程序和數據閃存

    MAXQ8913微控制器從RAM執行應用程序

    MAXQ8913微控制器從RAM執行應用程序 MAXQ8913及其它MAXQ®微控制器
    發表于 01-11 17:56 ?1160次閱讀
    在<b class='flag-5'>MAXQ</b>8913<b class='flag-5'>微控制器</b><b class='flag-5'>中</b>從RAM執行應用程序

    MAXQ1103 高性能RISC安全微控制器

    MAXQ1103 高性能RISC安全微控制器 概述 MAXQ1103微控制器是一款低功耗32位R
    發表于 01-26 16:18 ?848次閱讀

    MAXQ61H 低功耗、16位MAXQ微控制器

      MAXQ61H是一款低功耗、16位MAXQ®微控制器,設計用于通用遙控、消費類電子和白色家電等低功耗產品。 MAXQ61H結合
    發表于 01-05 09:34 ?843次閱讀
    <b class='flag-5'>MAXQ</b>61H 低功耗、16位<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b>

    MAXQ618 低功耗6位MAXQ微控制器

    MAXQ618是一種低功耗,16位MAXQ微控制器的低功耗應用,包括通用遙控,消費電子和白色家電設計。該器件結合了強大的16位RISC微控制器
    發表于 03-14 11:02 ?1232次閱讀
    <b class='flag-5'>MAXQ</b>618 低功耗6位<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b>

    MAXQ612/MAXQ622低功耗、16位MAXQ微控制器

    MAXQ612/MAXQ622低功耗、16位MAXQ?微控制器設計用于通用遙控、消費類電子和白色家電等低功耗產品。兩款器件均采用低功耗、高
    發表于 05-28 11:47 ?1322次閱讀
    <b class='flag-5'>MAXQ</b>612/<b class='flag-5'>MAXQ</b>622低功耗、16位<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b>

    微控制器MAXQ1850文數據手冊

    本文提供的微控制器MAXQ1850文數據手冊,希望對你的學習有所幫助!
    發表于 06-07 15:39 ?175次下載
    <b class='flag-5'>微控制器</b><b class='flag-5'>MAXQ</b>1850<b class='flag-5'>中</b>文數據手冊

    使用uIP堆棧將MAXQ微控制器聯網

    本應用筆記介紹如何使用uIP TCP/IP網絡堆棧將MAXQ?微控制器聯網。常用的SPI?轉以太網IC用作此應用的MAC/PHY。MAXQ2000作為微控制器示例。
    的頭像 發表于 01-11 20:32 ?1198次閱讀
    使用uIP堆棧將<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b>聯網

    如何使用MAXQ微控制器上的定時器B生成PWM波形

    MAXQ微控制器有三種類型的定時器定時器0、定時器1和定時器2。
    的頭像 發表于 02-20 13:44 ?779次閱讀
    如何使用<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b>上的<b class='flag-5'>定時器</b>B生成PWM波形

    使用安全微控制器看門狗定時器

    微控制器通常用于電源瞬變、電磁干擾 (EMI) 和靜電放電 (ESD) 豐富的惡劣環境。總線損壞和電磁放電引起的程序損壞可能導致微處理執行錯誤的指令。在這些環境,看門狗
    的頭像 發表于 03-01 14:14 ?928次閱讀

    如何使用MAXQ微控制器上的定時器B生成PWM波形

    MAXQ微控制器定時器B可以提供不同的PWM波形,這取決于TBC和TBR寄存的相對值以及DCEN位的狀態。
    的頭像 發表于 06-13 16:30 ?753次閱讀
    如何使用<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b>上的<b class='flag-5'>定時器</b>B生成PWM波形
    主站蜘蛛池模板: 草莓在线观看| 国产高潮久久精品AV无码| 在教室伦流澡到高潮HNP视频 | 国产精品久久久久久AV免费不卡| 二次元美女扒开内裤喷水| 国产CHINESE HD精品| 国语自产一区视频| 年轻的女职工在线观看| 美美哒高清在线播放8| 人驴交f ee欧美| 一本久道久久综合狠狠躁AV| 99re久久热在线播放快| 国产成人精品区在线观看| 好大好爽好深舒服死了| 欧美午夜a级精美理论片| 亚洲色欲色欲WWW在线丝 | 超碰97视频在线观看| 国拍在线精品视频免费观看| 暖暖 免费 高清 日本在线| 色偷偷在线视频| 亚洲AV无码一区二区色情蜜芽| 侮辱丰满美丽的人妻| 99热久久这里只有精品| 久久久96| 亚洲精品欧美精品中文字幕| 97精品在线观看| 老湿机一区午夜精品免费福利 | 色综合色综合久久综合频道 | 成人免费观看在线视频| 幻女FREE性俄罗斯学生| 久久天堂成人影院| 亚洲 成人网| 国产国拍亚洲精品av麻豆| 国产精品嫩草影院| 久久理论片| 在线看片福利无码网址| 好紧好湿太硬了我太爽了小说| 人淫阁| 5566av资源| 美女医生深夜在家裸睡惨死| 亚洲日本天堂在线|