如何使用HT66F40 CTM Timer功能

合集下载

HT66Fx0TimerModule工作原理与使用注意事项

HT66Fx0TimerModule工作原理与使用注意事项

注:
1:不同的 TM,配置有不同数目的 TMnCx,如 ETM 比其他 TM 多配置 TMnC2,
请参考表 9。
2:10-bit TM 的 CCRP 的最高 3 位处于 TMnC0 的低三位,16-bit TM 的 CCRP 高 8 位为独
立的一个寄存器控制,请参考表 10。
2
HT66Fx0 Timer Module 工作原理与使用注意事项
注意事项: 1. 计数器的内容 (TMnDL,TMnDH) 只能读不能写,在以下三个条件下会清零。
(1) 当 TnON 由 0→1 时。 (2) 当计数器满足 TnCCRL 设定内容时。 (3) 当计数器溢出清零时。
2. 比较器匹配情况。 TM 的比较器有三种类型,分别是 CCRP、CCRA 和 CCRB。不同的比较器在满足匹配 条件的时候,就会有不同的动作产生。 表4
TCK2PS ( PRM1[7] ) 控制 TCK2 由 PC2/PD0 输入。 TP21PS、TP20PS (PRM2[5:4]) 控制 TP2 由哪一只 I/O 口输出。 PDPRM (PRM0[3]) 控制当TM2 的输入/输出脚与I2C有 冲突时的引脚重置。
TnPOL
控制输出是否要经过反相
0:不反相输出;1:反相输出。
HT66Fx0 Timer Module 工作原理与使用注意事项
HT66Fx0 Timer Module 工作原理与使用注意事项
文件编码:AN0324S
简介
Holtek 的 Timer Module (下面简称 TM) 包括 CTM、STM、PTM 和 ETM 四种类型。本文将 藉由 HT66F40 的 16-bit STM (Standard TM) 说明 TM 的基本工作原理与使用注意事项,帮 助用户了解 TM 工作原理。不同类型的 TM 功能可能比 STM 有缩减、提升或有些微差异, 本文将作批注说明,读者可以自行参考 datasheet 内说明,进而灵活运用。

HT66Fxx使用Data EEPROM的用法与注意事项

HT66Fxx使用Data EEPROM的用法与注意事项

HT66Fxx使用Data EEPROM的用法与注意事项文件编码:HA0191S简介HT66Fxx系列内建有EEPROM Data Memory功能,本文以HT66F40为母体,说明EEPROMData Memory的使用方法。

工作原理HT66Fxx系列的EEPROM读写操作上较为简单,它在操作上只需要对其相关的寄存器设置相应的值后就可以了。

它有三个相关的寄存器: 地址寄存器EEA [41H],数据寄存器EED[42H]和控制寄存器EEC [140H],其中EEA寄存器与EED寄存器位于BANK0中,而EEC寄存器位于BANK1之中;EEA寄存器是用来设定所要写入或读取EEPROM的地址;EED寄存器是用来设定所要写入EEPROM的数值,或在读取模式时读到的数据存在此寄存器内;EEC寄存器是读写EEPROM的控制寄存器,位于在BANK1中,需要对它操作时,必需以间接寻址的方式,因此所有的读和写操作都必须利用间接寻址寄存器IAR1和寄存器指针MP1方式来操作,以下为EEPROM读操作或写操作的步骤:1.对EEA寄存器设定所需要读取数据或写入数据的地址值。

2.对EED寄存器设定所需要写入数据的值(只有在写模式中使用)。

3.设置BP.0为1,在BANK1中操作。

4.设置MP1指针指向到EEPROM的控制寄存器EEC [40H]。

5.设定允许读模式或写模式。

6.设定开始读或写动作。

7.等待读或写动作结束。

8.动作结束后读模式时“RD”或写模式时“WT”bit会自动清除为零,在读取模式下读取到的数据存在EED寄存器中,这时其中断请求标志位DEF会设置为1。

程序范例以下做了两个范例的说明,其中范例1是以查寻的方式对EEPROM进行读写,主要说明如何设置地址寄存器,数据寄存器和控制寄存器来实现EEPROM的读写动作;范例2以中断的方式对EEPROM进行读写,主要说明如何设置相关中断寄存器来实现读写完成后运行中断服务序。

HT66F40测试的C语言程序

HT66F40测试的C语言程序
unsigned long count; //测试定时器0 计数点亮灯 最大计数65535
unsigned int ad_conv_time; //ad_转换时间
unsigned int ad_mux; //ad通道
unsigned long ad_temp; //ad_temp值
_emi=1;
ledscreen_on; //开显示
while(1){
led[0]=led[1]=led[2]=table[i];
led[9]=0xff;led[8]=0xbf;led[7]=0x0e;
{
ad2_count=0;
ad_rel2=ad_rel2/16;
}
}
}
}
count++;
if(count>200)
{
count=0;i++;
led[3]=table[ad_buf/1000%10];
else
if(ad_mux==1){ad_rel1=ad_temp;}
else
if(ad_mux==2){ad_rel2=ad_temp;}
if(ad_mux++>2)ad_mux=0;
_adcr0=(ad_mux|0x10);
_start=0; //下面3条语句是启动ad转换
HT66F40测试C语言
/***************************************************************
HT66F40测试程序
***************************************************************/

HT66F40使用SIM I2C Mode之用法与注意事项

HT66F40使用SIM I2C Mode之用法与注意事项

HT66F40使用SIM I2C Mode之用法與注意事項 文件編碼:HA0200T簡介HT66F40內建有SIM功能,其中包括了SPI和I2C這兩種功能,本文以HT66F40為母體,介紹使用I2C進行資料傳輸的方法和注意事項。

I2C通信原理I2C是一種用來和傳感器、EEPROM等外圍設備進行通訊的介面。

I2C總線最初是由飛利浦公司開發的兩線串列傳輸介面,用來同步串列傳輸數據。

而現在,這種兩線式的傳輸介面,擁有通信協議簡單,可容納多個外圍設備等優點,已經成為一種非常流行的介面,應用於很多領域中。

I2C串列介面是一種兩線式介面,一條是串列資料線SDA,另外一條是串列時鐘線SCL。

需要注意的是,I2C總線不存在片選線,I2C總線上的每個設備通過唯一的設備地址被識別。

兩個設備通過雙向I2C總線相互通信,一個設備稱為主機,另一個為從機。

主機和從機都可以進行資料的發送和接收,但是,主機具有總線過速控制能力。

對於在從機模式下運行的微控制器來說,I2C總線有兩種資料傳輸方式,從機發送模式和從機接收模式。

對於SIMD。

I2CI2C Block Diagram相關控制説明如下圖所示腳位,要打開I2C功能你必須首先將配置選項的SIM Function選擇為Enable,然後設置好SIMC0和SIMC1這兩個暫存器相應的位元。

下面會對這兩個暫存器詳細的介紹。

HT66F40與I2C功能相關的一共有4個暫存器。

它們是SIMA、SIMD、SIMC0和SIMC1。

SIMA暫存器SIMA暫存器是MCU設置從機的7位元位址所使用的暫存器。

暫存器的1~7位元定義了從機位址,第0位元未被使用。

當主機設備連接到I2C總線,將會發出從機位址,如果能和存儲在SIMA暫存器的某從機位址匹配時,該從機設備將會被選中。

SIMD暫存器SIMD暫存器用來存儲馬上要傳輸或者剛接收到的資料。

它是和SPI共用的,在HT66F40中,SPI與I2C只能二選其一。

比较器的设定与注意事项

比较器的设定与注意事项

HT66Fx0 比较器比较器的设定与注意事项的设定与注意事项文件编码:A N0198S简介HT66Fx0系列MCU提供有两组独立的比较器(16-pin封装仅提供一组),并都由软件控制,输入输出端口安排灵活,均与I/O共用引脚,本文即着重对此比较器的使用及注意事项作一介绍。

比较器比较器的相关设定的相关设定基本设置比较器的打开、关闭等设定都是通过CP0C/CP1C寄存器进行软件配置,具体如下:位R/W名称说明条件0R/W CxHYEN迟滞控制0:关闭;1:打开1R --- 未使用读取为02R --- 未使用读取为03R/W CxOS 输出通道选择0: CxOUT 引脚1: 内部使用4R CxOUT 比较器输出位比较器结果输出5R/W CxPOL 比较器输出极性0: 输出极性未转换1: 输出极性转换6R/W CxEN 开/关控制0: 关; 1:开7R/W CxSEL 比较器输入或I/O口的选择0: 普通I/O 引脚1: 比较器输入引脚表格中x指0或1,注意16-pin封装的型号只有一个比较器0。

CxHYEN:该位用来设置是否开启迟滞输入,当设置为1开启迟滞输入时,只有当比较器两个输入端电压差大于规格书中限定的迟滞电压值时比较器才能有所动作,否则比较器会保持原来的状态不变。

当关闭迟滞输入,只要比较器两端输入的电压差大于比较器输入失调电压,比较器就可以在最大1µs内给出比较的结果。

CxOS:该位用来设置是否在输出端输出比较结果,当设置为1,比较器的运行结果将只在CxOUT位给出;设置为0时,比较器的运行结果将既复给CxOUT位又同时从C0X\C1X引脚输出,只有在CxSEL=1时,此位才有效。

当CxSEL=0时,不管CxOS为何,比较器的运行结果将只在CxOUT位给出。

CxOUT :该位输出比较器的比较结果,其具体结果需要参考CxPOL 的极性选择。

CxPOL :该位用来设置比较器输出的极性,具体如下表:CxPOL Inputs CxOUT Cx+ < Cx- 0 0 Cx+ > Cx- 1 Cx+ > Cx- 0 1Cx+ < Cx-1CxEN :该位用来设置比较器的打开和关闭,1为打开,0为关闭。

HT66F40 ETM Timer

HT66F40 ETM Timer

如何使用HT66F40 ETM Timer功能文件编码:HA0244S简介HT66Fx0系列MCU提供了一个新的功能单元TM,即Timer Modules,整合了Timer和PWM的功能,提供包括普通Timer定时、外部计数、可编程Duty/Period PWM输出或单脉冲输出、输入捕捉等丰富的功能。

TM依据功能可分为简易型TM (CTM)、标准型TM (STM) 和增强型TM (ETM)。

本文即以HT66F40为母体,通过具体范例说明ETM如何使用Timer功能。

工作原理ETM的核心是一个既可以向上计数,又可以向下计数的10位的计数器和三个比较器,具体结构如下图示:增强型TM方框图计数器的时钟源可以通过设定T1CK0~T1CK2选择为f SYS/4、f SYS、f H/16、f H/64、f TBC或者为TCK1输入。

三个内部比较器:CCRP、CCRA和CCRB,用于设定比较基准值,CCRP 有3位宽,只对计数器的高3位进行比较,而CCRA和CCRB的位数和计数器一样,可以跟计数器比较所有的位。

当设定好相关的寄存器TM开始运行后计数器即向上或向下计数,系统会将预先写入CCRA和CCRB的值与计数器中的值进行比较。

计数器在计数溢出或者与设定CCRA和CCRB的值相等时,可以自动清除为零并产生一个中断信号,同时系统会根据程序设定产生相应的输出信号。

计数器中TM1DH/TM1DL的值无法改变,但是可以读出,只能通过设定T1ON位由0→1才能清除为零计数器。

T1APOL/T1BPOL可以对TP1A 和TP1B输出极性进行控制,当被设定为1,可以强制对TP1A和TP1B输出极性翻转。

HT66F40输出引脚介绍:引脚功能描述TMPC0 PRM2TP1A CCRA匹配输出引脚或者输入捕捉模式输入引脚,外部脉冲输出引脚,PWM输出引脚T1ACP0 :1 : 使能TP1A功能0 : I/O功能或者其它功能TP1APS :0 : 设定TP1A为PA11 : 设定TP1A为PC7TP1B_0 CCRB匹配输出引脚或者输入捕捉模式输入引脚,外部脉冲输出引脚,PWM输出引脚T1BCP0 :1 : 使能TP1B_0功能0 : I/O功能或者其它功能默认TP1B_0为PC0TP1B_1 CCRB匹配输出引脚或者输入捕捉模式输入引脚,外部脉冲输出引脚,PWM输出引脚T1BCP1 :1 : 使能TP1B_1功能0 : I/O功能或者其它功能默认TP1B_1为PC1TP1B_2 CCRB匹配输出引脚或者输入捕捉模式输入引脚,外部脉冲输出引脚,PWM输出引脚T1BCP2 :1 : 使能TP1B_2功能0 : I/O功能或者其它功能TP1B2PS :0 : 设定TP1B_2为PC51 : 设定TP1B_2为PE4在Timer模式,计数器清除为零有两种方式,由T1CCLR选择,一个是由CCRP匹配清除为零或者计数器溢出清除为零 (CCRP寄存器值为0时)。

HT8 MCU Timer Module (CTM STM PTM ETM) 应用须知说

HT8 MCU Timer Module (CTM   STM   PTM   ETM) 应用须知说

HT8 MCU Timer Module (CTM / STM / PTM / ETM) 应用须知文件编码:AN0434SC简介在产品开发中,与时间相关的控制和测量是常见的功能需求,HT8 MCU Timer Module (TM)提供通用计时、产生输出波形(如PWM、单脉冲等输出)和测量输入信号脉冲宽度等功能,可满足此类应用需求。

本文旨在介绍HT8 MCU TM功能,并比较不同类型TM的工作模式,结合程序范例,以帮助用户正确应用TM功能。

功能说明为满足不同的应用需求,HT8 MCU提供不同类型的TM,下面从TM工作原理、TM种类、TM工作模式及TM初始化步骤,4个方面介绍HT8 MCU TM。

TM工作原理HT8 MCU TM核心是由1个通过用户选择来源于内部或外部时钟源驱动的向上/向下计数器和若干个比较器m (本文中m表示比较器名称,m = A, B, P, …) 构成,比较器m分别将计数器与对应的CCRm寄存器设置值进行比较,当比较结果相同时,可清除计数器并触发中断或输出波形,从而实现通用计时、产生输出波形(如PWM、单脉冲等输出)等功能。

同时,TM可由外部输入信号触发锁存当前计数器计数值,通过比较前后两次锁存计数值的差值,可实现测量输入信号脉冲宽度功能。

TM种类HT8 MCU TM依功能可分为4种特定的类型:Compact Type TM(CTM)、Standard Type TM(STM)、Periodic Type TM(PTM)和Enhanced Type TM(ETM),每种TM类型依计数器位数可再分为10-bit和16-bit两种。

不同类型TM的比较器m资源不同,如下表。

TM类别计数器比较器m 对应CCRm缓存器NoteCTM 10-bitCTM向上计数器比较器A CCRA: 10-bit –比较器P CCRP: 3-bit 只与计数器比较bit7~bit9数据16-bitCTM向上计数器比较器A CCRA: 16-bit –比较器P CCRP: 8-bit 只与计数器比较bit8~bit15数据STM 10-bitSTM向上计数器比较器A CCRA: 10-bit –比较器P CCRP: 3-bit 只与计数器比较bit7~bit9数据16-bitSTM向上计数器比较器A CCRA: 16-bit –比较器P CCRP: 8-bit 只与计数器比较bit8~bit15数据PTM 10-bitPTM向上计数器比较器A CCRA: 10-bit –比较器P CCRP: 10-bit 与计数器比较所有bit数据16-bitPTM向上计数器比较器A CCRA: 16-bit –比较器P CCRP: 16-bit 与计数器比较所有bit数据ETM 10-bitETM向上/向下计数器比较器A CCRA: 10-bit–比较器B CCRB: 10-bit比较器P CCRP: 3-bit 只与计数器比较bit7~bit9数据16-bitETM向上/向下计数器比较器A CCRA: 16-bit –比较器B CCRB: 16-bit –比较器P CCRP: 8-bit 只与计数器比较bit8~bit15数据由上表可以看出,PTM CCRP可与计数器比较所有bit数据,因此使用PTM可以更精细地调节PWM周期。

电子定时器使用技巧

电子定时器使用技巧

电子定时器使用技巧电子定时器是一种非常实用的小工具,可以帮助我们准确地计时和管理时间。

无论是在厨房烹饪、做运动训练还是工作中,电子定时器都可以发挥重要作用。

下面是一些电子定时器使用技巧,希望对大家有所帮助。

第一,了解定时器的功能。

不同的电子定时器可能具有不同的功能,例如计时、倒计时、闹钟、计数等。

在使用定时器之前,我们需要了解它的各种功能,并根据实际需要选择合适的功能。

第二,正确设置定时器。

在使用定时器之前,我们需要根据需要设置正确的时间。

对于计时功能,我们可以根据需要选择小时、分钟、秒钟。

对于倒计时功能,我们可以设置需要倒计时的时间,并确保定时器会在倒计时结束时发出提醒。

第三,合理利用定时器。

定时器不仅可以用于计时和倒计时,还可以用于提醒我们完成某些任务。

例如,我们可以设置一个定时器,在工作时每隔一定时间提醒我们休息一下,避免过度劳累。

此外,我们还可以利用定时器提醒自己完成某些重要任务,避免拖延。

第四,充分利用定时器的储存功能。

有些电子定时器具有储存功能,可以记录多个计时时间。

我们可以事先将常用的时间设置好,并保存在定时器中,以便日后使用。

这样可以节省设置时间的时间,提高效率。

第五,定期检查电子定时器。

由于长时间使用或不正确使用,电子定时器可能出现问题。

例如,时间显示错误、提醒声音变弱等。

因此,定期检查电子定时器的功能和状态非常重要,如果发现问题,需要及时更换电池或修理。

第六,合理存放定时器。

当我们不使用定时器时,应将其存放在干燥、通风的地方,避免湿气和灰尘对定时器的损害。

此外,还应避免将定时器放在高温或阳光直射处,以防止定时器损坏。

总结起来,电子定时器是我们日常生活中非常有用的小工具,它可以帮助我们准确计时和管理时间。

在使用电子定时器时,我们需要了解它的功能、正确设置时间、合理利用定时器和充分利用其储存功能。

同时还要定期检查定时器的功能和状态,并合理存放定时器。

希望以上的使用技巧对大家有所帮助,提高时间管理效率。

如何使用HT66F40SIMI2C通信功能(C语言)

如何使用HT66F40SIMI2C通信功能(C语言)
如何使用 HT66F40 SIM I 2C 通信功能 (C 语言)
如何使用 HT66F40 SIM I2C 通信功能 (C 语言)
文件编码:AN0286S
简介
HT66Fx0 系列 Flash MCU 内建有 SIM 功能,其中包括了 SPI 和 I2C 这两种功能,本文以 HT66F40 为母体,介绍使用 I2C 进行数据传输的方法和注意事项,并通过 C 语言实现 I2C 主机与从机的通信过程。
SIMD 寄存器
SIMD 寄存器用来存儲马上要传输或者刚接收到的数据。它是和 SPI 共用的,在 HT66F40 中,SPI 与 I2C 只能二选其一。在数据写入 I2C 之前,数据必须要放入 SIMD 寄存器才能被 得到传输。相应的,在数据从 I2C 接收到后,也只能从 SIMD 寄存器中读出数据。总之, 任何通过 I2C 进行传送和接收的数据都必须通过 SIMD 寄存器。
3
SIMC1 寄存器
如何使用 HT66F40 SIM I 2C 通信功能 (C 语言)
SIMC1 寄存器是一个 I2C 专用的寄存器。
RXAK:RXAK 是从机设备接收到的应答标志。RXAK 为 0 时,表示接收设备接收 8 个位 的数据后,在第 9 个 SCL 时钟发出的应答信号已被发送设备收到。当从机设备处于发送模 式,主机设备处于接收模式时,从机设备通过检查 RXAK 位来确定主机设备是否要接收下 一个字节的数据,RXAK 为 0,表示主机设备要继续接收数据,从机设备将发送下一个字 节的数据,RXAK 为 1,表示主机设备不再接收数据,从机设备将释放 SDA 总线,主机设 备将发送停止信号,释放 I2C 总线。 IAMWU:此位用来控制 I2C 地址匹配是否可以唤醒 MCU,1 为是,0 为否。 SRW:SRW 是一个从机的读取/写入模式位。这一位决定了主机是希望发送或者接收数据。 当主机传送的地址和从机匹配后,HAAS 位将被设为高电平,设备将会检查 SRW 位来决定 是应该进入发送模式或者是接收模式。如果 SRW 位为高电平,主机会请求从 I2C 总线上读 取数据,此时从机设备为发送模式。反之,主机会写入数据到总线上,从机为接收模式。

定时器的用法

定时器的用法

定时器的用法定时器确实是一项了不起的发明,使相当多需要人控制时间的工作变得简单了许多。

下面店铺就给大家介绍定时器的用法。

定时器的用法1、调整当前时间使用定时器时,须先将定时器的显示时间调整到当前时间。

按住“时钟”键的同时,分别按“星期”、“小时”和“分钟”键,调整到当前的时间。

(每按一次增加一小时,长按可快速调整。

) 按“时钟”键3秒后,当前时间增加1小时,同时液晶屏显示“夏令时”字样,进入夏令时功能,再按"时钟"键3秒,取消夏令时功能,时间自动减少1小时。

2、设置程序按“设定”键,即可进入定时模式设置,屏幕上显示“1开”。

按“小时”、“分钟”和“星期”,即第一组定时开开始工作的时间。

其中,按“星期”键,可选择不同星期组合模式。

可根据需求,定时器只在设定的星期数中工作。

再按“设定”键,屏幕上显示“1关”,即第一组定时关闭时间,时间设置参考一开设置方法。

依次类推,最多可设置20组开与关。

设置完成后按“时钟”键返回当前时间。

注:1.如果每天不需要设定20组,而其他组已设定,必须按“清除”键,将多余各组的时间程序清除。

2.定时设置完成后,应按“设定”键检查多次定时设定情况是否与实际情况一致。

如有异,请按时间需要进行调整或重新设定。

注:1.如果每天不需要设定20组,而其他组已设定,必须按“清除”键,将多余各组的时间程序清除。

2.定时设置完成后,应按“设定”键检查多次定时设定情况是否与实际情况一致。

如有异,请按时间需要进行调整或重新设定。

如设置的时间程序是跨天的,需要逐一将“开”与“关”时间程序相对应的星期模式对应好。

3、定时器工作模式选择在当前时间状况下,连续按“模式”键,显示屏的左侧将循环显示“自动关”、“开”、“自动开”、“关”四种模式。

根据您的需要进行模式选择。

四种模式释意:“开”:定时器一直有电源输出,没有定时功能;“关”:定时器无电源输出,呈关闭状态;“自动开”:定时器接通电源时有电源输出,之后按设定的程序工作;“自动关”:定时器接通电源时无电源输出,之后按设定的程序工作。

定时器的使用方法

定时器的使用方法

定时器的使用方法定时器是一种常用的工具,它可以在特定的时间间隔内执行某个任务或者动作,比如定时关闭电脑、定时播放音乐等。

在日常生活和工作中,我们经常会用到定时器,因此掌握定时器的使用方法是非常重要的。

下面,我将为大家介绍定时器的使用方法,希望能够帮助大家更好地利用定时器。

首先,我们需要了解定时器的基本原理。

定时器是通过设定一个时间间隔,当时间到达设定的间隔时,就会触发相应的操作。

在计算机领域,定时器通常是通过编程语言或者操作系统提供的接口来实现的。

在其他领域,比如家用电器、手机应用等,定时器也是通过相应的设备或者软件来实现的。

在计算机编程中,定时器的使用方法通常包括以下几个步骤:1. 初始化定时器,首先,我们需要初始化定时器,设置时间间隔和触发的操作。

这通常包括设置定时器的周期、触发条件等参数。

2. 启动定时器,一旦定时器初始化完成,我们就可以启动定时器,让它开始工作。

在计算机编程中,通常是调用相应的函数或者方法来启动定时器。

3. 处理定时器触发事件,当定时器的时间间隔到达时,就会触发相应的事件。

在编程中,我们通常会编写相应的处理函数来处理定时器触发的事件。

4. 停止定时器,在某些情况下,我们可能需要停止定时器的工作。

这通常是通过调用相应的函数或者方法来实现的。

除了计算机编程中的定时器使用方法,我们在日常生活中也经常会用到定时器。

比如,定时器可以用来设置闹钟、定时关闭电视、定时煮饭等。

在手机应用中,定时器也经常被用来设置提醒、定时播放音乐等功能。

在家用电器中,定时器也被广泛应用,比如洗衣机的定时洗涤功能、空调的定时开关机功能等。

总的来说,定时器是一种非常实用的工具,它可以帮助我们在特定的时间间隔内执行某个任务或者动作。

掌握定时器的使用方法,可以让我们更好地利用定时器,提高工作和生活的效率。

希望通过本文的介绍,大家能够更加了解定时器的使用方法,从而更好地应用定时器。

HT66Fx0TimerModule工作原理与使用注意事项

HT66Fx0TimerModule工作原理与使用注意事项

HT66Fx0 Timer Module 工作原理与使用注意事项HT66Fx0 Timer Module 工作原理与使用注意事项文件编码:A N 0324S简介Holtek 的Timer Module (下面简称TM) 包括CTM 、STM 、PTM 和ETM 四种类型。

本文将藉由HT66F40的16-bit STM (Standard TM) 说明TM 的基本工作原理与使用注意事项,帮助用户了解TM 工作原理。

不同类型的TM 功能可能比STM 有缩减、提升或有些微差异,本文将作批注说明,读者可以自行参考datasheet 内说明,进而灵活运用。

工作原理TM 与一般Timer 的差异单个一般Timer 与单个TM 差异如表1所示。

表1比较项目单个一般 Timer 单个 TM工作原理 以计数器的概念实现定时、计数或者脉冲宽度测量等功能。

比一般的Timer 多了几组比较器,当计数器与比较器设定值匹配时,根据不同模式执行相应的动作。

计数器11: TMnDL/TMnDH CTM/STM/PTM 两组比较器: CCRA 、CCRP 比较器无ETM 三组比较器: CCRA 、CCRP 、CCRB 外部输入脚11:TCKnCTM/STM/PTM 两个输出脚: TPn_0、TPn_1外部输出脚无ETM三或四个输出脚:TPn1A 、TPnB_0、TPnB_1、(TPnB_2) (1) 定时器/计数器模式(2) 比较匹配输出模式 (3) 单脉冲输出模式CTM 无此功能 (4) 脉冲宽度调制 (PWM) 输出模式 功能(1) 定时器/计数器模式 (2) 脉冲宽度测量模式(5) 捕捉输入模式即脉冲宽度测量模式CTM 无此功能注:不同TM 所配置的资源与功能差异请参考(附录)表9。

重点说明:TM 与传统Timer 最大的不同在于TM 是在当计数器与比较器设定值匹配时(即compare match ),根据不同模式执行相应的动作。

盛群HT66F50定时器捕捉资料

盛群HT66F50定时器捕捉资料

如何使用HT66F40 STM Input Capture功能文件編碼:HA0246T簡介HT66Fx0系列MCU提供了一個新的功能單元TM,即Timer Modules,整合了Timer和PWM的功能,提供包括普通Timer定時、外部計數、可程式Duty/Period PWM輸出或單脈衝輸出、輸入捕捉等豐富的功能。

TM依據功能可分爲簡單型TM (CTM)、普通型TM (STM) 和增強型TM (ETM)。

本文即以HT66F40為母體,通過具體範例說明STM中輸入捕捉功能的使用。

工作原理STM的核心是一個向下計數的16位元的計數器和兩個比較器,具體結構如下圖示:Standard Type TM Block Diagram注意:本範例中的n=2。

計數器的時鐘源可以通過設定T2CK0~T2CK2選擇為f SYS/4、f SYS、f H/16、f H/64、f TBC或者為TCK2輸入。

兩個內部比較器:CCRP即TM2RP和CCRA即TM2A,用於設定比較基準值,CCRP有8位元寬,只對計數器的高8位元進行比較,而CCRA的位元數和計數器一樣,可以跟計數器比較所有的位元。

當設定好相關的暫存器TM開始運行後計數器向上計數,系統會將預先寫入CCRA的值與計數器中的值進行比較。

計數器在計數溢出或者與設定CCRA的值相等時,可以自動清除為零並產生一個中斷信號,同時系統會根據程式設定產生相應的輸出信號。

計數器中TM2DH/TM2DL的值無法改變,但是可以讀出,只能通過設定T2ON位元由0→1才能清除為零計數器。

T2POL可以對TP2輸出邏輯進行控制,當被設定為1,可以強制對TP2輸出邏輯翻轉。

HT66F40輸出管腳介紹:管腳 功能描述 TMPC0PRM2TP2_0CCRA/CCRP 匹配輸出管腳T2CP01 : 使能TP2功能0 : I/O 功能或者其他功能 TP20PS0 : Enable TP2_0 on PC3 1 : Enable TP2_0 on PD1 TP2_1CCRA/CCRP 匹配輸出管腳T2CP11 : 使能TP2功能0 : I/O 功能或者其他功能TP21PS0 : Enable TP2_1 on PC4 1 : Enable TP2_1 on PD4在輸入捕捉模式中,計數器由CCRP 匹配清除為零。

如何使用HT66F40 CTM Timer功能

如何使用HT66F40 CTM Timer功能

如何使用HT66F40 CTM Timer 功能 文件编码文件编码::HA0237S简介HT66Fx0系列MCU 提供了一个新的功能单元TM ,即Timer Modules ,集成了Timer 和PWM 的功能,提供包括普通Timer 定时、外部计数、可编程Duty/Period PWM 输出或单脉冲输出、输入捕捉等丰富的功能。

TM 依据功能可分为简易型TM(CTM)、标准型TM(STM)和增强型TM(ETM)。

本文即以HT66F40为母体,通过具体范例说明CTM 中TIMER 的使用。

工作原理CTM 的核心是一个向上计数的10位计数器和两个比较器,具体结构如下图标:简易型TM 方框图注意:本范例中的n=0计数器的时钟源可以通过设定T0CK0~T0CK2选择为f SYS /4、f SYS 、f H /16、f H /64、f TBC 或者为TCK0输入。

两个内部比较器:CCRP 即T0RP 和CCRA 即TM0A ,用于设定比较基准值,CCRP 有3位宽,只对计数器的高3位进行比较,而CCRA 的位数和计数器一样,可以跟计数器比较所有的位。

当设定好相关的寄存器CTM 开始运行后计数器向上计数,系统会将预先写入CCRA 的值与计数器中的值进行比较。

计数器在计数溢出或者与设定CCRA 的值相等时,可以自动清除为零并产生一个中断信号,同时系统会根据程序设定产生相应的输出信号。

计数器中TM0DH/TM0DL 的值无法改变,但是可以读出,只能通过设定T0ON 位由0→1才能清除为零计数器。

T0POL 可以对TP0_0和TP0_1输出逻辑进行控制,当被设定为1,可以强制对TP0_0和TP0_1输出逻辑翻转。

HT66F40输出引脚介绍:引脚功能描述 TMPC0 PRM2 TP0_0 CCRA/CCRP匹配输出引脚T0CP0 1:使能TP0功能 0:I/O 功能或者其它功能 TP00PS 0: 设定TP0_0 on PA0 1: 设定 TP0_0 on PC6 TP0_1CCRA/ CCRP匹配输出引脚 T0CP1 1:使能TP0功能0:I/O 功能或者其它功能 TP01PS 0: 设定TP0_1 on PC5 1: 设定 TP0_1 on PD5 在TIMER 模式中,可通过设定T0CCLR 来选择由CCRP 匹配清除为零还是由CCRA 匹配清除为零计数器。

Timer定时器用法详解

Timer定时器用法详解

Timer定时器用法详解先看API和结论:/**timer总结:Timer timer = new Timer(); //其中会调用this("Timer-" + serialNumber());, 即它以Timer+序列号为该定时器的名字Timer timer = new Timer(String name); //以name作为该定时器的名字Timer timer = new Timer(boolean isDeamon); //是否将此定时器作为守护线程执行Timer timer = new Timer(name, isDeamon); //定时器名字, 是否为守护线程注意:默认无参构造器将会使该线程作为非守护线程, 即使主线程已经停止并销毁, 只要该线程还存在, 则程序不会停止即下面的所有执行的任务, 无论是否是定时还是非定时, 只要主线程一旦结束, 那么该定时器立即同主线程一起销毁以下所有的task都是TimerTask的子类所有time都是Date类型的日期所有delay和period都是long类型的延迟时间, 单位为毫秒timer.schedule(task, time); 在time时间执行task 任务1次timer.schedule(task, delay); 在延迟delay毫秒后执行task任务1次timer.schedule(task, firstTime, period); 在firsttime时间执行task1次,之后定期period毫秒时间执行task, 时间如果为过去时间, 不会执行过去没有执行的任务, 但是会马上执行timer.schedule(task, delay, period); 在延迟delay后执行task1次,之后定期period毫秒时间执行task, 时间如果为过去时间, 不会执行过去没有执行的任务, 但是会马上执行timer.scheduleAtFixedRate(task, firstTime, period); 在firstTime时间执行task一次, 以后每隔period毫秒执行1次, 时间如果为过去时间, 会执行过去没有执行的任务, 但是会马上执行timer.scheduleAtFixedRate(task, delay, period); 在delay毫秒后执行task一次, 以后每隔period毫秒执行1次, 时间如果为过去时间, 会执行过去没有执行的任务, 但是会马上执行区别:test4();timer.schedule(task, firstTime, period);timer.scheduleAtFixedRate(task, firstTime, period);从test4运行结果可以看到, 如果开始时间在过去, 则schedule会表现出只从当前时间开始,scheduleAtFixedRate会把之前没有来得及执行的任务全都执行, 感觉像之前一直有在执行一样区别: test5()timer.schedule(task, time);timer.schedule(task, delay);其中, 如果time时间为过去时间, 则该任务会马上执行, 如果为将来时间, 则会等待时间到来再执行如果传入的是delay, 则delay不可以为负数, 负数报错, 正数代表未来的delay毫秒以后执行小结:时间如果为过去时间, 则所有scheduke和scheduleAtFixedRate都会立即执行并且scheduke不会执行过去的任务, 而scheduleAtFixedRate则会把过去的任务全都执行, 即按照固定时间执行一样isDeamon决定是否该Timer以守护线程存在timer.purge();先看英文描述:Removes all cancelled tasks from this timer's task queue. Calling this method has no effect on the behavior of the timer, but eliminates the references to the cancelled tasks from the queue. If there are no external references to these tasks, they become eligible for garbage collection.Most programs will have no need to call this method. It is designed for use by the rare application that cancels a large number of tasks. Calling this method trades time for space: the runtime of the method may be proportional to n + c log n, where n is the number of tasks in the queue and c is the number of cancelled tasks.Note that it is permissible to call this method from within a a task scheduled on this timer.Returns:the number of tasks removed from the queue.Since:1.5即purge();对实际的timer的任务执行不会有影响, 它仅仅只会移除所有被取消的任务队列的引用以方便垃圾回收, 通常不用调用此方法, 只有任务数非常多(n + c log n)的时候, 可以调用此方法以时间换取空间.timer.cancel();Terminates this timer, discarding any currently scheduledtasks. Does not interfere with a currently executing task (if it exists). Once a timer has been terminated, its execution thread terminates gracefully, and no more tasks may be scheduled on it.Note that calling this method from within the run method of a timer task that was invoked by this timer absolutely guarantees that the ongoing task execution is the last task execution that will ever be performed by this timer.This method may be called repeatedly; the second and subsequent calls have no effect.即cancel();停止该timer, 并且丢弃所有绑定的任务, 但不干预当前正在执行的任务。

切换各种工作模式的范例,有正常模式、低速模式、休眠模

切换各种工作模式的范例,有正常模式、低速模式、休眠模

序号目录子目录程序说明程序语言类型1001-HT66F002范例程序01-STM CAPTURE 使用标准型TM捕捉脉冲输入范例 C V201-IOIO 输入、输出的演示范例 C V202-EEPROM EEPROM 读写演示范例C V203-STM PWM 使用标准型TM 产生PWM 范例 C V204-PTM PWM 使用周期型TM 产生PWM 范例 C V205-ADC Int使用中断方式读取ADC 值范例 C V206-ADC polling使用查询方式读取ADC 值范例C V207-power mode切换各种工作模式的范例,有正常模式、低速模式、休眠模式0、休眠模式1、空闲模式0、空闲模式1C V208-STM CAPTURE 使用标准型TM捕捉脉冲输入范例 C V209-RAM RAM的读写范例ASM 10-ROM TABLE ROM 表格的读取范例ASM 01-IO IO输入、输出的演示范例 C V302-EEPROM EEPROM读写演示范例 C V303-TM PWM 简易型TM产生PWM范例 C V304-STM Int 标准型TM产生定时中断的范例C V305-STM PWM标准型TM 产生PWM 范例 C V306-PTM PWM周期型TM 产生PWM 范例 C V307-ADC Int使用中断方式读取ADC 值范例 C V308-ADC polling使用查询方式读取ADC 值范例 C V309-power mode切换各种工作模式的范例,有正常模式、低速模式、休眠模式0、休眠模式1、空闲模式0、空闲模式1C V310-RAM汇编语言进行两个RAM BANK 中RAM 的读写范例ASM 11-ROM TABLE汇编语言进行ROM 中表格读取的范例,做显示查表一般会用到ASM 4004-HT66F0185范例程序01-EEPROM-ADC-SLEEP读写EEPROM,读取ADC,设定timer计时,进入睡眠低功耗范例程序。

下如图构结其

下如图构结其

HT47R20A-1定時/計數器(Timer/Event Counter)使用介紹 文件編碼:HA0031T簡介本文主要介紹HT47R20A-1定時/計數器(Timer/Event Counter)的使用及注意事項。

HT47R20A-1有一個16位元向上計數的定時/計數器,由TMRAH、TMRAL和TMRBH、TMRBL組成。

其中TMRAH、TMRAL用來計數;TMRBH、TMRBL是載入暫存器,用來存放定時/計數器的初值。

定時/計數器賦初值時要先寫入低位元組,再寫入高位元組,即先寫入1TMRC爲定時/計數器的控制暫存器,用來定義定時/計數器的運行模式、計數致能/禁能以及觸發方式,如下表所示:名稱 位元 功能說明— 0~2 未定義,讀取時爲″0″TE 3 定義定時/計數器TMR作用緣(0=上升緣作用, 1=下降緣作用)TON 4 致能/禁能計時器計數(0=禁能, 1=致能)TM0 TM1 TM2 567定義操作方式(TM2, TM1, TM0)000=計時器模式(系統時鐘)001=計時器模式(系統時鐘/4)010=計時器模式(RTC輸出)011=A/D計數模式(由ADCR暫存器決定RC振盪)100=計數器模式(外部時鐘)101=脈衝寬度測量模式(系統時鐘/4)110=未定義111=未定義TM0、TM1和TM2用來定義計數模式。

其中計時器模式用來計數內部時鐘,其時鐘來源爲內部時鐘;計數器模式用來計數外部事件,其時鐘來源爲外部TMR引腳的輸入;A/D計數模式是用來計數外部A/D輸入(關於A/D轉換的使用在此不做詳細介紹);脈衝寬度測量模式能夠對外部引腳TMR的高準位或低準位的持續時間進行計數,計數的時鐘來源爲指令時鐘。

在計時器模式、A/D計數模式或計數器模式下,一旦定時/計數器開始計數即從定時/計數器的現有值(TMRAH和TMRAL)開始計數至FFFFH。

若發生溢位,計數器即從定時/計數器載入暫存器(TMRBH和TMRBL)重新裝入載入值,並同時設定位元中斷請求旗標(TF;INTC1的第四位元)。

HT66F2730美音应用范例

HT66F2730美音应用范例
HT66F2730 美音应用范例
HT66F2730 美音应用范例
文件编码:AN0509S
简介
HT66F2730 具有 10 路 HVIO(High Voltage I/O Ports),提供 12V 驱动能力,本身更提供 4 通道 12 位 A/D 转换器,1 个 5V LDO 输出,提供小家电显示板当作电源,在电路设计上可省掉外 部高压驱动零件及 LDO,让 PCB 上的零件更精简,PCB 面积可以缩小。
项目
操作内容
1 系统频率
2 开门狗设定
寄存器 SMOD
WDTC
设定/读取位 HLCLK WE[4:0] WS[2:0]
功能描述 HLCLK=1,时钟源设定为 fH WE[4:0]=01010B,Enable WDT WS[2:0]=111B,WDT 溢位周期=218/fSUB
1. 电容充电时,PC1 输出 High 信号。
2. 电容放电时,PC1 输出 Floating 信号,由电容及二个电阻连接到 PC0,当 PC0 输出 Low 信号时进行放电。
AN0509S V1.00
1 / 18
January 23, 2019
HT66F2730 美音应用范例
PC0 在输出低准位时设为高压输出(输出 Low),在输出高准位时设为浮空。因此音频端的电 压会随着电容的充放电而改变,在放电时,会发出具有衰减效果的音乐声。 如下图,PC0 & PC1 输出控制信号:
7 STPAU STM1
D7 - D7 -
6 STCK2 STM0
D6 - D6 -
5 STCK1 STIO1
D5 - D5 -
Bit
4
3
STCK0 STON
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何使用HT66F40 CTM Timer 功能 文件编码文件编码::HA0237S
简介
HT66Fx0系列MCU 提供了一个新的功能单元TM ,即Timer Modules ,集成了Timer 和PWM 的功能,提供包括普通Timer 定时、外部计数、可编程Duty/Period PWM 输出或单脉冲输出、输入捕捉等丰富的功能。

TM 依据功能可分为简易型TM(CTM)、标准型TM(STM)和增强型TM(ETM)。

本文即以HT66F40为母体,通过具体范例说明CTM 中TIMER 的使用。

工作原理
CTM 的核心是一个向上计数的10位计数器和两个比较器,具体结构如下图标:
简易型TM 方框图
注意:本范例中的n=0
计数器的时钟源可以通过设定T0CK0~T0CK2选择为f SYS /4、f SYS 、f H /16、f H /64、f TBC 或者为TCK0输入。

两个内部比较器:CCRP 即T0RP 和CCRA 即TM0A ,用于设定比较基准值,CCRP 有3位宽,只对计数器的高3位进行比较,而CCRA 的位数和计数器一样,可以跟计数器比较所有的位。

当设定好相关的寄存器CTM 开始运行后计数器向上计数,系统会将预先写入CCRA 的值与计数器中的值进行比较。

计数器在计数溢出或者与设定CCRA 的值相等时,可以自动清除为零并产生一个中断信号,同时系统会根据程序设定产生相应的输出信号。

计数器中TM0DH/TM0DL 的值无法改变,但是可以读出,只能通过设定T0ON 位由0→1才能清除为零计数器。

T0POL 可以对TP0_0和TP0_1输出逻辑进行控制,当被设定为1,可以强制对TP0_0和TP0_1输出逻辑翻转。

HT66F40输出引脚介绍:
引脚
功能描述 TMPC0 PRM2 TP0_0 CCRA/CCRP
匹配输出引脚
T0CP0 1:使能TP0功能 0:I/O 功能或者其它功能 TP00PS 0: 设定TP0_0 on PA0 1: 设定 TP0_0 on PC6 TP0_1
CCRA/ CCRP
匹配输出引脚 T0CP1 1:使能TP0功能
0:I/O 功能或者其它功能 TP01PS 0: 设定TP0_1 on PC5 1: 设定 TP0_1 on PD5 在TIMER 模式中,可通过设定T0CCLR 来选择由CCRP 匹配清除为零还是由CCRA 匹配清除为零计数器。

当T0CCLR 设定为1,T0ON 位由0→1时主定时器开始计数,当主计数器与CCRA 发生匹配时,T0AF 中断标志位设定为1。

若相应的中断使能,程序将进入相应的中断服务程序。

当T0CCLR 设为0,T0ON 位由0→1时主定时器开始计,当主计数器与CCRP 发生匹配时,T0PF 中断标志位设定为1。

若相应的中断使能,程序将进入相应的中断服务程序。

注意,由于CCRP 和CCRA 匹配中断的入口位置一样,需要在进入中断服务程序后,通过判断T0AF 和T0PF 来区分是CCRA 还是CCRP 匹配中断。

T0AF ,T0PF 都不会自动清零,需要在中断程序中,软件清零。

否则不能响应下次中断。

Timer Mode 模式时序图:
注意:上图为n=0,T0CCLR=1的时序图
在Timer Mode 中,CTM O/P Pin 无作用。

CTM 工作在Timer Mode 可以用来做为定时器且比较匹配模式很相似,但CTM 工作在Timer Mode 没有输出口信号。

CTM 工作在Timer 模式其设定步骤如下表:
步骤 操作内容 寄存器 设定位 功能描述 1 设定时钟源 TM0C0 T0CK0~ T0CK2 选择CTM 的时钟源 TM0AH / TM0AL 所有的位 2 设定CCRA ,CCRP 寄存器值 TM0C0 T0RP0 ~ T0RP2 设定比较寄存器 3 选择CCRA 或者CCRP 比较 TM0C1 T0CCLR: 0:CCRP 比较 1:CCRA 比较 选择CCRA 还是CCRP 重置计数器 4 设定TP0的输出功能 TM0C1 T0IO1 / T0IO0 00 : 无作用 01:无作用 10:无作用 11:无作用 TP0当作普通I/O 口使用 5 设定SM 工作模式 TM0C1 T0M1, T0M0=11 “11”为CTM 工作在在Timer Mode INTC1 MF0E 6 设定中断允许位 MFI0 T0AE, T0PE 使能CTM 和多个功能的中断 7 开启CTM TM0C0 T0ON 0→1 重置计数器,并CTM 开始工作 T0PAU 0→1 CTM 暂停工作,计数器值保持不变 8 CTM 停止功能 TM0C0 T0ON 1→0 CTM 停止工作,计数器内容不变
应用电路
说明:
CTM 工作在Timer Mode 时,无直接输出口。

Pulse Output (PC 口)为应用举例中,为了让应用开发者清楚,将定时时间通过翻转PC 口输出。

流程图流程图((范例1)
程序范例
程序范例((范例1)
范例1程序详细档案Timer1.zip 。

注:以上程序为T0CCLR=1,主计数与CCRA 进行匹配定时模式。

实际输出波形图及说明。

注:上图为T0CCLR=1,主计数与CCRA 进行匹配定时模式。

S/W Flowchart (范例2)
注:上图流程为T0CCLR=0, 主计数与CCRP 进行匹配定时模式。

程序说明程序说明((范例2)
本范例是使用CTM 的Timer 定时程序,通过CTM
的CCRP 匹配中断翻转I/O 的方式将定时时间宽度输出,以达到定时的目的。

主程序流程介绍:程序首先所使用到的数据储存器清除为零初始化。

对CP0C ,CP1C 赋值08H ,关闭比较器功能。

对ACERL 和SCOMEN 清除为零,关闭A/D 转换输入功能和LCD 功能。

PC 端口设定为输出模式,用以输出定时时间的宽度。

TM0C0[6:4]=000为选择CTM 的时钟源为f SYS /4,TM0C1 [7:6]=11为CTM 工作在Timer Mode ,TM0C1 [0]=0即T0CCLR =0为CCRP 与主计数进行匹配,TM0C0[2:0]=100为512us 溢出,T0ON=1为开启CTM Timer ,最后再开启相关中断标志位,程序进去死循环,等待定时溢出。

CTM 中断服务程序:在CTM 的中断服务程序中,首先清除CCRP 匹配中断标志位,然后翻转PC 口,中断返回。

程序范例程序范例((范例2)
范例2程序详细档案Timer2.zip 。

注:以上程序为T0CCLR=0,主计数与CCRP 进行匹配定时模式。

实际输出波形图及说明。

注:以上程序为T0CCLR=0,主计数与CCRP 进行匹配定时模式。

结论
本文通过上面CTM Timer Mode 的应用实例,对CTM Timer Mode 的运用进行了阐述,使用者可根据具体情况来产生定时时间等。

相关文档
最新文档