|
基本数据
Question
1
HT48XA Remote Type MCU内容如何?
Answer
HT48XA Remote Type MCU提供了1K、8K、
24K和40K程序内存及相同的工作电压2.0V~3.6V的OTP Type及Mask Type
MCU,编号为HT48RA0-2/ HT48RA0-1/ HT48RA1/ HT48RA3/
HT48RA5与HT48CA0-2/ HT48CA0-1/ HT48CA1/ HT48CA3/
HT48CA5,总共10颗IC。规格功能请参考Holtek Data Sheet。
Question
2
HT48XA Remote Type MCU功能有何不同?
Answer
| Part
No. |
VDD |
System Clock |
Program Memory |
Data Memory |
I/O |
Timer
|
Interrupt |
IR Carrier |
LVR |
PFD |
Stack |
Package |
| 8-bit |
16-bit |
Ext. |
Int. |
HT48RA0-2
HT48CA0-2 |
2.0V~ 3.6V |
400kHz~ 4MHz |
1Kx14 |
32x8 |
15 |
-- |
-- |
-- |
-- |
v |
v |
-- |
1 |
20SOP, 20SSOP |
HT48RA0-1
HT48CA0-1 |
2.0V~ 3.6V |
400kHz~ 4MHz |
1Kx14 |
32x8 |
17 |
-- |
-- |
-- |
-- |
v |
v |
-- |
1 |
24SOP, 24SSOP |
HT48RA1
HT48CA1 |
2.0V~ 5.5V |
400kHz~ 8MHz |
8Kx16 |
224x8 |
23 |
1 |
1 |
1 |
2 |
-- |
v |
v |
8 |
28SOP, 28SSOP |
HT48RA3
HT48CA3 |
2.0V~ 5.5V |
400kHz~ 8MHz |
24Kx16 |
224x8 |
23 |
1 |
1 |
1 |
2 |
-- |
v |
v |
8 |
28SOP, 28SSOP |
HT48RA5
HT48CA5 |
2.0V~ 5.5V |
400kHz~ 8MHz |
40Kx16 |
224x8 |
23 |
1 |
1 |
1 |
2 |
-- |
v |
v |
8 |
28SOP, 28SSOP |
| 注意: 有“C”字母产品为掩模版本,有“R”字母产品为OTP版本 |
注:细节规格请参考Holtek Data Sheet。
Question
3
HT48XA Remote Type MCU的工作频率为何?
Answer
在2个电池的应用,工作频率达Max. 4MHz (2.2V)。
Question
4
当系统时钟选择RC振荡器时,频率误差为何?
Answer
当系统时钟选择RC振荡器时,由于制程的因素造成的每个批号频率误差为±20%。假如外加电阻之误差为±5%,那么总频率误差就是±25%。
上述的误差范围仅供参考,不予保证,若客户需要精准的频率,请使用RESONATOR或CRYSTAL。
功能说明
Question
1
HT48XA Remote Type MCU有何重要功能及特性?
Answer
操作电压范围 2.0V ~ 3.6V含LVR功能 (Typ. 1.9V) 工业温度规格 -40°C ~
+85°C 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
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
5
HT48XA3 MCU 的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
6
HT48XA3 MCU 的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
7
HT48XA3 MCU 的16-Bit Timer/Counter的设定和读取顺序?
Answer
HT48XA3 MCU内部Data Bus均为8-Bit,对于16-Bit的数据必需两次才能完成,对16-Bit
Timer/Counter的写必需先写Low Byte然后High Byte,而读的顺序必需先读High Byte然后Low
Byte。
Question
8
当8-Bit Timer之时钟来源为Prescaler, 可以Reset Prescaler吗?
Answer
Prescaler在Power On
Reset后,就一直不停的Run,没有任何指令可以Reset此Prescaler。
Question
9
HT48XA3 MCU的8-Bit Timer/Counter之Timer Mode如何设定?
Answer
因Timer/Counter有3种模式,即Timer、Event Counter和Pulse
Width等3种。 要执行Timer Mode要执行以下动作设定:
-
设定Timer/Counter为Timer Mode
(TM1、TM0=10H)
-
依据Timer的长短选定Prescaler值 (PSC2~PSC0)
-
设定计数初始值 (TMR)
-
打开相对应中断致能旗标 (ETI和EMI)
-
设定 Timer ON (TMR0C.4=1)
当Timer被打开后,Timer开始向上计数,若Timer OFF
(TMR0C.4=0),则Timer立即停止。下次Timer再ON,则从上次停留值继续往上数,直到满位溢出产生中断,同时Timer
重新加载初始值。
Question
10
HT48XA3 MCU的16-Bit Timer/Counter之Timer Mode如何设定?
Answer
因Timer/Counter有3种模式,即Timer、Event Counter和Pulse
Width等3种。 要执行Timer Mode要执行以下动作设定:
-
设定Timer/Counter为Timer Mode
(TM1、TM0=10H)
-
设定计数初始值 (TMR)
-
打开相对应中断致能旗标 (ETI和EMI)
-
设定 Timer ON (TMR1C.4=1)
当Timer被打开后,Timer开始向上计数,若Timer OFF
(TMR1C.4=0),则Timer立即停止。下次Timer再ON,则从上次停留值继续往上数,直到满位溢出产生中断,同时Timer
重新加载初始值。
Question
11
HT48XA3 MCU的Timer/Counter之Event Counter Mode如何设定?
Answer
因Timer/Counter有3种模式,即Timer、Event Counter和Pulse
Width等3种。 要执行Event Counter Mode要执行以下动作:
-
设定Timer/Counter为Event Counter Mode
(TM1、TM0=01H)
-
选择TE; TE=1则Count Falling
Edge,TE=0则Count Rising Edge
-
设定计数初始值 (TMR)
-
打开相对应中断致能旗标 (ETI和EMI)
-
控制Timer ON (TMRC.4=1)
Question
12
HT48XA3 MCU的8-Bit Timer/Counter之Pulse Width Mode如何设定?
Answer
因Timer/Counter有3种模式,即Timer、Event Counter和Pulse
Width等3种。 要执行Pulse Width Mode要执行以下动作:
-
设定Timer/Counter为Pulse Width Mode
(TM1、TM0=11H)
-
选择TE; TE=1量High Pulse,TE=0量Low Pulse
-
依据Pulse长短需求选定Prescaler值 (PSC2~PSC0=n)
-
设定TMR计数初始值 (一般设定=0)
-
打开相对应中断致能旗标
-
打开Timer ON (TMR0C.4)
执行完以上步骤,程序可抽空Check TON值,若TON=0表示Pulse Width量度完成,Timer的值
x 2 n+1即是Pulse时间的宽度。
Question
13
HT48XA3 MCU的16-Bit Timer/Counter之Pulse Width Mode如何设定?
Answer
因Timer/Counter有3种模式,即Timer、Event Counter和Pulse
Width等3种。 要执行Pulse Width Mode要执行以下动作:
-
设定Timer/Counter为Pulse Width Mode
(TM1、TM0=11H)
-
选择TE; TE=1量High Pulse,TE=0量Low Pulse
-
设定TMR计数初始值 (一般设定=0)
-
打开相对应中断致能旗标
-
打开Timer ON (TMR1C.4)
执行完以上步骤,程序可抽空Check TON值,若TON=0表示Pulse
Width量度完成,Timer的值即是Pulse时间的宽度。
Question
14
HT48XA0-2、HT48XA0-1 MCU的Carrier Output Mode如何设定?
Answer
要执行Carrier Output Mode 要执行以下动作:
-
Configuration Option选择PC0为Carrier
Output
-
Configuration Option选择Carrier 频率,依据公式
fCARRY = (fSYS / 4) / (mx2
n);其中m=2 or 3,n=0~3
-
Configuration Option选择Carrier 占空比(Duty
Cycle);如果m=2则占空比为1/2,如果m=3则占空比可为1/2 或1/3
执行完以上步骤,设PC0=0 则Carrier输出,设PC0=1则无Carrier信号输出且准位为low。
Question
15
HT48XA3 MCU的PFD Mode如何设定?
Answer
要实现PFD Mode要执行以下设定:
-
Configuration Option选择PFD Option Enable
-
依据所要频率选择Prescaler (PSC2~PSC0=n)和TMR值
(fPFD = fSYS / (2n+1 x
(256-TMR0) x 2))
-
打开Timer ON (TMR0C.4)
-
将PB.0设成Output Mode即PBC.0=0
执行以上设定后,若PB.0=1则PFD ON,若PB.0=0则PFD OFF。
Question
16
HT48XA Remote Type MCU的系统频率有那些?
Answer
HT48XA Remote Type MCU的系统频率来源有二种,如下:
-
外部RC
-
外部 Crystal
Question
17
请问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
18
HT48RA0A和HT48RA0-1,HT48RA0-2有什么区别?
Answer
HT48RA0-1,HT48RA0-2 是 HT48RA0A的新版本。不同点如下:
-
HT48RA0-1和HT48RA0-2的工作电压为2.0~3.6V HT48RA0A的工作电压为2.2~3.6V
-
HT48RA0-1和HT48RA0-2
有LVR功能 HT48RA0A没有LVR功能
-
HT48RA0-1和HT48RA0A
16个I/O HT48RA0-2 14个I/O
Question
19
HT48XA0-1/HT48XA0-2只有62条指令,通常Holtek的MCU有63条指令,请问缺少哪一条指令?
Answer
缺少RETI(中断返回)指令,因为该款MCU不具有中断功能。
Question 20
PC0作为载波输出时应该如何操作?
Answer
PC0由光罩选项可以选择为载波输出(REM)或标准输出(PC0),若选择为REM,
PC0=1时打开载波输出,PC0=0时则载波输出关闭。
Question 21
PA作为输入时应该如何操作?
Answer
当PA用于输入时,需要注意,在从引脚读入数据之前,应该先将相关引脚置“1”,即要先执行“SET PA.i(i
=0~7)”指令来禁止相关的NMOS输出, 然后用“MOV A, PA”来获得稳定的数据。
应用说明
Question
1
没有Push和POP指令;中断时数据要如何备份?
Answer
虽然没有Push和POP指令,程序员仍可指定专用记忆RAM BYTE (例如:db ACCStack; for ACC
Storage)
储存中断时会被破坏的数据。首先将ACC存入专用内存,然后利用ACC依序将Status和其它数据搬移至各别之专用内存。在中断返回前,再反序将其它备份数据,Status和ACC回存,最后再执行RETI返回主程序。
Question
2
可以在Interrupt Service Routine内执行Call吗?
Answer
因为HT48XA Remote Type MCU
Stack数目有限,在Interrupt中执行Call要特别注意,如果在进入Interrupt时Stack已经满了,则会造成Stack
Over,而使得程序无法返回。所以若要在Interrupt内执行Call,必需考虑在最差情况下之Stack使用数目,务必使在最差状况下进入Interrupt仍有Stack空间。
Question
3
中断处理中可否允许相同的中断再进入?
Answer
理论上在进入中断时MCU会自动清除EMI旗标 (EMI=0),并禁止所有中断的再进入,若中断处理中用软件设定EMI旗标
(EMI=1),则在Stack有空之下,所有中断(含相同中断)皆可再进入。要允许相同的中断再进入,需特别注意备份数据的处理,应避免已备份之数据被再进入的中断所破坏。若不是非常紧急中断,一般不建议中断再中断。
Question
4
没有用到的I/O Pin如何处理?
Answer
若不用之I/O Pin浮接时,会造成IC的耗电,最好的处理方式就是将不用的I/O Pin设定成Output
Pin。如果要设成Input Pin则要选择Pull-high
电阻,如果不选用Pull-high电阻,则将Pin脚接地。
Question
5
唤醒pin已经Low为何没有唤醒MCU?
Answer
MCU的唤醒仅为瞬间下降缘触发,若在执行HALT之前,唤醒pin已经Low,且在HALT期间一直维持在Low,因为没有下降缘动作,所以无法唤醒MCU。
Question
6
为何HT48XA3 MCU外部中断有下降缘,仍然没有唤醒MCU?
Answer
虽然MCU可由中断唤醒,但严格的说是要靠中断要求旗标 (Request Flag)
EIF由0变1才能唤醒。若在MCU进入HALT之前EIF已经设定
(EIF=1),则再来之INT无法改变EIF的值,亦即是EIF不能由0变1,所以不能唤醒MCU。
Question
7
可以让外部中断不产生唤醒HT48XA3 MCU吗?
Answer
在执行HALT之前先清除EMI再设定EIF=1,则外部中断就无法唤醒MCU。
Question
8
HT48XA3 WDT选用WDT OSC时钟源时,看门狗如何计算?
Answer
WDT OSC的时钟周期在工作3V时约介于11.5 ms~46 ms,看门狗的溢出时间为,时钟周期 x 2
(WS2~WS0),例如:选WS2~WS0=7,则看门狗溢出时间将介于为11.5 ms x
27=1.47 sec 到46 ms x 27=5.9 sec。
Question
9
2个CLR WDT指令如何使用?
Answer
2个CLR WDT可以增加系统可靠性。若程序有2个主要的交替循环Loop;则可在1个Loop放CLR
WDT1,在另1个Loop放CLR
WDT2,一旦程序错误或受噪声干扰造成一直停留在某一个Loop时;WDT就会启动,发出WDT
Time-out重新启动CPU。
Question
10
Real Time Clock (RTC)要如何设定?
Answer
首先系统频率必需选用Int. RC + RTC,并且OSC1、OSC2必需外挂32768Hz
Crystal,然后设定Timer/Counter为Timer Mode,并选RTC
OSC为时钟源。以上动作即使在HALT之下,Timer会继续计数并产生Interrupt和Wake-up
CPU,使时间不会漏数达到RTC功能。
Question
11
2颗电池 (2.2V~3.8V) 的工作电压操作可以使用LVR吗?
Answer
可以,因HOLTEK 的HT48XAX系列,有提供LVR 2.0V的选项,可供2颗电池 (2.2V~3.8V)
工作电压操作的遥控器使用, 可以防止当电源有瞬间断电再上电,则IC有可能会造成Power On
Reset不良,或甚至于IC会死锁。
Question
12
如果HT48XA Remote Type MCU 无法满足应用需求时,Holtek还有哪些其它 Type
MCU适合应用在 Remote Controller 领域?
Answer
基本上,有提供PFD Output之MCU就适合应用在Remote Controller领域,因为经由PFD
Output将很容易就可以产生Remote Controller所需的Carrier Output. Holtek其它
Type MCU中有提供PFD Output者,如下列:
HT48X05/HT48X06、HT48X10/HT48X30/HT48X50/HT48X70、HT49X30/HT49X50/HT49X70、HT46X47/HT46X22/HT46X23/HT46X24
and HT47X20.
Question
13
Holtek MCU 之Stack 除了做CHIP reset之外, 有无其它方法可以重设 stack
pointer?
Answer
堆栈指针会受到中断与呼叫附程序与返回指令影响,除此之外,除了透过CHIP
reset,并无其它方法可以重设(reset) Holtek MCU 的堆栈指针。
Question
14
当系统时钟选择RC振荡器时,应用电路上OSC1外接的电阻与电容有何功能?电容可以不加吗?
Answer
OSC1外加电阻是为了产生一bias以控制内部的RC充放电,电阻值决定RC震荡频率。外加电容建议为470pF,OSC1外加电容是为了避免和OSC2产生交越干扰,以便让OSC2输出一稳定1/4系统频率的频率。假如你不需要使用到OSC2输出的1/4系统频率的频率,那么电容器是可以省略的。
Question
15
对于HT48XA0-2、HT48XA0-1由于没有时间中断,怎样来确定发码的时间?
Answer
只能用指令延时。并且如果客户要求时间比较准确的话,就用高一些的频率晶振。
Question
16
发射距离过短是怎么回事?怎么样才能增大?
Answer
发射距离过短是因为载波功率过小。解决办法是减小Vdd与发射管之间的电阻,最好用1到2奥姆的电阻。
Question
17
HT48XA0-2、HT48XA0-1
和HT48XA1、HT48XA3、HT48XA5的I/O口在使用上有什么不同?
Answer
HT48XA0-2、HT48XA0-1的PA口是简单口。它可作为NMOS输出,或者斯密特触发输入。用于输入时需要注意在从引脚读入数据以前,应该先将相关引脚置1,即要先执行SET
[m].i"(PA: 0~7)指令来禁止相关的NMOS输出然后用MOV A [m] 来获得稳定的数据。
HT48XA1、HT48XA3、HT48XA5的PA口是复杂口。它可作为CMOS输出,或者斯密特触发输入,状态由PAC特殊寄存器的相对位来控制。举例来说,如果PAC.0=1,则PA.0设置成输入状态;如果PAC.0=0,则PA.0设置成输出状态。
Question
18
用HT48系列MCU可以实现LCD 的driver吗?
Answer
可以,但最多只能做到1/2 bias,I/O用
pull high 和pull low进行偏置,然后输出高,输入,输出低就可以有三种电压。
Question
19
在客户用到HT48系列MCU做家电控制,在什么情况下使用LVR功能,
在什么情况下不使用LVR功能?
Answer
根据具体情况分析。LVR的电压是否3.3V,一般情况下,在电池供电的情况下不使用LVR,在产品使用交流电源的场合,使用LVR功能。
Question
20
如何使用MCU都有定时器自动重载功能?
Answer
如果希望在下一次定时器自动重载时,装载另一个初值的话,只需要给TMR赋新值就可以了。 如果希望定时器马上装载另一个初值,并开始计数的话,请做以下步骤:
-
关闭允许计数位TMRC.4;
-
给TMR赋新值;
-
打开允许计数位TMRC.4。
Question
21
如何使用外部晶振结合仿真器调试程序?
Answer
首先,在设置OPTION
的SYSFREQ时,Internal不要打勾。这样可以使用外部的晶振,外部晶振可以加在Interface
Card上面的Y1处。同时也要检查JP1处的跳线,是RC振荡还是x'tal。这样就可以使用外部晶振结合仿真器调试程序。
Question
22
进省电模式时,应如何设置I/O状态,使功耗最小?No load是指什么状态?
Answer
不用的I/O可以设置为输入模式,但一定要选择上拉电阻,否则会因为"浮空"而耗电。也可以设置为输出模式,并输出"0"。
No load是指I/O不任何接外部电路,即MCU只接VDD、VSS、OSC1/OSC2、RESB。
Question
23
3 pin 之resonator/crystal用于MCU之时基时,电容之Vss
pin可改接Vdd吗?
Answer
3pin之resonator/crystal 用于MCU之时基时,配合Layout方便,电容之Vss
pin亦可改接Vdd。
Question
24
写程序时,如欲在program
memory建立Table,如何建于绝对地址,为何ORG不适用,有其它方法吗?
Answer
ORG expression : expression 是对于目前SECTION
起始地址的offset,并非绝对地址,可使用SECTION来建立Table于绝对地址,例如:
table .section at 300 'code'
-即可将接下去之Table起始位置建立于绝对地址300。
Question
25
如何用I/O口测温度值?
Answer
用I/O口测试温度只能用I/O充放电来测量,需要三个I/O,两个输出口,一个输入口,两输出口分别连接参考电阻R1,热敏电阻R2,R1和R2的另一端相连,并接入输入口和电容C1的一端,电容的另一端接地。
用输入口的门限电平判断充放电的结束否,R1是为修正R2的测量误差,其原理:ΔT1=R1C1 ΔT2=R2C1-->
R2=ΔT2R1/ΔT1。
Question
26
请问要如何以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
27
用HT46/HT47/HT48/HT49系列单片机的BZ/BZB功能时感觉声音不够响亮,该怎么办?
Answer
BZ/BZB的输出频率要与蜂鸣器的频率对应,每种蜂鸣器都有各自的中心频率,设置的频率要尽量靠近中心频率。如果蜂鸣器直接接在BZ,BZB两个管脚,那么这两个管脚
对应的IO口都要设成输出。
Question
28
如果要进行I/O口远距离通讯等应用,I/O口是否需要外接保护器件?
Answer
I/O口采用斯密特输入,并且内部有对VDD和VSS的保护二极管,因此它的抗干扰能力比较强的,但是为了避免静电等强干扰源,建议在I/O口上串联一个电阻为好。
Question
29
HT48RA0-3 MCU 的9-Bits TMR值如何设定?
Answer
HT48RA0-3的9-Bits timer为一向下计数器,当缓存器TSR0,TSR1的t0-t8
bit的值计数到0时,timer停止计数,TOEF被清0。
因timer的时钟源只能为 fSYS/64,所以timer定时时间=(timer初始值+1) x64/ fSYS。
Question
30
HT48RA0-3 MCU的载波如何设定?
Answer
HT48RA0-3 MCU的载波可以通过两组缓存器CARL0,CARL1和CARH0,CARH1来设定载波的频率和载波的占空比。其中CARL0,CARL1用来设定载波低电平的宽度,
CARH0,CARH1用来设定载波高电平的宽度。
可通过下面的公式计算出CARL0,CARL1,CARH0,CARH1值:
CARL = ( fSYS x (1 D)x T) 1
CARH = ( fSYS x D x T) 1
D: 载波占空比(0 < D < 1)
fSYS: 系统时钟(Mhz)
T: 载波周期 (us)
Question 31
遥控接收编码一般可以采用什么方法?
Answer
遥控接收编码的方法较多,一般我们可以采用I/O口查询方法或者INT口中断响应方法。两者的主要区别是I/O口查询方式比较耗费单片机的运行时间资源,
需要不断的去侦测I/O的电平变化,以免漏掉有效的码值,可以通过设定合适的TIMER中断来轮询I/O口以节省资源提高效率;而INT口中断接收方式相对比较节省资源,不需要时刻进行侦测,但是INT口中断接收方式只在上升沿或者下降沿的时候才会触发处理,不能辨别相同周期不同占空比的波形特性,所以当编码所携带的逻辑“1”和逻辑“0”具有这种特性时,INT口中断触发可配以合软件或者TIMER中断来进行编码辨别接收。
注意事项
Question
1
为什么HT48XA0-2、HT48XA0-1之MP Bit6与bit7写入0,但读出却是1?
Answer
HT48XA0-2、HT48XA0-1 Data RAM从20H~3FH,因为两者之Data
RAM皆不超过40H,故其MP仅有6个Bits
(Bit0~Bit5)有效,亦即MP之Bit6与Bit7写入无效且读到始终为1。虽然MP写入20H读到E0H;实质上是指向20H,所以其间接寻址读写是完全正确的。
Question
2
已经进入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
3
请问OTP dice 烧录流程为何?
Answer
Question
4
我需要使用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
5
我使用OTP DICE,但是发现烧录不良率较高,这是为什么呢?
Answer
首先,要排除打线不良的问题,一般来说打线不良是OTP
DIE烧录不良的重要原因。如果你自己没有办法确定打线是否良好,可以通过技术支持的方式,将绑定完好没有封胶的样片寄到HOLTEK相关的技术服务部门分析。
Question
6
我使用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
7
请问MCU的Reset 与Oscillator线路设计有无需注意事项?
Answer
请参阅 "应用范例" 网页,其中的 "HA0075S" 供使用者参考。
Question
8
母体为HT48RA0A的OTP程序能否直接写入HT48RA0-1/HT48RA0-2芯片中?
Answer
不可以。原因有两点:
-
HT48RA0-2中,当读出PB口时,PB.6和PB.7都等于0,这个和HT48RA0A不同
-
HT48RA0-1/HT48RA0-2的OPTION地址不同于HT48RA0A
Question
9
使用HT48XA0-1/2设计时,MASK Type和 OTP Type有何差异?
Answer
用HT48RA0-1/2设计时,如PC0/REM必须设定成Level output
时要特别小心,由于OTP之PC0预设为carrier output pin,故power on
后的50-80ms间,PC0=LOW,当抓到OPTION后,PC0=HIGH,故在 power on时
PC0/REM会有一个 low pulse输出.
但HT48CA0-1/2在与上述HT48RA0-1/2同样设定时,由于无须读取 option,Power on
后PC0=HIGH,此差异设计时应考虑之。
Question
10
为何使用HT48RA3写Code,只能使用24 K ROM memory 中的8K
ROM,错误讯息是 "ROM-space limit exceeded" ?
Answer
HOLTEK 8 BIT MCU以8K ROM为一个Bank,故超过8K时即会有错误讯息产生.
程序设计人员应将24K分成三个Bank分开撰写,其Bank之使用法范例如下:
| include "ht48ca3.inc" |
| banknum1 |
EQU 20h |
| banknum2 |
EQU 40h |
| bankmask |
EQU 01fh |
| main .section at 00 'code' |
|
| start : |
|
| nop |
|
| nop |
|
| ; clr banknum |
|
| mov a,bankmask |
|
| andm a,bp |
|
| ; switch rombank to bank 1 |
|
| mov a,banknum1 |
|
| orm a,bp |
|
| call bank1proc |
|
| ; clr banknum |
|
| mov a,bankmask |
|
| andm a,bp |
|
| ;switch rombank to bank2 |
|
| mov a,banknum2 |
|
| orm a,bp |
|
| call bank2proc |
|
| nop |
|
| nop |
|
| jmp start |
|
| rombank 1 bank1 |
|
| bank1 .section at 00 'code' |
|
| bank1proc: |
|
| nop |
|
| nop |
|
| ret
|
|
| rombank 2 bank2 |
|
| bank2 .section at 00 'code' |
|
| bank2proc: |
|
| nop |
|
| nop |
|
| ret |
|
Question
11
当芯片内部的程序空间没有被写满时,如何处理空余的程序空间?
Answer
为了保证程序运行的可靠性,防止程序乱跑之后跳入未编程的ROM空间,建议将所有的空余程序空间全部写JMP 00H
,机器代码是2800H。这样一旦程序跑到空余程序空间,也会马上跳到程序开头执行,避免程序跑错。
Question
12
如何得知编译后总程序占多少空间?
Answer
可以打开.map文件来观看具体的ROM使用情况。.map文件和.prj文件在同一个目录下。如果找不到这个文件,请在编译程序前,打开HT-IDE3000中的菜单"选项-〉项目",在弹出的对话框中,选中"产生映射文件",然后再编译程序就会自动产出.map文件了。
Question
13
如打算用定时中断把处在HALT下的CPU唤醒,遇到这样的问题:
HOLTEK的资料上说: 暂停模式是通过"HALT"指令实现且造成如下结果:系统振荡器将被关闭
,那么这是否说在HALT状态下,定时器也不可用?
Answer
HALT状态下,系统振荡器关闭,若定时器时钟来源为系统时钟,则定时器在HALT下停止;若以非系统时钟(如RTC)为时钟来源,则在HALT下,定时器仍然工作,溢出中断时唤醒MCU。
Question
14
使用CICE48C00CCF模拟HT48XA1/XA3时皆正常,但模拟HT48XA5时,ICE却无法正常工作,请问是什么原因?
Answer
因为HT48XA5的ROM
SIZE较大,为40K*16,须使用新版的CICE48E000004A才可正常模拟HT48XA5。
其它
Question
1
HT48XA Remote Type MCU的ESD及Latch-up能力如何?
Answer
HT48XA Remote 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
2
HT48XA Remote Type MCU是否提供Dice form?
Answer
Holtek 同时提供OTP Type及Mask Type MCU的Dice form的量产服务,但使用OTP MCU
Dice量产时,客户要特别注意打线及烧录的操作问题。
Question
3
Power On Reset时间为何?
Answer
在3V时,Power On Reset时间为45ms~180ms。
Question
4
烧写OTP时,同一程序用HOLTEK的HandyWriter -F 和
河洛公司PRO-201(PRO-204,PRO-208)来烧写OTP时,为什么CheckSUM会不同?
Answer
因为CheckSUM
计算方式不同。
Question
5
使用Assembly Directives之MACRO,可否节省Program
memory之空间,对MCU之执行速度有何影响?
Answer
在Assemble后MACRO所属指令将填入Program space,故对Program
memory之空间和MCU之执行速度没有影响,但其使的程序简化,容易维护。
|