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

基本数据

 

Question 1

HT46 A/D with LCD Type MCU内容如何?

Answer

HT46 A/D with LCD型MCU提供2K、4K及8KROM的OTP Type及Mask Type各一对MCU,编号为HT46R62/HT46C62、HT46R63/HT46C63、HT46R64/HT46C64、HT46R65/HT46C65总共8颗IC,规格功能请参考Holtek Data Sheet。


Question 2

HT46X63及HT46X6X功能有何不同?

Answer

Part No. VDD System
Clock
Program
Memory
Data
Memory
I/O LCD Timer Interrupt A/D PWM PFD UART Stack Package
8-bit 16-bit RTC Ext. Int.
HT46R62
HT46C62*
2.2V~
5.5V
400kHz~
8MHz or
32768Hz
2Kx14 88x8 20 19x4
or
20x3
1 -- v 2 4 9-bitx6 8-bitx3 v -- 6 56SSOP
HT46R63
HT46C63
2.2V~
5.5V
400kHz~
8MHz
4Kx15 208x8 32 19x4
or
20x3
-- 1 v 2 4 8-bitx8 8-bitx4 -- -- 8 56SSOP,
100QFP
HT46R64
HT46C64*
2.2V~
5.5V
400kHz~
8MHz or
32768Hz
4Kx15 192x8 24 32x4
or
33x3
1 1 v 2 5 10-bitx8 8-bitx4 v -- 8 56SSOP,
100QFP
HT46R65
HT46C65*
2.2V~
5.5V
400kHz~
8MHz or
32768Hz
8Kx16 384x8 24 40x4
or
41x3
-- 2 v 2 5 10-bitx8 8-bitx4 v -- 16 56SSOP,
100QFP
HT46R66*
HT46C66*
2.2V~
5.5V
400kHz~
8MHz or
32768Hz
16Kx16 576x8 32 46x4
or
47x3
1 2 v 2 6 12-bitx8 8-bitx4 v v 16 56SSOP,
100QFP

注:细节规格请参考 Holtek Data Sheet。


Question 3

HT46 A/D with LCD Type MCU提供何种类的封装型式?

Answer

HT46R62/HT46C62 : 56SSOP
HT46R63/HT46C63 : 100QFP
HT46R64/HT46C64 : 56SSOP
: 100QFP
HT46R65/HT46C65 : 56SSOP (与HT46R64脚位功能相同,方便客户MCU升级使用)
: 100QFP (与HT46R64脚位功能相同,方便客户MCU升级使用)

注:Mask type MCU同样提供上述相同封装


Question 4

HT46 A/D with LCD Type MCU的工作频率为何?

Answer

在5V、3.3V及3个电池的应用,工作频率达Max. 8MHz (3.3V)。
在3V及2个电池的应用,工作频率达Max. 4MHz (2.2V)。


Question 5

当系统时钟选择RC振荡器时,频率误差为何?

Answer

当系统时钟选择RC振荡器时,由于制程的因素造成的每个批号频率误差为±20%。假如外加电阻之误差为±5%,那么总频率误差就是±25%。

上述的误差范围仅供参考,不予保证,若客户需要精准的频率,请使用RESONATOR或CRYSTAL。


功能说明

 


Question 1

HT46 A/D with LCD Type MCU有何重要功能及特性?

Answer

工作电压范围 2.2V ~ 5.5V 
工业温度规格 -40°C ~ +85°C
高抗噪声能力
Low Voltage Reset功能
OTP / Mask Type MCU相容
其它请参考 Holtek Data Sheet


Question 2

间接寻址如何使用?

Answer

首先将要读写之Data Memory的地址先存入地址指针缓存器 (MP),然后对IAR执行读写 (例如: MOV a, IAR),即可读到MP所指到的Data (MP的内容当地址)。间接寻址功能特别方便于数列 (array) 的处理,一般先将数列地址放入MP做运算后再读取所需的数列Data。


Question 3

查表指令如何使用,有何注意事项?

Answer

查表指令有二种,一种是TABRDC指令,此指令读取目前指令所在表数据,另一种为TABRDL指令,此指令固定读取最后一页表数据。要查表时首先必需将表的Low Address填入TBLP再执行查表指令,表的Low Byte Data将存入指令指定的内存;表的High Byte Data被存入TBLH中,要注意未满16-Bit之表Data高位会补0。


Question 4

HT46 A/D with LCD Type MCU之RTC、WDT和Time Base等三个Timer的时钟源选择?

Answer

HT46 A/D with LCD Type MCU之RTC、WDT和Time Base等三个Timer的时钟源(fS)必需同时选择,且由Configuration Option选择。

当系统频率为RTC OSC时,则RTC、WDT和Time Base之时钟源为RTC OSC,因RTC OSC不受HALT影响,亦即是这是一个不停的时钟源。此时WDT OSC显然多余。为了省电所以将WDT OSC关闭,并将其时钟源固定为RTC OSC。

当系统频率不是RTC OSC时;则时钟源有以下3种:

  1. fSYS/4

  2. RTC OSC

  3. WDT OSC


Question 5

WDT时钟源选用WDT OSC时,看门狗时间如何计算?

Answer

WDT OSC的时钟周期在工作5V时约65µs (32µs~130µs),看门狗时间约为65µs x 212=0.266 Sec.到65µs x 216=4.26Sec.之间。(由WDT configuration option 选择)。


Question 6

WDT Clock Source选择WDT OSC和选择 fSYS/4有何差别?

Answer

WDT Clock Source选择WDT OSC则在系统误入HALT时WDT Timer仍然继续工作,当WDT Time-out可以再启动系统。若选择 fSYS/4则在误入HALT后,则一直沈睡下去无法Wake-up,但选择WDT OSC则需花一些代价 (消耗电流)。在另外一种情形,如果系统正常就有HALT功能,且在HALT时不希望被WDT叫醒,则此时WDT Source可选 fSYS/4。


Question 7

8-Bit TMR值如何设定?

Answer

8-Bit Timer/Counter为一向上数之计数器 (Counter),每当Counter数到255 (0FFH) 溢位0H时产生中断 (Interrupt),所以若要计数为N (N < 256);则TMR值要设定成 256-N,设定好后启动TMR;TMR即从设定值往上数到255溢出到0 (即256),故所得值即256-(256-N)=N。


Question 8

16-Bit TMR值如何设定?

Answer

16-Bit Timer/Counter为一向上数之计数器 (Counter),每当Counter数到65535 (0FFFFH)溢位0H时产生中断 (Interrupt),所以若要计数为N (N < 65536);则TMR值要设定成 65536-N,设定好后启动TMR;TMR即从设定值往上数到65535溢出到0 (即65536),故所得值即65536-(65536-N)=N。


Question 9

16-Bit Timer/Counter的设定和读取顺序?

Answer

HT46 A/D with LCD Type MCU内部Data Bus均为8-Bit,对于16-Bit的数据必需两次才能完成,对16-Bit Timer/Counter的写必需先写Low Byte然后High Byte,而读的顺序必需先读High Byte然后Low Byte。


Question 10

Timer/Counter之Timer Mode如何设定?

Answer

因Timer/Counter有3种模式,即Timer、Event Counter和Pulse Width等3种。

要执行Timer Mode要执行以下动作设定:

  1. 先选定Timer/Counter的时钟源

  2. 设定Timer/Counter为Timer Mode (TM1、TM0=10H)

  3. 设定计数初始值 (TMR)

  4. 开相对应中断致能旗标 (ETI和EMI)

  5. 设定 Timer ON (TMRC.4=1)

当Timer被打开后,Timer开始向上计数,若Timer OFF (TMRC.4=0),则Timer立即停止。下次Timer再ON,则从上次停留值继续往上数,直到满位溢出产生中断,同时Timer 重新加载初始值。


Question 11

Timer/Counter之Event Counter Mode如何设定?

Answer

因Timer/Counter有3种模式,即Timer、Event Counter和Pulse Width等3种。

要执行Event Counter Mode要执行以下动作:

  1. 设定Timer/Counter为Event Counter Mode (TM1、TM0=01H)

  2. 选择TE; TE=1则Count Falling Edge,TE=0则Count Rising Edge

  3. 设定计数初始值 (TMR)

  4. 打开相对应中断致能旗标 (ETI和EMI)

  5. 控制Timer ON (TMRC.4=1)


Question 12

Timer/Counter之Pulse Width Mode如何设定?

Answer

因Timer/Counter有3种模式,即Timer、Event Counter和Pulse Width测量等3种。

要执行Pulse Width Mode要执行以下动作:

  1. 选定Timer/Counter时钟源

  2. 设定Timer/Counter为Pulse Width Measurement Mode (TM1、TM0=11H)

  3. 选择TE; TE=1量High Pulse,TE=0量Low Pulse

  4. 设定TMR计数初始值 (一般设定=0)

  5. 打开相对应中断致能旗标

  6. 打开Timer ON (TMRC.4)

执行完以上步骤,程序可抽空Check TON值,若TON=0表示Pulse Width量度完成。


Question 13

Timer/Counter 0中的时钟源如何选择?

Answer

HT46R63/HT46C63有一个16-bit的Timer,其内部时钟源只有fSYS/4一种。

HT46R62/HT46C62的8-bitTimer/Counter和HT46R64/HT46C64的8-bitTimer/Counter0 以及HT46R65/HT46C65的16-bit Timer/Counter0,其内部时钟源经由PSC2~PSC0的选择可设为fSYS ~ fSYS /128。


Question 14

Timer/Counter 1中的时钟源如何选择?

Answer

Timer/Counter 1中的时钟源可以有二种选择,包括fSYS/4及32768Hz。
TS=0选择fSYS/4;TS=1选择32768Hz。


Question 15

PWM (6+2) Mode和 (7+1) Mode之频率为何?

Answer

PWM (6+2) Mode是将PWM的值分成4次送出,即每64个时钟送出PWM/4,其PWM频率为 fSYS/26。PWM (7+1) Mode是将PWM的值分成2次送出,即每128个时钟送出PWM/2,其PWM频率为 fSYS/27。所以说 (6+2) Mode与8 Bit Mode相比其PWM频率提高为4倍,而 (7+1) Mode与8 Bit Mode相比其频率提高为2倍。


Question 16

A/D转换的TAD时钟频率如何计算?

Answer

A/D转换需要76个TAD时钟,时钟的频率由ADCS1和ADCS0决定,其计算如下表:

ADCS1 ADCS0 TAD频率
0 0 fSYS/2
0 1 fSYS/8
1 0 fSYS/32
1 1 Undefined

Question 17

HT46 A/D with LCD Type MCU之LCD频率如何设定?

Answer

  1. Configuration Option时钟源 (同RTC、WDT & Time Base时钟源)。

  2. Configuration Option选除级,使LCD频率 (fLCD=fS/22~28) 约为4kHz。


Question 18

HT46 A/D with LCD Type MCU 之LCD Bias选R Type或C Type有何差别?

Answer

LCD选R Type可省零件,而选C Type可较省电,若介意耗电问题可选C Type,若没有耗电顾虑可以选省3颗电容的R Type。但要注意选C Type LCD且1/3 Bias时LCD的电压是3/2 VLCD。


Question 19

HT46 A/D with LCD Type MCU的系统频率有那些?

Answer

HT46系列MCU的系统频率来源有三种,如下:

  1. 外部RC

  2. 外部 Crystal

  3. 外部 RTC OSC Crystal


Question 20

ADCLK时钟频率设定是否有限制 , 如何计算?

Answer

HT46 A/D with LCD Type MCU 的 A/D Clock Period (TAD) 最快为1us , 因此由ADCS1和ADCS0设定时钟频率需确定tAD不可小于1us . 其计算可参考下表:

fSYS

A/D Clock Period (tAD)

ADCS1,ADCS0 = 00
(fSYS/2)
ADCS1,ADCS0 = 01
(fSYS/8)
ADCS1,ADCS0 = 10
(fSYS/32)
ADCS1,ADCS0 =11
1 MHz 2 us 8 us 32 us Undefine
2 MHz 1 us 4 us 16 us
4 MHz *500 ns 2 us 8 us
8 MHz *250 ns 1 us 4 us

*星号表示ADCS1和ADCS0设定值不正确 , tAD小于1us .


Question 21

A/D取样时间为何?

Answer

A/D取样时间(A/D Sampling Time) 需32tAD . 若A/D Clock Period 为4us 则A/D Sampling Time = 128us。


Question 22

A/D type MCU其外部模拟讯号源输入A/D 的等效电路为何?

Answer

A/D type MCU其外部模拟讯号源输入A/D 模拟输入PIN的等效电路如下:

符号说明:
VA : 外部的模拟讯号源
RA : 外部的模拟讯号源输出阻抗
AN0~AN7 : 模拟讯号输入PIN
CPIN : 模拟讯号输入PIN输入电容, CPIN = 5pF
D1, D2 : PAD 上的保护二极管, VT=0.6V
II : PAD 上的漏电流, II = ±1μA (最大值)
SS : 模拟讯号取样开关
RSS : 模拟讯号取样开关等效阻抗; 大约等于100/200Ω at 5V/3V
CS/H : 取样保持电容; 其值请参考下列表格

  HT46R23, HT46R24, HT46R64, HT46R65  HT46C23, HT46C24, HT46C64, HT46C65 HT46R47,  HT46R22, HT46R62 HT46C47, HT46C22, HT46C62 HT46R63 HT46C63
CS/H 225.3pF 94.2pF 112.6pF 71.3pF 56.32pF 35.6pF
A/D 分辨率 10-bit 10-bit 9-bit 9-bit 8-bit 8-bit
A/D 转换时间 76tAD 76tAD 76tAD 76tAD 64tAD 64tAD
A/D 取样时间 32tAD 32tAD 32tAD 32tAD 32tAD 32tAD

Note: tAD为 DATA SHEET 中 A/D clock period.


Question 23

请问WDT之功能为何?

Answer

Watchdog Timer(WDT)主要用于监视MCU内部功能(software及hardware)之执行是否正常, 使用者必须适当设计software及运用clear WDT(CLR WDT, CLR WDT1, CLR WDT2)之指令, 使程序正常执行时, WDT不会overflow, 并且在当系统不正常执行时, WDT可以overflow造成WDT reset, WDT reset之效能, 主要由software设计所决定。


Question 24

在HT46RU66/HT46CU66中,具有一个多功能中断MFI ,请问其中断请求旗标MFF是如何置起的?

Answer

MFI (Multi-Function Interrupt ),指的是多功能中断,它是由时基溢出(TBF)、RTC溢出(RTF)或定时/计数器2溢出(T2F)触发的。当时基溢出(TBF=1)且相应的中断控制位ETBI=1、RTC溢出(RTF=1) 且相应的中断控制位ERTI=1,或者定时/计数器2溢出(T2F=1)且相应的中断控制位ET2I=1三者任一条件成立,MFF都将会置起。如果总中断打开(EMI=1),相关的中断允许(EMFI=1), 且堆栈未满,当MFF被置位时,会产生地址018H的子过程调用。进中断后MFF和EMI会被清零,以禁止其它中断响应。TBF、RTF和T2F被置位表明发生了时基、RTC或定时/计数器2溢出, 中断旗标TBF、RTF和T2F不会自动清除,必须由程序员用软件清除。其中断过程如附件图(FAQ-10.bmp)表虚框部分所示。


应用说明

 


Question 1

LCD映射数据存储器如何使用?

Answer

LCD的映射数据存储器位于BANK 1的40H开始的位置,故欲使LCD显示对应的内容时,需先将BP(Bank Pointer)设为1,然后利用间接寻址的方式存取LCD Display Memory的内容,LCD映像数据存储器不能使用直接寻址方式存取。


Question 2

HT46 A/D with LCD Type MCU有两组MP使用有何不同?

Answer

MP0/IAR0和MP1/IAR1必需配对使用,其中MP0/IAR0只能用在RAM BANK0,MP1/IAR1则可以在任何RAM BANK使用。


Question 3

没有Push和POP指令;中断时数据要如何备份?

Answer

虽然没有Push和POP指令,程序员仍可指定专用记忆RAM BYTE (例如:db ACCStack; for ACC Storage) 储存中断时会被破坏的数据。首先将ACC存入专用内存,然后利用ACC依序将Status和其它数据搬移至各别之专用内存。在中断返回前,再反序将其它备份数据,Status和ACC回存,最后再执行RETI返回主程序。


Question 4

可以在Interrupt Service Routine内执行Call吗?

Answer

因为HT46 A/D with LCD Type MCU 堆栈缓存器(Stack)数目有限,在Interrupt中执行Call要特别注意,如果在进入Interrupt时Stack已经满了,则会造成Stack Over,而使得程序无法返回。所以若要在Interrupt内执行Call,必需考虑在最差情况下之Stack使用数目,务必使在最差状况下进入Interrupt仍有Stack空间。


Question 5

中断处理中可否允许相同的中断再进入?

Answer

理论上在进入中断时MCU会自动清除EMI旗标 (EMI=0),并禁止所有中断的再进入,若中断处理中用软件设定EMI旗标 (EMI=1),则在Stack有空之下,所有中断(含相同中断)皆可再进入。要允许相同的中断再进入,需特别注意备份数据的处理,应避免已备份之数据被再进入的中断所破坏。若不是非常紧急中断,一般不建议中断再中断。


Question 6

没有用到的I/O Pin如何处理?

Answer

若不用之I/O Pin浮接时,会造成IC的耗电,最好的处理方式就是将不用的I/O Pin设定成Output Pin。如果要设成Input Pin则要选择Pull-high 电阻,如果不选用Pull-high电阻,则将Pin脚接地。


Question 7

PA已经Low为何没有唤醒MCU?

Answer

MCU的PA Port唤醒为瞬间下降缘触发,若在执行HALT之前PA已经Low,且在HALT期间一直维持在Low,因为没有下降缘动作,所以无法唤醒MCU。


Question 8

为何外部中断有下降缘,仍然没有唤醒MCU?

Answer

虽然MCU可由中断唤醒,但严格的说是要靠中断要求旗标 (Request Flag) EIF0/EIF1由0变1才能唤醒。若在MCU进入HALT之前EIF0/EIF1已经设定 (EIF0/EIF1=1),则再来之INT无法改变EIF0/EIF1的值,亦即是EIF0/EIF1不能由0变1,所以不能唤醒MCU。


Question 9

可以让外部中断不产生唤醒MCU吗?

Answer

在执行HALT之前先清除EMI再设定EIF=1,则外部中断就无法唤醒MCU。


Question 10

2个CLR WDT指令如何使用?

Answer

2个CLR WDT可以增加系统可靠性。若程序有2个主要的交替循环Loop;则可在1个Loop放CLR WDT1,在另1个Loop放CLR WDT2,一旦程序错误或受噪声干扰造成一直停留在某一个Loop时;WDT就会启动,发出WDT Time-out重新启动MCU。


Question 11

HT46 A/D with LCD Type MCU之PWM功能如何使用?

Answer

首先Configuration Option需选择PWM功能,使用时,先设PDC.0=1再写入一个欲输出的值丢到PWM缓存器,当PD.0=0则PWM输出0;当PD.0=1输出PWM波形 (若有第2个PWM则控制PDC.1和PD.1)。


Question 12

HT46 A/D with LCD Type MCU的 A/D Converter如何使用?

Answer

使用A/D要执行以下动作:

  1. 首先定义Port B Configuration (PCR2、PCR1、PCR0) 选定有几个模拟输入通道。

  2. 选定特定通道 (ACS2、ACS1、ACS0),此通道必需在前项选定通道内。

  3. 命令A/D开始转换 (ADCR.7=0 --> 1 --> 0),此时A/D显示忙碌 (EOCB=1)。

  4. 等待76个TAD时钟,A/D显示转换完成 (EOCB=0);并产生中断要求旗标(ADF=1)。

  5. 读取数据 (ADRL和ADRH)。


Question 13

HT46 A/D with LCD Type MCU的RTC如何使用?

Answer

RTC类似Time Base设定,最大的差别为其频率可以软件设定。

  1. 首先Configuration Option选好时钟源。

  2. 依需要,程序随时设定RTC除频。fRTC=fS/28~215 (其中 fS为前项之时钟源)。

  3. 依据中断需求设定中断致能旗标(ERTI=1)。

以上设定完成,RTC会不停运作,每次RTC到时,RTC旗标会被设定(RTF=1),并产生相应中断。


Question 14

HT46 A/D with LCD Type MCU的Buzzer如何使用?

Answer

使用Buzzer要先执行以下设定:

  1. Configuration Option设定PA0、PA1成CMOS Output。

  2. Configuration Option选择Buzzer。

  3. Configuration Option选定时钟源 (同RTC、WDT和Time Base时钟源)。

  4. Configuration Option设定Buzzer频率。fBUZZER=fS/22~29 (fS为前项时钟源)。

以上设定完成,在程序中设定PA0和PA1即可控制Buzzer输出。

当PA0、PA1=0,则BZ、BZ两者输出,当PA0=0、PA1=1则仅BZ输出,当PA0=1则BZ、BZ两者皆不输出。


Question 15

HT46 A/D with LCD Type MCU的PFD如何使用?

Answer

使用PFD要执行以下设定:

  1. Configuration Option选择PFD功能输出。

  2. 当有2个以上PFD时;Configuration Option选择由那一个PFD输出。

  3. 设定PFD频率;分8 Bit和16 Bit二种。
    8 Bit: fPFD=fINT/(2 x (256-N))
    16 Bit: fPFD=fINT/(2 x (65536-N))
    其中fINT为Timer之时钟源

  4. 打开选定之Timer (TON)

以上设定完成;在程控PA3=0,则PFD输出。


Question 16

HT46 A/D with LCD Type MCU的Time Base如何使用?

Answer

使用Time Base要执行以下设定:

  1. 首先Configuration Option选好时钟源。

  2. 依需要;Configuration Option选择Time Base除频。
    fTIME BASE=fS/212~215 (其中fS为前项之时钟源)。

  3. 依据中断需求设定中断致能旗标 (ETBI=1)。

以上设定完成,Time Base会不停的运作,每次Time Base到时,Time Base旗标会被设定(TBF=1),并产生相应中断。


Question 17

在什么情形下要关闭32K快速起振?

Answer

MCU开机上电后32K振荡器起动快速起振。若考虑省电可在2秒钟后关闭快速起振,如此在3V工作电压下可省1~2µA,在5V工作电压下可省3~4µA。


Question 18

2颗电池 (2.2V~3.8V) 的工作电压操作可以使用LVR吗?

Answer

LVR的动作点在2.7V~3.3V之间,所以2.2V的工作电压不能选择LVR,若一定要侦测2.2V低压,可以外加Voltage Detector (HT70XX系列)。


Question 19

系统频率Fsys=4MHz , ADCLK = fsys/32 , A/D input signal 是一个square wave(250us), A/D要对square wave之 level 进行转换,但是有时就转换不正确 .

Answer

HT46 A/D with LCD Type MCU 的转换时间(A/D conversion time)为76 TAD . 于此转换进行期间会先进行 S&H 动作, 其时间为32 TAD . 参考下图 : A/D Conversion Timing .

若 fsys = 4MHz, ADCLK = fsys/32, A/D Sampling Time需32TAD = 256us
因 ADCLK之除级为free run counter, 所以A/D Sampling Time tolerance应为31~32 ADCLK; 248us<A/D S&H time<256us , 就造成A/D conversion 结果有时数值正确, 有时又不正确 .

此问题可修改 ADCLK 为fsys/8 , 缩短A/D Sampling Time 为64us .


Question 20

Holtek MCU 之Stack 除了做CHIP reset之外,有无其它方法可以重设 stack pointer?

Answer

堆栈指针会受到中断与呼叫附程序与返回指令影响,除此之外,除了透过CHIP reset,并无其它方法可以重设(reset) Holtek MCU 的堆栈指针。


Question 21

当系统时钟选择RC振荡器时,应用电路上OSC1外接的电阻与电容有何功能?电容可以不加吗?

Answer

OSC1外加电阻是为了产生一bias以控制内部的RC充放电,电阻值决定RC震荡频率。外加电容建议为470pF,OSC1外加电容是为了避免和OSC2产生交越干扰,以便让OSC2输出一稳定1/4系统频率的频率。假如你不需要使用到OSC2输出的1/4系统频率的频率,那么电容器是可以省略的。


Question 22

如何决定 RA ?

Answer

以 5V, 10-bit A/D 来看, VA 输入到 AN0~AN7 PIN, 讯号衰减不得超过 1/4 LSB,以维持 ADC 转换过程中的精确度, 因此相对应下来为 5V/4096 约等于 1.2mV

所以 1uA×RA < 1.2 mV → RA < 1.2kΩ , 1uA 为 II 的值
建议 RA 不要大于 1.2kΩ, 以维持 10-bit ADC 的精确度

对 9-bit 及 8-bit ADC而言, RA 不要大于 2.4kΩ及4.8kΩ, 以维持其相对的精确度


Question 23

如何看待 A/D 的输入阻抗呢 ? 

Answer

在 A/D 不做转换时, SS 是处在 OPEN 的状态, 在 A/D 开始转换时, 会有两段时间, 一是 SAMPLE 的时间, 需要 32 个 tAD, 此时 SS CLOSE; 之后的 44个 tAD 时间SS OPEN, 执行 A/D 转换的工作, 执行A/D转换总共需要76个tAD, tAD为 DATA SHEET 中 A/D clock period.

所以我们分两个部分来看 A/D 的输入阻抗
(1). 当模拟讯号取样开关SS OPEN 时, A/D输入阻抗, 只剩下漏电流产生的等效阻抗

此时输入阻抗大约等于 RVDD 并联 RVSS, RVDD 与 RVSS 分别为 PIN 漏电流所产生的电阻, RVDD = RVSS = 5V/1uA = 5MΩ
RVDD 并联 RVSS = 2.5MΩ

(2). 当模拟讯号取样开关 SS CLOSE 时, A/D输入阻抗约等于如下之等效电路(忽略CPIN )

此时输入阻抗分析如下:
以DC来分析, 其DC输入阻抗 大约等于 RVDD 并联 RVSS, RVDD 与 RVSS 分别为 PIN 漏电流所产生的电阻, RVDD = RVSS = 5V/1uA = 5MΩ
RVDD 并联 RVSS = 2.5MΩ

以AC来分析, 其 time constant = (RA+RSS)×C, 其值如下表

  HT46R23, HT46R24, HT46R64, HT46R65  HT46C23, HT46C24, HT46C64, HT46C65 HT46R47, HT46R22, HT46R62 HT46C47, HT46C22, HT46C62 HT46R63 HT46C63
CS/H 225.3pF 94.2pF 112.6pF 71.3pF 56.32pF 35.6pF
RA+RSS 1.3kΩ 1.3kΩ 2.5kΩ 2.5kΩ 4.9kΩ 4.9kΩ
Time constant 0.29μs 0.12μs 0.28μs 0.18μs 0.28μs 0.17μs

Question 24

与 A/D 相关的另一个参数是 A/D Acquisition Time(tAC), 通常我们需要知道 A/D Acquisition Time(tAC) 的最小值为何?

Answer

其求法为, 假设 VA 模拟讯号源输入到 CS/H 的电压不得误差 VA/2048, 才能维持 10-bit ADC 的精确度, 所以当 SS CLOSE 时, CS/H 的电压, 必须大于 VA-VA/2048

所以 VA-VA/2048 < VA(1-EXP(-tAC/R×C); R=RA+RSS, C=CS/H

VA-VA/2048 < VA(1-EXP(-tAC/R×C)
→ 1/1028 > EXP(-tAC/R×C)
→ -7.625 > - tAC/R×C
→ tAC > 7.625×R×C

以不同型号的MCU, 可得到下表不同的值

  HT46R23, HT46R24, HT46R64, HT46R65  HT46C23, HT46C24, HT46C64, HT46C65 HT46R47, HT46R22, HT46R62 HT46C47, HT46C22, HT46C62 HT46R63 HT46C63
CS/H 225.3pF 94.2pF 112.6pF 71.3pF 56.32pF 35.6pF
RA+RSS 1.3kΩ 1.3kΩ 2.5kΩ 2.5kΩ 4.9kΩ 4.9kΩ
tAC 2.2μs 0.93μs 2.1μs 1.4μs 2.1μs 1.3μs
A/D 取样时间 32tAD
32μs(最小值)
32tAD
32μs(最小值)
32tAD
32μs(最小值)
32tAD
32μs(最小值)
32tAD
32μs(最小值)
32tAD
32μs(最小值)

由上表可知 A/D 取样时间为 32tAD, 根据规格tAD 最小值为 1μs, 算出取样时间最小为32μs, 必须大于tAC.


Question 25

A/D 模拟输入 PIN 的输入电压范围为何 ?

Answer

因为 AN0~AN7 PIN上都有 保护二极管, 所以 AN0~AN7 PIN上的电压, 绝对不得大于VDD + 0.3 或是小于 VSS-0.3, 以免造成其它不可预期的耗电及误动作. 


Question 26

HT46单片机怎样在PD口输出自己所需要的PWM频率?

Answer

HT46系列MCU的PWM输出频率是由系统频率决定的,Fpwm=Fsys/256;即系统频率定了之后,PWM频率也就定了。PWM频率是不可调的,只能调占空比(通过给PWM寄存器赋值)。


Question 27

HT46系列之MCU,如有使用A/D Converter,当进入HALT MODE前,应作何处理以省电?

Answer

由于进入HALT MODE时,A/D Converter并不会关掉,仍会耗电,故当进入HALT MODE前,应将ADCR Register之PCR0,PCR1,PCR2等3位设为000,以关掉A/D Converter达成省电,待WAKE UP返回NORMAL MODE后再重设PCR0,PCR1,PCR2等3位,将A/D Converter 开启。


Question 28

3 pin 之resonator/crystal用于MCU之时基时, 电容之Vss pin可改接Vdd吗?

Answer

3pin之resonator/crystal 用于MCU之时基时,配合Layout方便, 电容之Vss pin亦可改接Vdd。


Question 29

写程序时,如欲在program memory建立Table,如何建于绝对地址,为何ORG不适用,有其它方法吗?

Answer

ORG expression : expression 是对于目前SECTION 起始地址的offset,并非绝对地址,可使用SECTION来建立Table于绝对地址,例如:

table .section at 300 'code' -即可将接下去之Table起始位置建立于绝对地址300。


Question 30

请问要如何以C语言读取OTP WRITER烧入IC之序号?

Answer

在C语言中须以Inline assembly来读取OTP WRITER烧入IC之序号, 程序范例如下:

首先, 宣告一变量并指定 ram 地址
unsigned long series_num @0x80;

然后, 将 serial number 读入此 variable, 方法如下:

#asm
tblp equ [07h] ; define table address
mov a,20h
mov tblp,a  ; set table pointer to 20h (series number at 20h of last page)
tabrdl [80h]  ; load first byte of series number to series_num (0x80h);
inc tblp
tabrdl [81h]  ; second byte of series number
inc tblp
tabrdl [82h]  ; third byte of series number
inc tblp
tabrdl [83h]  ; fourth byte of series number
#endasm

Question 31

用HT46/HT47/HT48/HT49系列单片机的BZ/BZB功能时感觉声音不够响亮,该怎么办?

Answer

BZ/BZB的输出频率要与蜂鸣器的频率对应,每种蜂鸣器都有各自的中心频率,设置的频率要尽量靠近中心频率。如果蜂鸣器直接接在BZ,BZB两个管脚,那么这两个管脚 对应的IO口都要设成输出。


Question 32

为何写TMRL和TMRH不能改变其中的值?程序如下:
mov a,131
mov tmrl,a 
mov a,0ffh 
mov tmrh,a 
执行了以上这几条指令,TMRL和TMRH中的值依然保持原来的数据而未被改变!

Answer

在写入TMRL和TMRH前要先关掉计时中断。


Question 33

使用HOLTEK MCU做一个声音的产品,在程序中,会应用到查表:
TABLE1: DC 0FFE1H,0FE32H,0FA34H,0FC78H
DC 0FECDH,0FEDCH,0FE57H,0FD87H ; 16位表格值

请问16位的查表表格定义能否按TABLE1的格式?

Answer

HOLTEK各系列MCU的ROM有不同的字节长度,每一个字节最低含14个位,最多含16个位。
字节长度为16位的MCU可以按TABLE1格式定义出16位表格,其它MCU只能定义出最长14位或15位的表格。


Question 34

HT46R62的SEG脚掩膜做逻辑输出后怎么控制?

Answer

HT46R62的SEG0~SEG15可掩膜选择为逻辑输出,一旦LCD设置为逻辑输出,LCD存储区的bit0将控制相关SEG脚的输出状况。掩膜选择时SEG0~SEG7 是按字节设置的,SEG8~SEG15 是按位设置的。


Question 35

使用带有PA控制寄存器(PAC)的8位MCU作母体调试程序时,为什么向PA PIN脚的某一位写0再写1,在寄存器观察窗口中却看不到PA PIN脚这一位的值有所变化?

Answer

要向PA数据寄存器的某一位写入数据,必需先将PA的控制寄存器(PAC)的对应位清0,也就是将其设置为输出口时,才能有效的将数据写入数据寄存器(PA)中,反之,如果此位是输入状态则通过程序不能改变数据寄存器这一位的值。


Question 36

当选用PFD功能时,PA3端口是否仍可以用作输入口?

Answer

可以。如果PAC.3位被设置为"1",即使掩膜选项选择该引脚为PFD输出,PA3还是作为输入端口使用。


Question 37

在HALT状态下,LVR有没有作用?

Answer

在Option选项中设置LVR使能,在HALT状态下LVR不起作用。


Question 38

请问与A/D复用的I/O Port设为A/D输入后,是否还支持普通I/O功能?

Answer

如果某个I/O一旦设为AD input时, 因省电因素,其不支持输入/输出功能,并且上拉电阻会自动失效。


Question 39

仿真器在仿真HT46R72D-1时LCD无法输出波形? 

Answer

查看HT46R72D-1的datasheet,发现LCD的时钟来自IRC,而IRC和缓存器WDTC有关,WDTC中如果将WDT OSC设为disable,IRC将被关闭,此时LCD输出波形消失。
Option中对WDT的选择会影响到WDTC的初始值。所以不同的WDT选项会造成WDTC的初值不一样,同时影响LCD的输出。客户如需使用LCD,请将WDTC的2, 3bit设置为10,即enable WDT osc。


Question 40

定义在不同RAM Bank中的变量,是否可以通过变量名来直接进行读写操作?

Answer

对于有多个RAM Bank的MCU来说,定义在Bank0中的变量,可以通过变量名直接进行读写操作,而对于定义在其它Bank中的变量则无法实现。
因为在RAM中不论变量定义在哪一个Bank,变量名都是一个地址标号,当使用变量名直接进行读写操作时相当于进行了一次直接寻址操作,Holtek MCU规定任何直接寻址只会在Bank0存取数据,所以定义在Bank0之外的变量无法直接通过变量名进行操作,而必须使用间接寻址指针MP1和间接寻址缓存器IAR1进行间接存取。


Question 41

请问HT46RU66的LVD功能如何使用?HALT下LVD是否工作?

Answer

若要使用HT46RU66之LVD(低电压检测)功能,首先要在光罩当中设定LVD选项Enable,其次要注意配合RTCC缓存器中的第3位(LVDC)和第5位(LVDO)。
其中LVDC是致能/禁能控制位,设定为逻辑高时LVD为有效状态;LVDO是LVD检测器的输出位,并且是只读位。当正确设置LVD功能后,当系统电源电压高于 规格书DC特性中的VLVD(典型值约为3.3V)时,VLDO位将保持0;一旦系统电源电压低于VLVD值,则LVDO位会置1,应用程序就可以判断出是否出现低电压状态。
在HALT状态下,LVD功能将不起作用,也不会增加MCU额外的功耗。


Question 42

HT46RU66/HT46CU66中ROM分为两个Bank,程序跳转到不同的Bank时需如何处理?

Answer

HT46RU66/HT46CU66中ROM分为Bank0和Bank1,每个Bank的空间容量为8192X16位,可通过Bank指针BP.5选择。当BP.5=0时,选择Bank0;当BP.5=1时,选择Bank1。而指令JMP和CALL只包含13位地址,其跳转范围为一个Bank(即8k),当执行JMP指令跳转到不同Bank的地址,或者执行CALL指令呼叫位于不同Bank的子程序时,必须先正确设置Bank指针BP.5来确定目标Bank,以确保程序正确执行。当执行这个子程序的RET指令时,程序会自动返回到原先主程序所在的Bank,然而BP的值不会改变,仍保持子程序所在Bank的值,因此还需要将BP值重新设置为原先主程序所在Bank的值,以确保程序正确执行。举例说明如下所示。

include HT46RU66.inc

rombank 0 codesec0 ;define rombank0
rombank 1 codesec1 ;define rombank1

codesec0 .section at 'code'
org 00h
clr bp
jmp mainstart

mainstart:

mov a,BANK routb1 ;routine'routb1'is located in bank1
mov bp,a ;load bank number for routb1 into BP register
call routb1 ;call subroutine located in bank 1
clr bp ;program will return to this location after RET in
︰ ;bank 1,but BP will retain bank 1 value
︰ ;so clear the BP
codesec1 .section at 'code'

routb1:

nop
nop
ret ;return program to bank0 but BP will retain
;bank 1 value


Question 43

HT46RU66中的UART如何设置唤醒功能?

Answer

当MCU接收数据时进入HALT状态,UART将停止工作,并且UART相关寄存器不会受到影响。如果进入HALT模式前,先将UCR2寄存器中的第2位(RIE)和第3位(WAKE)置位,那么UART将具有唤醒功能,在RX引脚下降沿会唤醒MCU。若要唤醒并产生中断,UARTEN(UART使能位)、RXEN(接收使能位)、EURI(UART中断使能位)和EMI(总中断使能位)必须同时置位;若EURI或EMI为0,则MCU可以被唤醒但不会产生UART中断。


Question 44

在HT46RU66中,对于定义在Bank1中的表格,使用TBHP和TBLP进行查表,请问应使用相对地址还是绝对地址进行操作?

Answer

当表格定义在Bank1中,例如在Bank1程序存储器中使用ORG伪指令将表格数据存放在005H的地址,这是相对于Bank1起始地址000H而言,而它的绝对地址则是2005H。此时,根据表格的绝对地址,设置TBHP(高字节表格指针)的值为20H,设置TBLP(低字节表格指针)的值为05H,再使用“TABRDC [m]”指令,即可读取该表格数据,其中低字节的表格数据会送往用户定义的数据寄存器[m]中,而高字节表格数据会送到TBLH特殊寄存器,并且高字节中未使用的位将被读取为零。


注意事项

 


Question 1

已经进入HALT Mode为何还有耗电?

Answer

MCU进入HALT会将系统OSC关闭,但WDT OSC (如果Option选WDT Enable) 和RTC OSC仍在工作,而且全部I/O会保持HALT前状态,除了WDT OSC和RTC OSC会耗一些电外,最要注意的是Input Port是否浮接或者Output Port是否仍有负载,要注意这些I/O的处理,否则仍会消耗电流。


Question 2

请问OTP dice 烧录流程为何?

Answer

  • Dice 打线在 COB 上。

  • 利用烧录器如 HT-Writer 等作OTP 烧录。

  • COB 功能测试。

  • 功能正常之 COB 将 Dice 封胶, 之后再焊上其它零件。


Question 3

我需要使用OTP的DIE生产,请问如何烧录?

Answer

HOLTEK的OTP烧录会使用到11根引脚,所以如果需要使用OTP的DIE生产,在画PCB时,需要预留出这11根引脚,关于引脚的详细定义请向相关的代理商索取。使用者需制作治具将11根引脚连接到烧录器的40 PIN的Textool上,之后就可以按照OTP封装片的烧录程序烧录。

需要注意的是,在PCB Layout的时候,使用到的这11根引脚在PCB上的走线不要过长,其中PA0~PA6做烧录使用避免连结到其它线路的输出,如无法避免则需串接1kohm电阻, 以免影响烧录;从PCB到烧录器的联机不要超过15cm,越短越好。


Question 4

我使用OTP DICE,但是发现烧录不良率较高,这是为什么呢?

Answer

首先,要排除打线不良的问题,一般来说打线不良是OTP DIE烧录不良的重要原因。如果你自己没有办法确定打线是否良好,可以通过技术支持的方式,将绑定完好没有封胶的样片寄到HOLTEK相关的技术服务部门分析。 


Question 5

我使用HT-Writer烧录OTP DICE,联机的时候出现"MCU:Cannot identify"信息会出现在信息窗口中,是打线不好?还是OTP有问题?

Answer

OTP的封装片在出厂前会有一些信息在里面,使用HT-Writer 烧录器时会显示于信息窗口中。如果OTP芯片中没有此等信息,那么烧录程序就会认为无法辨认此ID,会出现这么一个警告信息。而OTP DICE一般来说,出厂前是不会有这样的信息的,所以烧录器会不认识此颗IC。

如在Option菜单中将Check ID的选择去掉,这样在今后的烧录过程中,烧录程序就不会再去Check IC里面的ID信息;如果是脱机烧录模式的话,请将HT-Writer背面的DIP开关的DIP1拨为OFF,这样在脱机烧录的时候,就不会去Check IC里面的ID信息了。


Question 6

请问MCU的Reset 与Oscillator线路设计有无需注意事项?

Answer

请参阅 "应用范例" 网页,其中的 "HA0075S" 供使用者参考。


Question 7

以HT-ICE模拟HT46R63,当执行INT0或INT1外部中断时,如设定为falling edge触发,于RESET之后,送第一个falling edge时,会误动作而产生两次中断,然而从送第二个falling edge开始,则正常动作,每送一个falling edge只产生一次中断,请问如何才能正确的模拟外部中断,避免误动作?

Answer

以HT-ICE模拟HT46R63,当有使用INT0或INT1等外部中断时,写程序切记于reset后之initial程序必须加入 inactive external interrupt request flag( clr eif0,clr eif1),以避免模拟时外部中断误动作.


Question 8

HT46R63/HT46C63以HT-ICE 模拟外部中断int0,int1的功能时,会有误动作产生,如何避免?

Answer

当有使用int0,int1等外部中断时,HT46R63/HT46C63于reset后之initial程序必须加入 inactive external interrupt request flag( clr eif0,clr eif1)后,才执行enable emi,eei0,eei1(set emi,set eei0,set eei1),以避免模拟时误动作.


Question 9

在仿真ht46系列单片机时,如何将32.768k做为系统仿真频率?

Answer

仿真时SysFreq要选择内部32.768K,同时Fsys选择RTC OSC FOR Fsys.


Question 10

使用ICE模拟时,若在Interface Card上的Y1使用32768Hz的X'tal,为何无法起振?

Answer

Interface card上的Y1等于是实际IC的OSC1,OSC2,无法使用32K X'tal;HT-ICE本身已内建32K X'tal,用ICE模拟时,若选择32K当系统频率,只需在Configuration Option将Fsys设为RTCCLK for Fsys即可。


Question 11

请问在SIMULATION方式下,是否可以仿真HT46系列的AD转换?

Answer

此方式下无法正常模拟,需在EMULATION方式下实现。


Question 12

请问在使用带 LCD 之母体作 LCD simulator或接上LCD panel时, LCD DISPLAY 无法正确点亮,且会闪烁,原因为何?

Answer

在使用 LCD simulator或接上LCD panel时,LCD driver clock 应设成接近4kHz才行. 例如当 fsys=4MHz,clock source(fs)=fsys/4=T1=1MHz, LCD driver clock 应设定成 fs/28=1MHz/28=3906Hz,LCD DISPLAY 即可正常显示。


Question 13

对于HT46R652而言,其VDD电压可不可以低于VREF电压?

Answer

VDD电压不可以低于VREF电压,在5V工作电压下,1.5V≦VREF≦5V;在3V工作电压下,1.3V≦VREF≦3V。


其它

 


Question 1

HT46 A/D with LCD Type MCU是否提供Dice form?

Answer

Holtek 同时提供OTP Type及Mask Type MCU的Dice form的量产服务,但使用OTP MCU Dice量产时,客户要特别注意打线及烧录的操作问题。


Question 2

HT46 A/D with LCD Type MCU的ESD及Latch-up能力如何?

Answer

HT46 A/D with LCD Type MCU为适合在工业产品使用;在ESD和Latch-up特别加强。

在ESD方面;依据美国军方标准MIL-STD-883E 3015.7;采用人体放电模式测试;每一I/O脚皆超过正负5KV以上。

在Latch-up方面;依据JEDEC-NO.17标准,采用Current Mode方式测试,每一I/O脚皆超过正负100mA以上。


Question 3

MCU Power On时,VDD的上升时间有何限制?

Answer

MCU Power On时为了使Reset可以完全成功,建议Power On VDD上升时间在20ms以内。当电池逐渐没电,电池内阻增大,造成VDD上升缓慢会影响Reset成功。


Question 4

在Data Sheet的Reset电路,是否可适用各种应用状况?

Answer

Data Sheet所提供的Reset电路一般可适用各种应用状况,若在特殊情形,要参考当时环境及Noise,再设计适当Reset电路。


Question 5

低电压Reset (LVR) 在HALT时,是否会耗电?

Answer

LVR在HALT时没有作用,所以没有耗电问题。


Question 6

使用Assembly Directives之MACRO,可否节省Program memory之空间,对MCU之执行速度有何影响?

Answer

在Assemble后MACRO所属指令将填入Program space,故对Program memory之空间和MCU之执行速度没有影响,但其使的程序简化,容易维护。


Question 7

把金属晶振外面的金属层与GND连接,这种接法是不是可以提高抗干扰性,使晶振更稳定?

Answer

一般来说,这种晶体外壳焊接到地,只是为了结构上的稳定:抗震!电路特性能够充分抑制EMI干扰。只有频率较高的晶体,EMI方面才需要着重考虑其振荡波形上的overshoot毛刺对CPU时序带来的问题!要求不高的地方,其实不必要太考虑,基本电路余量,合理配搭,组件参数,LAYOUT做好就足够了!


Question 8

如果受外部干扰造成电源电压波动不稳定,会对MCU有何影响,如何设计低电压重置?

Answer

当电源电压受外部干扰波动较大时,如果低于MCU的正常工作电压,可能会造成程序功能运行不正常,如果电压掉电不能完全掉到0V然后又上升,就容易造成MCU重置不完全而无法正常工作。
通常我们可以采用两个方法执行低电压重置:1、外加一个低电压重置IC(如HT70XX系列)到RES脚上,当电源电压低于某个临界值时,电压检测芯片会给出一个低准位到RES脚是微控制器重置,
防止微控制器当机。2、可以直接利用HOLTEK MCU的LVR功能进行低电压检测,当电源电压低于某一个临界值时并且持续时间超过1ms以上,微控制器会自动重置避免当机,外部不需要再连接任何检测电压的电路。