基本数据 功能说明 应用说明 注意事项 其它

基本数据

 

Question 1

看门狗定时器WDT的溢出时间为多少?

Answer

看门狗定时器的的时钟来源有两种,看门狗振荡器或指令时钟,由光罩选项设置。
在5V电压4M系统频率的工作条件下,用看门狗振荡器时钟源,溢出时间为(256/4)x 256 = 16384uS,约为17mS,若再设定WDT的分频级数为1:128,则溢出时间为16384 x 128 = 2097152uS,约为2.1S。
若用的时钟源是指令时钟,溢出时间为(4/4)x 256 = 256uS,同样设定WDT的分频级数为1:128,则溢出时间也只有256 x 128 = 32768uS。


Question 2

LVR 工作时和RES PIN 拉低有何区别?

Answer

区别在于:当低电压重置电压>Vdd>最小工作电压时,
若使能LVR,则OSC起振;
若让RES PIN 拉低,则OSC停振。


Question 3

HT45R38的A/D可测电压精度是多少?

Answer

HT45R38的A/D是12位的,即A/D的满量程是0FFFH(十六进制数),也就是4095,包括0点在内,即一共可测4095+1=4096个点。在5V的工作电压下,它能检测的电压精度是(5/4095)V, 约为1.2mV;在其它的允许工作电压下,可检测的精度同样照以上计算方式计算:工作电压值/4095。


Question 4

HT45R35和HT45R34都提供12通道的仿真开关RC1-RC12,其控制打开与关闭的方法有差异吗?

Answer

有。HT45R34是通过寄存器ASCR来控制的,菜单格如下:

而HT45R35是通过两个寄存器来控制的,它们是ASCR0和ASCR1,菜单格如下:

另外,HT45R35比HT45R34还多出了另一重设定,每个通道可以选择是否要连接下拉,由寄存器ASCR2控制(见下图),HT45R34则没有下拉。


功能说明

 

Question 1

HT45R36的16个电容/电阻型传感器输入通道如何切换?

Answer

HT45R36提供16个电容/电阻型传感器的输入通道RC1~RC16,信道的切换由缓存器ASCR(1AH)来控制。
对ASCR写入00000b~01111b 16个不同的值,分别对应打开RC1~RC16这16个输入通道,同一时刻只能打开一个通道,
其它则关闭,写入1xxxxb时所有通道关闭,外部RC振荡器关闭。


Question 2

如何存取HT45R36的数据缓存器(RAM)的两个Bank(Bank0和Bank1)?

Answer

存取Bank0或Bank1的通用数据缓存器时,必须设置存储区指针BP值为“00H”或“01H”,来选择正确的数据存储区。
同时,Bank1内数据必须通过间接寻址指针MP1和间接寻址缓存器IAR1来存取;任何直接寻址或通过MP0和IAR0间接寻址将存取Bank0内数据。 而特殊功能缓存器不受BP的影响,不论在Bank0还是Bank1内都能对特殊功能缓存器进行操作。


Question 3

HT45R38 PWM提供 (6+2) ,(7+1) 两种Mode选择,有何作用?

Answer

在系统频率一定的条件下,可以通过选择PWM(6+2) ,(7+1) Mode来设定PWM频率。PWM (6+2) Mode是将PWM的值分成4次送出,即每64个时钟送出PWM/4, 其PWM频率为 fSYS/64。PWM (7+1) Mode是将PWM的值分成2次送出,即每128个时钟送出PWM/2,其PWM频率为 fSYS/128。


Question 4

HT45RXX 中的TIMERA和TIMERB设置初值的注意事项 .

Answer

在每次R/C-F转换后,我们都必须对TIMERA和TIMERB进行初始化动作,否则就不能获得我们想要之转换数值。因每次转换(计数)结束后它们的数值一般都会改


Question 5

HT45R3X系列MCU中,Timer B是如何工作的?

Answer

控制Timer B工作与三个缓存器有关,分别是ASCR、RCOCCR和RCOCR缓存器。首先设定ASON(ASCR.0~4)位选定一个仿真信道,并定义外部RC振荡模式(RCOCR.1=1),OVB(RCOCR.0)用于定义Timer A还是Timer B溢出产生中断(OVB=0/1,对应Timer A/Timer B溢出),一旦RCOCON置位(RCOCCR.4=1), Timer B便开始计数直至Timer A/Timer B溢出,并置位相应中断请求旗标RCOCF(INTC1.4=1),此时RCOCON位自动清零,Timer B停止计数。


Question 6

HT45R35中RC通道的Pull-Low是如何控制和动作的?

Answer

HT45R35中RC通道的Pull-Low的ON和OFF受ASCR0,ASCR1,ASCR2控制,但是ASCR0,ASCR1比ASCR2的控制优先级更高,即当ASCR0,ASCR1中对应的某个RC通道ON时,不管ASCR2中对应该通道的Pull-Low是ON或OFF都失效,即该通道的Pull-Low都是断开的,只有当ASCR0,ASCR1中对应的某个RC通道OFF时,此时ASCR2中对应该信道的位才决定Pull-Low的ON或OFF。所以Pull-Low只在RC通道OFF时才可以打开,这样可以通过Pull-Low来使RC通道接地,释放RC通道的残留电荷,使得每次RC信道打开时信道都是处于零电位状态,这样消除了RC通道的残留电荷对RC振荡器频率的影响,提高了RC振荡器频率稳定度。


Question 7

上电重置,RESET重置与LVR重置后,RAM变化有何异同?

Answer

一般MCU的上电重置,其特殊缓存器会被初始化(初始化值可参考datasheet),而通用缓存器的值是随机数。 而RESET重置,其特殊缓存器会被重新初始化,而通用缓存器的值保持不变。 LVR重置与外部RESET信号重置有相同的效果,但需注意LVR低电压状态要持续tLVR以上。(tLVR时间请参考datasheet)


应用说明

 

Question 1

HT45R36的C/R-F模块如何实现Touch Switch(电容式)的功能?

Answer

HT45R36包含了一个C/R-F模块,它的核心是一个RC振荡器,当改变振荡器外部的等效电阻或是等效电容时,振荡器的输出频率就会改变。可以利用人体电容效应改变C/R-F电路中电容的容量,进而改变其振荡频率,通过检测频率的改变大小即可检测出Touch Switch(电容式)是否被按下。实际程序并不需要计算出频率值,只要计算在相同的Timer A定时时间内,参考频率下(Touch Switch off)Timer B Count的值与实时的Timer B Count的值之间的差值,当差值达到了事先设定的Sensitivity值,即认为Touch Switch被按下。
HT45R36提供了16个C/R sensor 输入通道(RC1~RC16)和信道译码器,程序可通过改变ASCR寄存器的值(00H~0FH)轮流打开TG1~TG16,对RC1~RC16 Pin 连接的Touch Switch的状态进行多信道扫描。


Question 2

RC1~RC16中没有用到的通道该如何处理?

Answer

RC1~RC16为电阻/电容型传感器输入通道,由于同一时刻只会有一个通道打开连接到内部的RC振荡器,没有用到的通道不会影响到其它的输入通道, 未用到的信道在硬件处理上将其悬空即可,在软件控制上注意不要将此通道打开。


Question 3

采用HT45R34/HT45R36做Touch Switch,RC Pin到Touch Switch的走线有何要求?

Answer

由MCU的RC PIN到Touch Switch的联机,要尽量的短,尽量远离其它走线或组件,线宽尽量窄(在7~10mil之间为佳),以提高抗干扰的能力。


Question 4

用下面的指令读取TMRAH和TMRAL的内容﹐读取内容有错﹒mov A,TMRAL
mov a_CapK04_H,A
mov A,TMRAH
mov a_CapK04_L,A

注﹕a_CapK04_H和a_CapK04_L是客户自定义RAM

Answer

1)在读取TMRAH和TMRAL的内容必须先Highbyte后Lowbyte﹐即先读TMRAH再读TMRAL﹒而写的时候反之﹐先L后H﹒
2)在规格书的P14-15页有详细描述﹒

Question 5

如何增快HT45R36 C/R-F 扫瞄TOUCH-KEY的速度?

Answer

根据Timer A 计时单位时间内(EX:5ms)Timer B 计数个数的变化来判断按键是否被按下。
改进的方式为根据Timer B 单位计数个数(EX:60次)Timer A 计时时间长短的变化来判断按键是否被按下。


Question 6

如何增快HT45R34 C/R-F 扫瞄TOUCH-KEY的速度?

Answer

根据Timer A 计时单位时间内(EX:5ms)Timer B 计数个数的变化来判断按键是否被按下。
改进的方式为根据 Timer B 单位计数个数(EX:60次)Timer A 计时时间长短的变化来判断按键是否被按下。


Question 7

如何增快HT45R38 C/R-F 扫瞄TOUCH-KEY的速度?

Answer

根据Timer A 计时单位时间内(EX:5ms)Timer B 计数个数的变化来判断按键是否被按下。
改进的方式为根据 Timer B 单位计数个数(EX:60次)timer A计时时间长短的变化来判断按键是否被按下。


Question 8

于HT45R34中的PCB布线,如何增进按键的稳定性及其它干扰?

Answer

CREF, RREF, IN, RCOUT引出脚要短,RC模块这一部分电路应尽量靠近MCU,走线可以为10~30mil间; RC1~RC12 Pin线径要尽量短、细(进议7~8mil 左右,以10mil为限),其间之VIA&PAD尽可能量小,各个KEY到RC Pin的联机长度要尽量一致; RC1~RC12 Pin的走线建议远离其它组件和其它走线,尤其注意通讯线,尽可能避离;PCB铺VSS网络,至少要将与Touch switch有关区域布上VSS地网, RC1~RC12 Pin的线径间尽量以VSS隔离。


Question 9

HT45R34/HT45R36/HT45R38 中RC模块的震荡频率如何选择较为适宜?

Answer

RC模块的震荡频率可以降低到500kHz以内(CREF接10p电容,Default频率值为500kHz,尽可能不要超过这个频率),抗干扰能力也会增强。


Question 10

触摸按键的形状有哪些?

Answer

触摸按键形状可以为圆形、方形、三角形等(实心型),抑可以线条构成此类图形(镂空型),前者可应用于覆盖板较厚的情况,后者则可应用于覆盖板较薄的情况下。


Question 11

制作触摸按键可用哪些材质?

Answer

制作触摸按键可用的材质为:PCB、 柔性线路板、镀膜导电玻璃。其中PCB为最常用的材质,成本较低;柔性线路板可用于做弯曲造型,可使用背光; 镀膜导电玻璃应用于显示屏幕,可与用户界面结合,但成本较高。


Question 12

触摸按键表面覆盖板的材料有何要求?

Answer

覆盖板为一些耐用,易安装的绝缘材料,介电常数在3~10之间,例如普通玻璃、压克力、微晶板等。覆盖板的介电常数越小,触摸按键的感应范围越小。 安装要求覆盖板紧贴触摸按键的表面,用粘胶将其贴在触摸按键的表面(排掉它们之间的空气)则效果更佳。
 


Question 13

触摸按键表面覆盖板的厚度有何要求?

Answer

覆盖板的厚度一般为1mm~5mm,厚度越大触摸按键的感应变化量越小,信噪比也越低。触摸按键的面积越小,其感应的范围越小,覆盖板要求越薄。


Question 14

触摸按键的工作原理是什么?

Answer

它的工作原理是当手指靠近触摸按键时,手指与触摸按键形成一个电容(大约几pf),从而改变了C/R-F振荡器的时间常数RC,从而改变振荡器的频率。通过检测振荡器频率的变化就能感知触摸按键是否被按下。


Question 15

电容式触摸按键的面积大小有何要求?

Answer

以圆形的触摸按键为例,建议其直径不可小于5mm。


Question 16

C/R type MCU 的多个 C/R to F转换口可否同时打开?

Answer

不可以。但可以通过轮换的方法打开它们,并采用查询或中断方式依此读取它们之数值。


Question 17

可否用HT45RXX实现大于最大RC信道个数的触摸按键功能?

Answer

可以。可以使用矩阵式的触摸按键排列,方法如下:
如图所示,RCa与RCb交汇处即表示触摸按键。假设此时MCU设置为Timer A溢出产生中断信号,则当RCa信道打开,Timer A计数溢出后,Timer B计数值变化量超出一定基准,且当RCb通道打开,Timer A计数溢出后,Timer B计数值变化量也超出一定基准时,即表示此触摸按键被触摸。
同理对于Timer B溢出产生中断信号,Timer A计数值发生变化的情况。通过此方式可实现更多的触摸按键功能,如HT45R36即可实现8X8=64个触摸按键的输入


Question 18

用C/R-F Type MCU实现滑条式输入的PCB layout应注意哪些问题?

Answer

PCB layout 示意图如附图所示(注:此图仅为示意图,并非真正的PCB layout图)。

1、用多个RC通道,一一对应一个触摸感应区;
2、各个触摸区域大小要一致,以保证被触摸到时变化量基本一致;
3、各触摸感应区应尽量靠得紧凑,但应保证两感应区之间能铺上VSS网络;
4、感应区形状可视情况而定(建议用如图所示的锯齿形状)。
(注:图中RCa~RCf表示RC引脚,分别对应一个锯齿状的触摸感应区,绿色表示VSS网络)


Question 19

用C/R-F Type MCU实现滑条式输入的软件流程是怎样的?

Answer

主要思路如下:
The following points should be considered:
以扫描一遍所有RC信道当作基本单位;
1、当初次扫描到有触摸区域被触摸时,当作触摸动作的开始,将此触摸区域对应的标号写入buffer;
2、下一轮扫描到的被触摸区域如果较前一次未变,则buffer内容不变;如果紧邻前一次的被触摸区域,则进行滑条的相关动作,并将此次被感应区域的标号写入buffer以更新buffer信息;
如被触摸区域是其它区域,则忽略该动作并清空buffer信息;
3、同时,如果一定时间内(例如0.5秒或更短时间)没有感应到触摸动作,则也应清空buffer。
4、然后重复以上动作,依此类推。
如流程图所示 :

(注:get_key()函数扫描一遍所有RC信道,当没有触摸动作时返回NULL,当仅有一个RC信道被扫描到有触摸动作时返回此信道对应的ASCR缓存器值,其它情况返回FALSE;
add(1)/sub(1)表示相关数据做加/减1动作;tmr_count表示一个时间量,用于定时更新基准值)


Question 20
 

HT45R3X系列触摸按键功能在仿真器上调试通过,烧录到IC中后按键不能被感应?

Answer

该问题主要是由于触摸按键各信道在仿真器上和在IC中线路不一样,由此造成在仿真器上按键的感应差值与在IC中按键的感应差值不一样,因此在仿真器上调试通过并不代表在IC中按键就一定能被感应到,需要确定一个合理的感应值直到所有的按键都能被感应到。
确定感应差值的最有效途径:如果客户PCB板具备数字显示功能,只需要编写一段程序将各信道的感应差值显示出来,最后将此感应差值烧录到IC中。如果客户PCB板不具备数字显示功能,可以通过搭建显示电路的方式将各信道的感应差值显示出来,也可以借助于《触摸按键测试工具Demo Board介绍》(参考本网站,文件编号为HA0145)一文中提到的开发工具确定感应值。
 


Question 21

Timer A/Timer B溢出后必须马上读取其计数值吗?

Answer

不需要。因Timer A/Timer B溢出后,Timer A/Timer B停止计数,RCOCON位自动清除为零,即在Timer A/Timer B不重新启动计数的情况下,Timer A/Timer B的计数值会一直保持不变, 所以在Timer A/Timer B溢出后任何时间都可以读取其计数值。


Question 22

C/R-F type MCU做触摸按键时设置灵敏度的一般方法是什么?

Answer

以Timer B计数溢出读取Timer A的值为例。
1、读取基准值,即所有按键均无触摸动作时各RC通道对应的Timer A的值,设值为A1~An
2、读取相应RC信道按键有触摸动作时,其对应的Timer A的值,设值为Bn。例如读取RC3对应按键有触摸时Timer A的计数值B3
3、读取某按键周围其它按键有触摸动作时,此按键受到干扰或间接被感应到时的Timer A的最大值,设值为Cn。例如RC4对应按键与RC3对应按键相邻,RC4有触摸动作,此时RC3通道打开时其Timer A的计数值C3。
4、给出判断相应按键触摸与否的值Dn_min,Dn_max,应满足Dn_max >(Bn- An) >Dn_min>(Cn- An),通过调整Dn_min的大小可以调整相应按键的灵敏度。
由于仿真器本身与实际芯片之间存在一定的差异性,以及在RC通道的引线长度、粗细等与实际PCB板有差异,所以仿真器仅仅能调试相关功能,得到的灵敏度等数据和实际情况却不尽相同。最终所用的灵敏度最好由实际芯片及PCB板测得。以上数据的获得可以通过一些辅助工具和测试程序在实际的PCB板上得到。


Question 23

没有PUSH和POP指令,进入中断时数据要如何备份?

Answer

虽然没有PUSH和POP指令,工程师仍可指定专用的RAM BYTE储存中断时会被破坏的数据。首先将ACC存入专用内存,然后利用ACC依次将STATUS和其它需要保护的数据转移到各自的专用内存中。在中断返回前,再反序地将备份数据,STATUS和ACC回存,最后再执行RETI返回主程序。
譬如:如下等同PUSH作用:
MOV R_AccStack, A
MOV A, STATUS
MOV R_StatusStack, A
MOV A, MP0
MOV R_MP0Stack, A
MOV A, MP1 ;如果有MP1的话,或者是其它需要保护的数据
MOV R_MP1Stack, A

如下等同POP作用:

MOV A, R_MP1Stack ;如果有MP1的话,或者是其它备份数据
MOV MP1, A
MOV A, R_MP0Stack
MOV MP0, A
MOV A, R_StatusStack
MOV STATUS, A
MOV A, R_AccStack
RETI
(以上R_AccStack,R_StatusStack,R_MP0Stack,R_MP1Stack是工程师自行指定的专用RAM BYTE。)


Question 24

HT45R3x系列如何确认按键有效按下,具体流程如何?

Answer

系列确认按键有效按下的过程是:对所有信道扫描一遍得到一个按键值,为了消除干扰,建议对所有信道再扫描几遍,如果这几遍都检测到为同一按键,就确认该按键被有效按下。本例中以对所有信道扫描四遍为例(具体扫描几遍可根据实际情况调整),具体流程图如下:

 


注意事项

 

Question 1

在HT45系列中设置定时器A溢出作为R-F转换结束旗标,发现定时器 A溢出之前定时器B已经溢出,导致数据处理出错。如何避免这种情况出现?

Answer

当定时器A溢出作为R-F转换结束旗标,要保证在定时器A溢出之前定时器B不要溢出,否则资料无效。用户可以通过设置减小定时器A溢出值或适当增大CREF确保定时器B在定时器A溢出之前不溢出。


Question 2

在用C语言设置16位定时器TMRA时,设置为:_TMRAL=(65536-COUNT)%256;_TMRAH=(65536-COUNT)/256;编译时会出现警告,为什么?

Answer

用C语言设置16位timer初值,若写成以下形式:_TMRAL=(65536-COUNT)%256;_TMRAH=(65536-COUNT)/256;编译时会有overflow in constant '65536'的警告。
因为‘65536’已经超出了16位的范围,应该修改为:_TMRAL=(65535-COUNT+1)%256;_TMRAH=(65535-COUNT+1)/256;便可以消除警告了。


Question 3

如何正确对TMRAH/ TMRBH,TMRAL/ TMRBL进行写操作?

Answer

在对TMRAH/ TMRBH,TMRAL/ TMRBL写值时,必须执行以下动作设定:
1.关闭外部RC振荡器计数(RCOCON=0)
2.打开RC振荡器 (RCO=1)
3.写值时必需先写Low Byte然后High Byte (先写TMRAL/TMRBL后写TMRAH/TMRBH)
以上三点任何一点设置错误,都无法正确对TMRAH/ TMRBH,TMRAL/ TMRBL有效写值。


Question 4

在使用20PIN封装 ht45r35 的RC通道时,应特别注意哪些?

Answer

由于脚位RC3、RC4、RC9、RC10都分别同时和 PA、PB 口复用,所以如用到此4个 RC 通道,除了应在 Configuration Option 中设置其为RC Input外,还应在程序中设置其复用的 I/O 口同时都为输入模式,否则Timer B将无时钟输入。