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

基本数据

 

Question 1

HT49 LCD Type MCU内容如何?

Answer

LCD型MCU提供2K、4K及8K的OTP Type及Mask Type各一对MCU,编号为HT49R30A-1/HT49C30-1/HT49C30L、HT49R50A-1/HT49C50-1/HT49C50L、HT49R70A-1/ HT49C70-1/HT49C70L总共9颗IC,规格功能请参考Holtek Data Sheet。


Question 2

HT49系列各个IC资源有何不同? 

Answer

细节规格请参考Holtek Data Sheet。


Question 3

HT49 LCD Type MCU提供何种类的封装型式?

Answer

HT49R30A-1 : 48 SSOP
HT49R50A-1 : 48 SSOP (与HT49R30A-1脚位功能相同,方便客户MCU升级使用)
HT49R50A-1 : 100 QFP
HT49R70A-1 : 100 QFP (与HT49R50A-1脚位功能相同,方便客户MCU升级使用)

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


Question 4

HT49 LCD Type MCU有何重要功能及特性?

Answer

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


Question 5

HT49 LCD Type MCU的工作频率为何?

Answer

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


Question 6

HT49 LCD Type MCU的ESD及Latch-up能力如何?

Answer

HT49 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 7

Power On Reset时间为何?

Answer

在3V时,Power On Reset时间为45ms~180ms;5V时,Power On Reset的时间为35ms~140ms


Question 8

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

Answer

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

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


Question 9

对于HT49R50A-1/HT49C50-1之48PIN SSOP封装之IC,各SEG线所对应的LCD RAM情况如何?

Answer

HT49R50A-1/HT49C50-1之48PIN SSOP共有19根SEG线,即:SEG10~SEG27 ,SEG32。
各个SEG线,与LCD RAM的对应关系如下:
SEG10 ~SEG27 : 4AH~5BH, SEG32 :60H。


Question 10

Ht49R50A-1是否有内置32768晶体?

Answer

HT49内部有两个晶体振荡电路,其一是32768晶体振荡电路,另一个是400KHZ~8MHZ的晶体振荡电路,这两个电路外部需要接晶体才能正常工作。另外,芯片内部还有一个WDT的RC振荡电路,外部不需要接任何电路。


Question 11

在HT49系列中如何使用LVD,它的检测值是多少伏?

Answer

只要将RTCC寄存器的第3位LVDC设为1,就可使能LVD功能。HT49系列的LVD的电压检测值在3.0V~3.6V这个范围内。当电源电压低于这个范围,RTCC寄存器的第5位VLD0就变为"1",表示低电压。但这个功能无法在仿真时使用。


功能说明

 


Question 1

HT49 LCD Type MCU有两组MP使用有何不同?

Answer

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


Question 2

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

Answer

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


Question 3

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

Answer

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


Question 4

为何外部中断有下降缘,仍然没有唤醒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 5

HT49 LCD Type MCU RTC、WDT和Time Base之时钟源选择?

Answer

HT49 LCD Type MCU之RTC、WDT和Time Base之时钟源必需同时选择,且由Mask Option选择。当系统频率为RTC OSC时,则RTC、WDT和Time Base之时钟源为RTC OSC。

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

  1. fSYS/4

  2. RTC OSC

  3. WDT OSC


Question 6

系统时钟选用RTC OSC时,RTC、WDT和Time Base之时钟源,仅能选RTC OSC?

Answer

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


Question 7

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

Answer

WDT OSC的时钟周期在工作5V时约65µs(32µs~130µs),看门狗时间约为65µs x 215=2.13 Sec到65µs x 216=4.26 Sec之间。


Question 8

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 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

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 11

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 12

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

Answer

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


Question 13

Timer/Counter之Timer Mode如何设定?

Answer

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


要执行Timer Mode要执行以下动作设定:
  1. Configuration Option选择时钟源

  2. TS选定时钟源

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

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

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

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

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


Question 14

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 15

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

Answer

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


要执行Pulse Width Mode要执行以下动作:
  1. Configuration Option选择时钟源

  2. TS选定时钟源

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

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

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

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

  7. 打开Timer ON (TMRC.4)

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


Question 16

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

Answer

1. 首先Configuration Option选择fSYS或fSYS/4
2. TS选择上项时钟源或RTC Output


Question 17

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

Answer

1. 首先Configuration Option选择 fSYS/TMR0 OV/Time Base Out
2. TS选择上项时钟源或 fSYS/4


Question 18

HT49 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 19

HT49 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 20

HT49 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 21

HT49 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 22

HT49 LCD Type MCU LCD频率如何设定?

Answer

设定LCD频率要执行以下设定:

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

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


Question 23

HT49 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 24

HT49 LCD Type MCU的系统频率有那些?

Answer

HT49系列MCU的系统频率来源有三种,如下:
1. 外部RC
2. 外部 Crystal
3. 外部 RTC OSC Crystal


Question 25

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

Answer

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


Question 26

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

Answer

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


Question 27

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

Answer

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


Question 28

HT49R70A-1 在省电模式下,哪些中断可以将其唤醒?

Answer

HT49R70A-1有6个中断,外部中断0,外部中断1,定时器中断0,定时器中断1,Time Base中断以及RTC中断。在HALT模式下,只要中断请求标志位EIF0/EIF1/T0F/T1F/TBF/RTF,其中任意一个标志位有"0--->1"的变化时,HALT就会被唤醒。


Question 29

请问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 30

在进入HALT 前已关闭所有的中断,而且也没打开看门狗,怎么还能被唤醒?

Answer

HALT唤醒是由中断的请求标志位唤醒的,当中断请求标志位有"0"-->"1"的变化时,就会唤醒HALT。所以即使中断并没有开放,但是只要满足中断产生的条件,中断请求标志位会照常立起,此时就会唤醒中断。如果希望在HALT以后中断不要唤醒的话,可以将相关的中断请求标志位置"1"。


Question 31

HT MCU具有LVR功能,它动作时,MCU的I/O、OSC等管脚处于何种状态?

Answer

当电压低于低电压复位电压时,此时LVR启动。

当最小工作电压<Vdd<低电压复位电压时,I/O口处于初始输入状态,OSC起振。

LVR的复位电压会因制程的不同有一定漂移,具体请参看相关的Datasheet的D.C.参数表格。


Question 32

LVR启动时和RES PIN 拉低有何区别?

Answer

区别在于:当低电压复位电压>Vdd>最小工作电压时,
若开启LVR,则OSC起振;
若让RES PIN 拉低,则OSC停振。


Question 33

在使用HT49R50A-1时如何把两个8位的定时器合并成16位的定时器?

Answer

  • 把两个定时器都设成定时模式,即TM1=1,TM0=0;
  • 设置定时器0的时钟源选择位 T0S=1,然在光罩选项Timer/Event counter 0 clock source 中选择 system clock。
  • 设置定时器1的时钟源选择位 T1S=0,然后在光罩选项Timer/Event counter 1 clock source 中选择 TMR0 overflow。

经过以上设置,Timer0即为Timer1的Clock,Timer0和Timer1 组成一个16位定时器。


Question 34

HT49RU80的UART有哪些中断触发条件?

Answer

当UART满足下列条件之一时,均可触发中断:
1、发送完成时
2、发送缓存器空间
3、接收完成时
4、过速错误
5、地址匹配
6、RX引脚唤醒后,系统需延时1024个系统时钟,满足堆栈未满和EMI、EURI被置位,可产生UART中断。


Question 35

HT49RU80的UART功能有哪些特性?

Answer

全双工异步传输,可选择8位或9位传输格式,可选择奇偶校验或无校验,可选择1或2位停止位,8位预分频波特率发生器,奇偶、帧、噪声和过速检测,支持中断和地址检测,独立的发送和接收允许,两层FIFO接收缓冲器,发送和接收中断。


 

应用说明

 


Question 1

间接寻址如何使用?

Answer

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


Question 2

为什么HT49X30之MP Bit7写入0,但读出却是1?

Answer

HT49X30 Data RAM从20H~7FH,因为Data RAM不超过80H,故其MP仅有7个Bits (Bit0~Bit6)有效,亦即MP之Bit7写入无效且读到始终为1。虽然MP写入70H读到F0H;实质上是指向70H,所以其间接寻址读写是完全正确的。


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

因为HT49 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

已经进入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 8

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

Answer

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


Question 9

为何有些Input Port执行完SET和CLR指令后变成Output Port?

Answer

这种状况会发生在一个Port (8 Bit)部份Bit当Input其它Bit当Output的情形。当MCU执行Read-Modify-Write指令 (SET、CLR、…)时,MCU会将整个Port读入,经运算修改部份Bit后再将整个Port写出。虽然程序没有对其中之Input Port修改,但如果不幸在读取Input Port时;其值刚好为0,则此Bit被写出为0,使得此Bit变成Output Port,为了避免此情况发生,建议对混用的I/O Port建立I/O Port RAM Buffer,所有指令皆对RAM Buffer运算;然后再将RAM Buffer搬到I/O Port,如此没有读Port动作即可避免问题发生。


Question 10

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

Answer

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


Question 11

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

Answer

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


Question 12

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

Answer

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


Question 13

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

Answer

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


Question 14

对于HT49 LCD type MCU,其VLCD引脚输入电压可以大于VDD吗?

Answer

HT49 LCD type MCU,其VLCD输入电压可以大于VDD,但是最高的LCD波形电压仍应维持在2.2V到5.5V工作电压范围内。换言之,对于R-type 1/2 或 1/3 bias,以及C-type 1/2 bias应用,VLCD输入电压范围为2.2V到5.5V;对于C-type 1/3 bias应用,由于内部有升压线路,最高LCD波形电压会是VLCD输入电压的1.5倍,所以VLCD输入电压范围为1.5V到3.6V。请注意,对于低压Mask型MCU,在应用时V2与VDD接在一 起,固定做为LCD的输入电压,最高LCD波形电压会是V2输入电压的2倍。


Question 15

COM3/SEG32 如何选择?

Answer

Mask Option 设定LCD duty为1/4 duty,COM3用上,否则为SEG32。


Question 16

HT49系列单片机在使用R方式提供液晶电压时,在VLCD脚有脉冲,是否会影响单片机运行,如何处理?

Answer

可以在VLCD脚对地加一电解电容,如果VLCD与VDD电压相同,可以在VLCD与VDD间串接一个电阻。


Question 17

49中的RTC为什么不建议用RTCC分频28-211?

Answer

如果32768Hz的RTC振荡器被选择作为系统时钟,对于唤醒后对定时灵敏的RTC中断的应用程序而言,在选择28、29和210的RTC中断分频时必须特别小心。对于这些分频比例,在唤醒后的1024个时钟周期内,接下来的RTC中断可能会被遗漏。


Question 18

我想问问如果我要放一个32k 的振荡器在 49 的 OSC3和 OSC4上。请问要接上什么值的电阻和电容器呢?如果用RC作32K的系统振荡,请问接上 OSC1 的电阻值又是多少?

Answer

如果OSC3/OSC4接上32768的晶振的话,可以不接电阻和电容器,但是要注意的是,OSC3/OSC4引脚不要过长,要尽量靠近IC,否则32768晶振会不容易起振。如果使用32K并且对时间要求严格的话,电容器可以作微调作用,当发现T过快,加大C值,T过慢,减小C值。但是C值不易过大,10~30pF为宜。

RC作为系统频率时,无法提供32K的频率,RC只能提供400K~8000KHZ的频率。并且超过DATASHEET里面建议的极限参数的应用是不建议客户使用的。


Question 19

以HT49系列设计产品如何才能省电?

Answer

要省电请:

  1. 将NC Pin设成output port或 input port + pull high

  2. RTCC.4(QOSC)设定为1

  3. 尽可能进入Halt mode

  4. LCD bias type选C type


Question 20

当选择RC振荡电路作为系统时钟来源时,如何量测其振荡频率?

Answer

当选择RC振荡电路作为系统时钟来源,OSC2引脚将有系统时钟四分频信号输出,可以通过量测OSC2的频率信号再乘以4获得实际的系统时钟频率;
因为OSC2是NMOS OPEN DRAIN结构,量测时需要OSC2接一个到VDD的上拉电阻。


Question 21

如何使用MCU都有定时器自动重载功能?

Answer

如果希望在下一次定时器自动重载时,装载另一个初值的话,只需要给TMR赋新值就可以了。
如果希望定时器马上装载另一个初值,并开始计数的话,请做以下步骤:

  • 关闭允许计数位TMRC.4;

  • 给TMR赋新值;

  • 打开允许计数位TMRC.4。


Question 22

如何使用外部晶振结合仿真器调试程序?

Answer

首先,在设置OPTION 的SYSFREQ时,Internal不要打勾。这样可以使用外部的晶振,外部晶振可以加在Interface Card上面的Y1处。同时也要检查JP1处的跳线,是RC振荡还是x'tal。这样就可以使用外部晶振结合仿真器调试程序。


Question 23

进省电模式时,应如何设置I/O状态,使功耗最小?No load是指什么状态?

Answer

不用的I/O可以设置为输入模式,但一定要选择上拉电阻,否则会因为"浮空"而耗电。也可以设置为输出模式,并输出"0"。

No load是指I/O不任何接外部电路,即MCU只接VDD, VSS, OSC1/OSC2, RES。


Question 24

使用HT49如何得到一个较长时间的内部定时?

Answer

可以考虑选用时钟来源为RTC溢出或者Time Base溢出为时钟来源,这样的话定时器的计数时钟来源就较长,相应的计数的溢出时间也会增长。如果使用HT49R50A-1/HT49R70A-1的话,也可以考虑将定时/计数器0和定时/计数器1合并成16bits(HT49R50A-1)或者24bits(HT49R70A-1)的定时/计数器,具体的操作方法参看datasheet的相关说明。


Question 25

怎样设置HT49系列的PFD产生38K CARRIER做IR输出?

Answer

首先在Mask Option里设置PA3 为PFD ENANBLE,然后可以选择TM0或TM1做为PFD输出的 CLOCK SOURCE。软件里面设置相应的TMR的N值使fint/[2*(256-n)]=38k Hz求出N的值。这样,当要发送载波时,PA3=0,停止发送时,PA3=1就可。


Question 26

HT49系列,如何正确修改BANK1的内容?

Answer

可以使用MP1/IAR1(02H)这一组间接寻址寄存器去访问BANK1内容,访问BANK1的内容,一定要在BP=01H的情况下使用MP1/IAR1(02H)去访问。要注意的是HT49有MP0以及MP1,它们分别于IAR0(00H),IAR1(02H)搭配使用,也即MP0/IAR0(00H),MP1/IAR1(02H)。


Question 27

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

Answer

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


Question 28

如打算用定时中断把处在HALT下的CPU唤醒,遇到这样的问题: HOLTEK的资料上说: 暂停模式是通过"HALT"指令实现且造成如下结果:系统振荡器将被关闭 ,那么这是否说在HALT状态下,定时器也不可用?

Answer

HALT状态下,系统振荡器关闭,若定时器时钟来源为系统时钟,则定时器在HALT下停止;若以非系统时钟(如RTC)为时钟来源,则在HALT下,定时器仍然工作,溢出中断时唤醒MCU。


Question 29

使用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 30

如何以C语言将数据写入LCD RAM?请以HT49R70A-1举一范例说明。

Answer

只要使用 int LCD_RAM[41] @0x140 ; 
将一LCD_RAM 定义在0x140(Bank1,共41个data),再依照C 的数组存取方法读写即可,详细请参考附件范例程序.

附件:HT49R70A_1-LCDRAM.c


Question 31

HT49CU80/HT49RU80指针缓存器MP0,MP1有何区别?

Answer

HT49CU80/HT49RU80间接寻址指针缓存器MP0 和MP1 的宽度都是8 位,被用来访问由间接寻址缓存器所对应的RAM。
MP0只能用于数据存储器(Bank0、Bank2 和Bank3),而MP1能用于数据存储器(Bank0、Bank2 和Bank3)和LCD显示内存Bank1。


注意事项

 


Question 1

HT49 LCD Type MCU是否提供Dice form?

Answer

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


Question 2

使用HT49R50A-1时,进入掩膜选项设置的时候,HT-IDE3000显示信息:"Note:Be sure to choose correct package",为什么?

Answer

这是提醒用户注意封装形式的信息!因为HT49系列封装不同的时候,I/O资源以及LCD会有所不同,这只是常规的提醒用户注意,属于正常现象。


Question 3

请问OTP dice 烧录流程为何?

Answer

  • Dice 打线在 COB 上。

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

  • COB 功能测试。

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


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

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

Answer

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


Question 9

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

Answer

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


Question 10

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

Answer

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

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


Question 11

请问要如何以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 12

使用HT-ICE 模拟HT49R50A-1/HT49C50-1之two programmable time / event counter 的 Pulse Width Measurement时, 如 T0ON由1变成0的瞬间TMR0 overflow, 即TMR0 = 00H, TMR1的值为何会少1, 如何补偿?

Answer

如T0ON由1变成0的瞬间TMR0 overflow, 由于Timing delay, 故TMR1之值必须以软件加1, 以补偿漏掉的一个Clock, 范例程序如下:
;---------------------------------
; File Name : pulse.asm
; purpose : example for pulse width measurement mode
;---------------------------------

include HT49R50A-1.inc
data  .section 'data'
count_h db ?
count_l db ?
code .section 'code'
org 00h
jmp start
org 20h
start:
clr intc0
clr intc1
mov a,10000000b
mov tmr1c,a
mov a,11100000b
mov tmr0c,a
set tmr1c.4
clr tmr1c.4
mov a,00h
mov tmr0,a  ; writing TMR0 places the starting value
mov a,00h
mov tmr1,a  ; writing TMR1 places the starting value
set tmr0c.4
set tmr1c.4
loop:
snz tmr0c.4  ; check the TON(tmr0c.4) bit
jmp count1  ; over(TON = 0),jump to count1
jmp loop  ; TON = 1,jump loop until the measure complete
count1:
mov a,tmr0
mov count_l,a
sz tmr0
jmp r111
inc tmr1
r111:
mov a,tmr1
mov count_h,a
jmp start
end

Question 13

在HT49系列中可以使用单一的低频32768Hz运行?

Answer

在MASK OPTION中设置fSYS为RTCCLK for fSYS,然后再设置相应的TMR,CLOCK SOURCE,那系统将以32768Hz运行。


Question 14

如果要进行I/O口远距离通讯等应用,I/O口是否需要外接保护器件?

Answer

I/O口采用斯密特输入,并且内部有对VDD和VSS的保护二极管,因此它的抗干扰能力比较强的,但是为了避免静电等强干扰源,建议在I/O口上串联一个电阻为好。


Question 15

当芯片内部的程序空间没有被写满时,如何处理空余的程序空间?

Answer

为了保证程序运行的可靠性,防止程序乱跑之后跳入未编程的ROM空间,建议将所有的空余程序空间全部写JMP 00H ,机器代码是2800H。这样一旦程序跑到空余程序空间,也会马上跳到程序开头执行,避免程序跑错。


Question 16

如何得知编译后总程序占多少空间?

Answer

可以打开.map文件来观看具体的ROM使用情况。.map文件和.prj文件在同一个目录下。如果找不到这个文件,请在编译程序前,打开HT-IDE3000中的菜单"选项-〉项目",在弹出的对话框中,选中"产生映射文件",然后再编译程序就会自动产出.map文件了。


Question 17

HT49系列LCD型单片机LCD偏置电压为R型时,内部分压电阻为多大(在DATASHEET中并未提及)?偏压方式选择R型或C型,那种方式功耗更低?

Answer

R型分压方式下,单片机内部分压电阻总值为200K~300K 奥姆左右。以驱动电压为3V的LCD屏为例,在系统电压为5V的时候,VLCD端应该外接120K奥姆的电阻连接到5V电源,以产生3V的LCD驱动电压。

在某些设计中,要求尽量降低功耗,通过实践,虽然不能准确的测量出R型和C型具体的功耗(电流值),但仍能够明显的比较出C型的功耗小于R型。这是由于R型分压方式会在VLCD和GND间引入几百K奥姆的分压电阻,由此造成几十微安固定电流的损耗,这是C型所不需消耗的电流。


Question 18

HT49XX-1系列单片机, 当LCD偏置电压选择1/2 bias时,在C type和R type 两种LCD驱动器偏置电压工作方式下, 由单片机内部产生的偏压VB值是否相同? 这两种工作方式有何特点?

Answer

在这两种工作方式下,偏压值VB相同 (VB=1/2Vlcd), 如果选为 "R" 型,不需要外接电容器,降低成本;如果为"C" 型,需要在 C1和 C2之间外接一个电容器。而C型的功耗小于R型。


Question 19

使用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 20

请问在使用带 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 21

HT49RU80的适配卡上怎么没有int的引脚?

Answer

HT49RU80 的int 与PB口共享,在适配卡上正确的标识应该是PB0/INT0 PB1/INT1 ,但实际在适配卡上只标出了PB0,PB1,没有int,会引起客户误会。 所以客户要注意。


Question 22

如果VDD上升时间太长, 可能导致什么问题发生?

Answer

有可能造成重置(power on reset)不良, 如此则MCU某些功能可能会不正常工作。


Question 23

如果将HT49R50A-1/HT49R70A-1的两组定时/计数器配合使用组成一组16bit/24bit,应用时有什么注意要点?

Answer

通过这种串联方式,HT49R50A-1/HT49C50-1/HT49C50L 可以创造出一个16 位的定时/计数器,而HT49R70A-1/HT49C70-1/HT49C70L 可以创造出一个24 位的定时/计数器。
需要注意的是为了避免不可预料的结果,用户都必须特别注意,初始化时必须先将定时/计数器1先致能,然后立刻禁能。正常使用时再使能即可安全运行。


Question 24

在HT49RU80中,为何有时使用到JMP和CALL指令时,程序仿真就出错?

Answer

HT49RU80程序缓存器包含2个BANK,BANK0(0000H-1FFFH)和BANK1(2000H-3FFFH)指令JMP 和CALL跳转范围为1个BANK,当执行JMP或 CALL 指令由程序由BANK0转到BANK1(或由BAN1转到BANK0时),必须在此两条指令前设置BP.5=1(或BP.5=0),程序才能正确运行。


Question 25

在使用ICE模拟调试HT49R10A-1程序时,为何执行SET BP 指令通过MP1 对LCD缓存器写值时程序执行出错?

Answer

通过MP1对LCD缓存器写值时应设置BP=01H,只对BP缓存器 BIT0写1操作,没有用到高7位建议不要对它写1操作。