ht8 mcu timer module 應用範例(1)– · ht8 mcu timer...
Post on 26-Jul-2020
13 Views
Preview:
TRANSCRIPT
-
HT8 MCU Timer Module 應用範例(1)–如何產生不同頻率的 Buzzer 信號
AN0436T V1.00 1 / 7 December 7, 2016
HT8 MCU Timer Module 應用範例(1)–
如何產生不同頻率的 Buzzer 信號
文件編碼:AN0436T
簡介
市售蜂鳴器(Buzzer)可區分為有源蜂鳴器及無源蜂鳴器二種,這裡指的“源”不是指電源而
是指振盪源。有源蜂鳴器因內部帶振盪源,只要通電就能發出聲響,使用雖方便,但元件
價格較高。而無源蜂鳴器因內部無振盪源,需外部輸入 2kHz~5kHz 方波進行驅動,雖驅動
方式較為複雜,但元件價格較低,時常應用於產品上。本文將介紹 MCU TM 模塊中 STM 比
較匹配輸出模式,說明如何產生不同頻率以驅動 Buzzer。
工作原理
每組定時模塊(TM)皆俱備數種工作模式,經設定 TnM0、TnM1(n 對應 TM 模塊的編號)暫
存器使 STM 成為比較匹配輸出模式。STM 分為 10-Bit 或 16-Bit(參考實際使用之 MCU
Datasheet),通過設定 TnCK2~TnCK0 暫存器來控制計數頻率、TnIO1~TnIO0 決定輸出方式。
模塊中還配置了兩組比較器:比較器 A 和比較器 P,當計數過程中會將 TMnDH、TMnDL
數值與 TMnA(10-Bit/16-Bit)、TMnRP(3-Bit/8-Bit)設定值進行比較,而不同的工作模式
在比較匹配時將產生不同的動作。此處使用的是比較器 A 匹配進行輸出驅動 Buzzer。
STM 計時器模塊結構
下圖為 16-bit STM 計時器模塊的內部結構圖。並非所有 HOLTEK 8-bit Flash MCU 的 STM 內
部結構圖與此圖完全相同,此處僅僅為了方便對範例應用進行說明提供的一個參考。具體
STM 內部結構框圖請參照其對應的 MCU 之 Datasheet。
fSYSfSYS/4
fH/64fH/16
fTBC
TCKn
000
001
010
011
100
101
110
111
TnCK2~TnCK0
16-bit Count-up Counter
8-bit Comparator P
CCRP
b8~b15
b0~b15
16-bit Comparator A
TnONTnPAU
Comparator A Match
Comparator P Match
Counter Clear 01
Output Control
Polarity Control
Pin Control TPn
TnOC
TnM1, TnM0TnIO1, TnIO0
TnAF Interrupt
TnPF Interrupt
TnPOL TnCP
CCRA
TnCCLR
Edge Detector
TnIO1, TnIO0
fH/8
Standard Type TM Block Diagram
-
HT8 MCU Timer Module 應用範例(1)–如何產生不同頻率的 Buzzer 信號
AN0436T V1.00 2 / 7 December 7, 2016
HT66F0185 之 STM 比較匹配輸出產生 Buzzer 信號說明
硬體部分
硬體部分通過改變 HT66F0185 PC、PA1、PD 狀態資訊來更改 STM 比較匹配輸出的頻率。通
過指撥開關控制 PC、PA1、PD 的 I/O 埠(均設定為輸入提升)狀態作為計數初值分別裝入
TMnAL、TMnAH,進而達到實時改變輸出頻率的目的。如下圖所示:
SWa7~SWa0
PA1、PC6~PC0 TM0AL 說明
00000000
對應→
11111111 11111111
指撥開關 SWa0~SWa7 分別接 MCU PC0~PC6 及 PA1。
指撥開關 SWb0~SWb3 分別接 MCU PD0~PD3。當指撥
開關撥向 ON 狀態時(即指撥開關的位被置 1),對應
的 I/O 埠被短接到 GND 端(即對應的 I/O 埠被清 0)。
通過將 I/O 埠的狀態讀到 MCU 中,且分別將 SWa 對
應的 I/O 埠狀態寫入 TM0AL 暫存器和將 SWb 對應的
I/O 埠狀態寫入 TM0AH 暫存器的低四位中,藉此改變
STM 的初值,達到改變輸出波形頻率的目的。
00000001 11111110 11111110
00000010 11111101 11111101
00000011 11111100 11111100
… … …
11111100 00000011 00000011
11111101 00000010 00000010
11111110 00000001 00000001
11111111 00000000 00000000
SWb3~SWb0
PD3~PD0 TM0AH
0000
對應→
1111 00001111
0001 1110 00001110
0010 1101 00001101
0011 1100 00001100
… … …
1100 0011 00000011
1101 0010 00000010
1110 0001 00000001
1111 0000 00000000
例:當 SWb3~SWb0=0b1110,SWa7~SWa0=0b00001011 時,對應的 TM0AH=0b00000001,
TM0AL=0b11110100。即設定的初值為 500,程式中設定計時時鐘為 1MHz,所以每 0.5ms 輸
出翻轉一次,即輸出頻率為 1KHz。
-
HT8 MCU Timer Module 應用範例(1)–如何產生不同頻率的 Buzzer 信號
AN0436T V1.00 3 / 7 December 7, 2016
比較匹配輸出模式操作範例圖
暫存器設定
Bit 7 TnPAU:TMn 計數器暫停控制位元
0:運行
1:暫停
通過設定此位元為高可使計數器暫停,清零此位元恢復正常計數器操作。當處於
暫停條件時,TMn 保持上電狀態並繼續耗電。當此位由低到高轉換時,計數器將
保留其剩餘值,直到此位元再次改變為低準位,並從此值開始繼續計數。
Bit 6~ 4 TnCK2~TnCK0:選擇 TMn 計數時鐘位元
000:fSYS/4
001:fSYS
010:fH/16
011:fH/64
100:fTBC
-
HT8 MCU Timer Module 應用範例(1)–如何產生不同頻率的 Buzzer 信號
AN0436T V1.00 4 / 7 December 7, 2016
101:fH/8
110:TCKn 上升緣時鐘
111:TCKn 下降緣時鐘
此三位元用於選擇 TMn 的時鐘源。外部引腳時鐘源能被選擇在上升緣或下降緣有
效。fSYS是系統時鐘,fH和 fTBC是其它的內部時鐘源,細節方面請參考振盪器章節。
Bit 3 TnON:TMn 計數器 On/Off 控制位元
0:Off
1:On
此位元控制 TMn 的總開關功能。設定此位元為高則使能計數器使其運行,清零此
位元則除能 TMn。清零此位元將停止計數器並關閉 TMn 減少耗電。當此位元經由
低到高轉換時,內部計數器將復位清零;當此位元經由高到低轉換時,內部計數
器將保持其剩餘值,直到此位元再次改變為高準位。若 TMn 處於比較匹配輸出模
式時,當 TnON 位元經由低到高轉換時,TMn 輸出腳將復位至 TnOC 位指定的初
始值。
Bit 2~ 0 未定義,讀為“0”
Bit 7~ 6 TnM1~TnM0:選擇 TMn 工作模式位元
00:比較匹配輸出模式
01:捕捉輸入模式
10:PWM 模式或單脈衝輸出模式
11:定時/計數器模式
這兩位元設定 TMn 需要的工作模式。為了確保操作可靠,TMn 應在 TnM1 和 TnM0
位元有任何改變前先關掉。在定時/計數器模式,TMn 輸出腳控制必須除能。
Bit 5~ 4 TnIO1~TnIO0:選擇 TPn 引腳輸出功能位元
比較匹配輸出模式
00:無變化
01:輸出低
10:輸出高
11:輸出翻轉
在比較匹配輸出模式下,TnIO1 和 TnIO0 位元決定當比較器 A 比較匹配輸出發生
時 TMn 輸出腳如何改變狀態。當比較器 A 比較匹配輸出發生時 TMn 輸出腳能設
為切換高、切換低或翻轉當前狀態。若此兩位元同時為 0 時,這個輸出將不會改
變。TMn 輸出腳的初始值通過 TMnC1 暫存器的 TnOC 位元設定取得。注意,由
TnIO1 和 TnIO0 位元得到的輸出準位必須與通過 TnOC 位元設定的初始值不同,否
則當比較匹配發生時,TMn 輸出腳將不會發生變化。在 TMn 輸出腳改變狀態後,
通過 TnON 位元由低到高準位的轉換復位至初始值。(PWM 模式的說明此處不進
行敘述,請參照 DataSheet。)
-
HT8 MCU Timer Module 應用範例(1)–如何產生不同頻率的 Buzzer 信號
AN0436T V1.00 5 / 7 December 7, 2016
Bit 3 TnOC:TMn TPn 輸出控制位元
比較匹配輸出模式
0:初始低
1:初始高
這是 TMn 輸出腳輸出控制位元。它取決於 TMn 此時正運行於比較匹配輸出模式
還是 PWM 模式。在比較匹配輸出模式時,比較匹配發生前其決定 TMn 輸出腳的
邏輯準位值。
Bit 2 TnPOL:TMn TPn 輸出極性控制位元
0:同相
1:反相
此位元控制 TPn 輸出腳的極性。此位元為高時 TMn 輸出腳反相,為低時 TMn 輸
出腳同相。若 TMn 處於定時/計數器模式時其不受影響。
Bit 1 TnDPX:TMn PWM 週期/占空比控制位元
0:CCRP–週期;CCRA–占空比
1:CCRP–占空比;CCRA–週期
此位元決定 CCRA 與 CCRP 暫存器哪個被用於 PWM 波形的週期和占空比控制。
Bit 0 TnCCLR:選擇 TMn 計數器清零條件位元
0:比較器 P 匹配
1:比較器 A 匹配
此位元用於選擇清除計數器的方法。標準型 TM 包括兩個比較器–比較器 A 和比
較器 P。這兩個比較器每個都可以用作清除內部計數器。TnCCLR 位元設為高,計
數器在比較器 A 比較匹配發生時被清除;此位元設為低,計數器在比較器 P 比較
匹配發生或計數器溢出時被清除。計數器溢出清除的方法僅在 CCRP 被清除為 0
時才能生效。
-
HT8 MCU Timer Module 應用範例(1)–如何產生不同頻率的 Buzzer 信號
AN0436T V1.00 6 / 7 December 7, 2016
程式流程圖
開始
系統初始化
配置STM
CLR WDT
f_change=1?
f_change=0寫新數據到TMnD
掃描指撥開關狀態
指撥開關狀態發生變化?
f_change=1
Y
N
YN
1、初始化:引腳初始化,PC、PD 輸入提升,使能 TP0。
2、STM 配置:比較匹配輸出模式,輸出翻轉,計時時鐘 fH/8(1MHz),比較器 A 匹配。
3、指撥按鍵掃描:輪詢指撥按鍵狀態資訊,皆與前次狀態進行比較,一旦發生改變,置
f_change 為 1,且將改變後的指撥按鍵信息給 TMnA 暫存器重新賦值。
程式範例
HOLTEK HT8 MCU 範常式式:V3C 語言範例。
ha0436.zip
結論
驅動無源 Buzzer 元件需求方波頻率 2kHz~5KHz 以及佔空比(Duty) 50%,雖然也可使用 PWM
進行 Buzzer 控制,但必需同時設定頻率及 Duty,使用上較為不便。
比較匹配輸出能固定 50% Duty 輸出,故只要設定輸出的頻率即可,當發生匹配時,就會自
動輸出一個翻轉的準位,使用上比 PWM 輸出模式更加方便。
-
HT8 MCU Timer Module 應用範例(1)–如何產生不同頻率的 Buzzer 信號
AN0436T V1.00 7 / 7 December 7, 2016
版本及修改資訊
Date 日期 Author 作者 Issue 發行、修訂說明
2016.07.10 洪凱迪 First Version
參考資料
參考文件 HT66F0185 DataSheet、HT8 FLASH MCU。
如需進一步瞭解,敬請瀏覽 Holtek 官方網站 http://www.holtek.com.tw/home。
免責聲明
免責聲明
本網頁所載的所有資料、商標、圖片、連結及其他資料等(以下簡稱「資料」),只供參
考之用,盛群半導體股份有限公司(以下簡稱「本公司」)將會隨時更改資料,並由本公
司決定而不作另行通知。雖然本公司已盡力確保本網頁的資料準確性,但本公司並不保證
該等資料均為準確無誤。本公司不會對任何錯誤或遺漏承擔責任。
本公司不會對任何人士使用本網頁而引致任何損害(包括但不限於電腦病毒、系統固障、
資料損失)承擔任何賠償。本網頁可能會連結至其他機構所提供的網頁,但這些網頁並不
是由本公司所控制。本公司不對這些網頁所顯示的內容作出任何保證或承擔任何責任。
責任限制
在任何情況下,本公司並不須就任何人由於直接或間接進入或使用本網站,並就此內容上
或任何產品、資訊或服務,而招致的任何損失或損害負任何責任。
管轄法律
本免責聲明受中華民國法律約束,並接受中華民國法院的管轄。
免責聲明更新
本公司保留隨時更新本免責聲明的權利,任何更改於本網站發佈時,立即生效。
http://www.holtek.com.tw/home
簡介工作原理STM計時器模塊結構HT66F0185之STM比較匹配輸出產生Buzzer信號說明程式流程圖程式範例結論版本及修改資訊參考資料免責聲明免責聲明責任限制管轄法律免責聲明更新
/ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile (None) /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False
/CreateJDFFile false /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure false /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles false /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /DocumentCMYK /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /UseDocumentProfile /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice
top related