|
基本数据
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将无时钟输入。
|