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

基本数据

 
Question 1

请问HT-IDE3000可否在Windows 2000上执行,需要注意什么吗?

Answer

HT-IDE3000可以在Windows 95以后的任何windows系统上执行,包括Windows 95/98/NT/2000/XP,但是在Windows NT/2000/XP上安装时,必需以系统管理者的权限才能成功安装。
 


Question 2

请问HT-ICE Clock可支持到的最高频率是多少?

Answer

HT-ICE的设计本身可以提供到24MHz,但实际使用上,还是要参考MCU本身的规格。


Question 3

目前Holtek有几种烧录工具可以使用,各有什么特点?

Answer

目前Holtek有三款烧录工具供用户选择。
新款HT-ICE仿真器:此款是将烧录器整合在HT-ICE仿真器上比较适合在做开发时做烧录使用。
HT-Writer烧录器:此款烧录器是最新一款小巧轻便独立的烧录工具,而最大的特点是,能够直接连接到PC RS232埠操作,或直接脱机独立烧录。
HandyWriter烧录器:此款烧录器目前已停止生产而以HT-Writer所替代。还有已在使用的客户,HOLTEK将继续支持服务到2004年底。


Question 4

HT-Writer烧录时芯片怎样和Textool和20-Pin Header对应?

Answer

HT-Writer烧录时只要将芯片的此12个PIN相应的和Textool上相应的脚连接
 

OTP芯片脚位名称 烧录讯号 40-Pin Textool位置 20-Pin Header位置
PA0 AD0 6 8
PA1 AD1 5 6
PA2 AD2 4 4
PA3 AD3 3 2
PA4 CLK 38 10
PA5 CS 37 12
PA6 RW 36 14
OSC1 Ground 33  
OSC3 Ground 13  
VDD VDD 32 18
RES VPP 31 20
VSS Ground 11 11, 13, 15, 16, 17, 19

(说明:有的芯片是没有OSC3的就只接其它11 Pin)

如果是Package的产品的脚位和烧录器上的Textool并不相合时,必须准备另一个转接卡来对应产品的封装。(HOLTEK有相应的OTP转换座)如果Dice打线芯片只要将烧录时需要的11或者12个Pin连接到40 Pin Textool或者20 Pin Header相应的位置(连接的导线要求最短最好)。


Question 5

HT-ICE内部的VCC可提供多大的电流?I/O口最大的输出电流是多少?

Answer

仿真器内部的VCC可提供电流大概为600mA。所有的I/O输出电流总和在300mA左右。


Question 6

IDE-3000软件在哪些操作系统下可正常工作?

Answer

HT-IDE3000允许在以下操作系统中运行: Windows 95/98/NT/2000/XP 。具体可参看HT-IDE3000手册。


Question 7

在硬件仿真HT46R71D时,测量仿真器充电泵输出脚VCHP的电压,发现没有倍压效果?

Answer

模拟时要从VCHP脚量测到倍压电压值,一定要保证程序是在全速运行模式。因为即使是在模拟过程中,也要保证充电泵的频率正常(20KHz左右)充电泵才会正常工作。


功能说明

 


Question 1

请问HT-IDE3000是否有支持Simulator,如何使用?

Answer

HT-IDE3000自V6.0起,提供HT46/HT47/HT48/HT49/HT95的Simulator,只要在Debug Options Dialog中,将Mode切到Simulation即可,另外,可搭配VPM(Virtual Peripheral Manager)以仿真一些外围组件。


Question 2

某些MCU在设定Mask Option时,某些Port的Pull High/Non Pull High Option为何只能选 
Pull High?

Answer

对于某些MCU而言,可能有些包装未将所有的脚位包出,为了不影响IC的正常功能, 将这些未包出之脚位强制为Pull High是有必要的。


Question 3

HT-IDE3000 的系统之下有一个 Generate Demo File(.DMO) 的功能,请问有何作用?

Answer

这是用来在没有安装整套 HT-IDE3000 的PC 上,Demo 已开发完成的 project 所用, 使用者只要携带 .DMO 档与 HT-DEMO.EXE 即可在未安装 HT-IDE3000 的PC 系统上,使用HT-ICE Demo 已开发的 project,但此时并无 Debug 的功能。


Question 4

为何我的程序在设定16- bit Timer时,用Step观察的结果与我预期的不一样?

Answer

由于ICE设计上的原因,对于16bit Timer的运作,是不宜用Step指令观察其结果,正确的方法应是在设定Timer的指令前后设定断点,再分别观察执行的结果。


Question 5

我已开发完成的OTP Code可以转到对应的Mask MCU投Code吗?

Answer

可以的,只需在Project Option Dialog下,将Micro-controller改选成Mask MCU,并将Mask Option设定正确,再ReBuild此Project即可。


Question 6

在Function的使用上大小限制为何?

Answer

使用Function不能超出8K的ROM Bank。如果Function太大,请将其分为数个较小的Function。


Question 7

请问,Holtek的C语言是否有关于位操作和读定义的缓存器地址的指令,如果有,它们是什么?

Answer

Holtek的C语言与标准C类似,不仅有标准C的位操作、&(按位与)、|(按位或)、^(按位异或)、 ~(取反)、<<(左移)、>>(右移)、还有相应的内建函数实现对整型和长整型的带和不带进位C的左移和右移。对已定义变量的地址的操作也与标准C相同,可通过指标运算符 * 和 & 来实现。详细的说明可参见http://www.holtek.com.cn/referanc/referanc.htm中的《HT-IDE3000使用手册》的第十章。


Question 8

HT-IDE3000的软件仿真时,程序能进AD中断吗?

Answer

软件仿真不能仿真A/D功能,无法进入A/D中断。


Question 9

在调试过程中,怎样在HT-IDE环境下修改变量的值?

Answer

可以在RAM窗口中修改变量的值。

  • 如果你的变量是用EQU方式定义的,那你就应该很清楚该变量所对应的RAM地址了,直接在RAM窗口修改该地址内容就可以了。

  • 如果你的变量是用DB定义的,那可以先在Watch窗口中输入".变量名",回车后会出现该变量的地址和当前值,但在Watch窗口是不能改变它的值的;你要再回到RAM窗口去改变变量的值。


Question 10

如何在Watch窗口中观察二维数组的值?

Answer

此处假设定义了二维数组Unsigned Char x[2][2];
目前HT-IDE3000中的Watch窗口不支持对2维数组的直接观测,当键入.x[0][1]其实所
观测的RAM单元和键入.x[0][0]是一样的,在Watch窗口也可以看到其指向地址是一样
的,这只是Watch功能的缺陷,实际的Holtek C是支持二维数组的,观察时
键入.x[0]可观测x[0][0]的值;
键入.x[1]可观测x[0][1]的值;
键入.x[2]可观测x[1][0]的值;
键入.x[3]可观测x[1][1]的值;


Question 11

使用 usb 转接线需要驱动程序吗? 是否还需借用pc并口的资源?

Answer

  1. HOLTEK ICE的USB联机,不需要安装任何的驱动!

  2. HOLTEK ICE的USB线一端是USB连接到pc上,另外一端是并口连接到ICE上,PC上的并口就不需要用到了。


Question 12

为什么在C语言编程时,在子程序中对LCD写入,却不会显示?

Answer

当在子程序中引用全局变量时,C编译器会使用BP,使BP清零。这时如对LCD BANK写,则会写到BANK 0中,不能使LCD显示。


Question 13

如果要把一个变量"aa equ 20h",如何把aa定义为位变量,如 cc =aa.1 dd=aa.2?

Answer

cc equ [20h].1 

或者cc equ [aa].1。


Question 14

请问:"LABEL DB 1"跟"LABEL DB ?"有什么区别?

Answer

两种定义变量的方法一样,建议用后一种,前一种是比较旧的用法。


Question 15

使用Holtek C 编写程序,在一个文件里定义了常量(const) table,在另一个文件里如何调用呢?

Answer

目前C COMPILER 无法做到此规格。

HT-IDE3000 PROGRAMMER'S GUIDE FOR HOLTEK C LANGUAGE.PDF P30 中有写明
'A CONSTANT STRING MUST BE USED IN THE C FILE WITH THE MAIN FUNCTION.'


Question 16

在用新版的HT46仿真器时,自带的烧写器能否烧写HOLTEK公司所有MCU,还是只能烧写HT46系列的MCU?

Answer

仿真器自带的烧写器可以烧写HOLTEK公司所有OTP类型的MCU。


Question 17

在Holtek C中怎样确定程序执行的周期数?

Answer

可以采用HT-IDE3000视图菜单下周期数功能。


Question 18

能否用HT-Writer2C的烧写器烧写HOLTEK所有MCU?

Answer

HT-Writer2C的烧写器可以烧写除HT48EXX以外的MCU。


应用说明

 


Question 1

为何在程序批注中会产生编译错误?

Answer

可能原因为C前处理器在批注中遇到C前处理器句柄,例如FDH, FEH。如果您的批注是使用非英文字集,请确定该句柄未被使用到。


Question 2

为何下列简单的程序也会有许多编译错误?

//def.h
extern int b

//a.c
#include "def.h"
unsigned char a;

Error(C2080) ./def.h 1 : illegal character '#'
Error(C2049) ./def.h 1 : syntax error; found '2' expecting ';'
Error(C2001) ./def.h 1 : unrecognized declaration

Answer

这些错误是由于def.h档案的最后一行无Carriage Return所致。请确定您的档案最后有Carriage Return。在HT-IDE Editor环境下编辑会主动在最后一行加入Carriage Return。


Question 3

如果定义一个变量

extern unsigned int tmp;
unsigned int tmp @ 0x40;

为何会产生编译错误?

Answer

如果您将变量指定特定地址,不可于同一档案中宣告其为外部变量,外部变量宣告系供未定义此变量之档案使用,例如:

//main.c
//extern unsigned int tmp; // it is wrong to declare tmp as 
//extern variable in the same file
unsigned int tmp @ 0x40; // define tmp variable
....

//fuction.c
extern unsigned int tmp; // tmp is not defined in the function.c, it should be declared as extern variable
....


Question 4

在Holtek C Compiler,如果宣告一个变量如下,

unsigned long int two_byte;

是否有简便的方法可以直接读取较高或较地字节内容?

Answer

较简便的方法可以使用union/struct数据结构如下;

union {
unsigned long word;
struct{
unsigned int lo; 
unsigned int hi; // be careful the order
}byte;
}mydata;

mydata.word = 0x1234;
lo = mydata.byte.lo //MOV A, _mydata
//MOV _lo,A
hi = mydata.byte.hi;//MOV A, _mydata[1]
// MOV _hi,A


Question 5

Holtek C中如何对指定数据单元中的某一位进行操作?

Answer

Holtek C可以对指定地址的数据单元的位定义位变量,语法是#define _c_0a_0,其中0a是数据单元地址,如果变量是用db定义的,其地址是由编译器分配的,需要通过Watch窗口先获得它的存储地址再定义位变量。


Question 6

如果在c中嵌入汇编,而汇编需使用内部资源,如寄存器、累加器等,这些资源是否需要人工保护? 还是由c编译器自己处理?

Answer

除了中断子程序ISR,调用任何汇编函数,都不需要保护寄存器。在中断子程序中,需要保护用到的寄存器(pc, acc ,status例外),当ISR函数执行完毕回到被中断之处前,将原先的数据回存给这些寄存器。


Question 7

为了降低单片机功耗采用halt 休眠方式,但是仿真时经常无故被唤醒,该如何处理呢 ﹖

Answer

单片机退出休眠的条件中包括中断申请标志从 0 到 1 的变化,也就是说任何中断申请标志从 0 到 1 的变化都会唤醒单片机。有些中断源虽然你没有允许其产生中断,但是它的中断申请标志位仍有可能被设置,这样就会唤醒单片机。为了避免这种现象的发生,可以预先将未用到的中断对应的申请标志位设置为 1 就可以解决了。


Question 8

请问如何在 WIN98/XP的MS-DOS模式, 执行HT-IDE 之 assemble/compile 程序?

Answer

assembly syntax如下:
hasmw32.exe /hide= window handle /chip=chipname /z asmfile objfile

Note that:
/hide=window handle (under DOS there is no window handle to setup 8 digit hex code, for example 12345678)
/chip=chipname chipname is the chip name being presently used
/z include debug information
asmfile specify assembly file name
objfile specify object file name

example:
hasmw32.exe /hide=12345678 /chip=ht48r50a-1 /z test.asm test.obj

The link syntax is as follows:
hlinkw32.exe /hide= window handle objs,tsk,map,dbg,libs
/hide=window handle (under DOS there is no window handle to setup 8digit hex code, for example 12345678) 
objs : specify object file name
tsk : specify task file name
map : specify map file name
dbg : specify debug file name
libs : specify library file name

example:
hlinkw32.exe /hide=12345678 t1.obj+t2.obj , t1.tsk,t1.map,t1.dbg,l1.lib+l2.lib


Question 9

请问在 WIN98/XP的MS-DOS模式, 执行HT-IDE 之 assemble/compile 程序, 要产生 list 档, 需要加上那一个参数?

Answer

assembly syntax:
hasmw32.exe /hide= window handle /chip=chipname /z asmfile objfile listfile
link syntax:
hlinkw32.exe /hide= window handle objs,tsk,map,dbg,libs


Question 10

在WIN98/XP的MS-DOS模式执行HT-IDE 之assemble/compile 程序,下达command如下:
hasmw32.exe /hide=1/chip=ht48c50 /z test.asm test.obj
在执行assemble/compile 程序时未能成功, 请问原因为何?

Answer 

A. 不可以用 /hide=1
  /hide=XXXXXXXX 必须是8位十六进制数值, 请修改成
  /hide=12345678
B. /chip=ht48c50 已无此颗 mcu, 要在 \include 目绿下可找到的mcu 例如ht48c50-1, 请修改成
  /chip=HT48C50-1

Question 11

在进行16位定时器仿真时,用软件仿真可以正确设置初值,但是连接仿真器时则不正常,该如何解决?

Answer

在连接仿真器时,单步运行会有此现象,如果让设置初值的语句连续运行就没有问题了。可以利用设置断点或者运行到光标处的功能实现。


Question 12

请问为何HT48RA0-2应有32 byte RAM, 但只用28~29bytes的空间而作C compiler时却无法写入?

Answer

C compiler 会保留一些RAM提供储存 interrupt & function parameter & local function var 之用, 至于保留多少 RAM 则是依程序中使用的interrupt & function parameter & local function var 而有所不同, 故会出现 RAM不能全部使用之情形。


Question 13

如何在C语言中定义和访问LCD显示内存?

Answer

int seg0 @0x142;

这语句就是表示,将变量seg0定义到bank1的42H。那么你可以直接对SEG0进行赋值操作,不需要像在汇编语言那样先对BP操作,再通过MP1/IAR1间接寻址。


Question 14

在C程序中调用汇编语言函数,汇编语言函数中的变量名是否可以随便定义?

Answer

不可以。汇编语言函数中的变量名由函数名后加不同的序号组成。根据变量的个数,不同变量的序号值依次按0~n取值。


Question 15

请问 HT-ICE 专用的 USB 连接线,是否可用于其它一般之计算机外设产品,例如 USB 打印机上?

Answer

HT-ICE 专用的 USB 连接线是特别设计给 HT-ICE 使用的,并不能连接于其它一般之计算机外设产品上。

 

Question 16

如何初步判断仿真器工作有无问题?

Answer

在IDE-3000软件工具菜单下有系统诊断功能,可初步判断仿真器工作是否存在问题。测试所有项目并提示无错误时,即可确认仿真器能正常工作。


Question 17

相同的Holtek C语言程序,为何选择HT48E系列生成的可执行代码比选择HT48R系列的长?

Answer

由于HT48E的RAM有两个BANK,在对每个变量操作前都会给BP赋值。若将所有变量声明在BANK0中则生成代码相同,详细内容可参阅《HT-IDE3000 HOLTEK C语言编程指南》。


Question 18

软件仿真是否能够生成OTP档?

Answer

不可以。但可以选择硬件仿真编译,编译器会提示无法连接ICE,但会生成OTP档。


Question 19

如何使用内置函数_delay()? 

Answer

此函数可使单片机执行所指定的周期数,若周期数为零则执行无穷的循环。_delay()函数的参数只接受常量而不接受变量。例:_delay(100),延时100个指令周期。


Question 20

为何在使用HT-Writer时,重新选择MCU类型后,HT-Writer软件会提示ROM Format Error?出现此类情况,烧写器是否还能正常工作? 

Answer

出现上述情况是因所选的MCU类型与之前下载至HT-Writer中的OTP MCU类型不相同而造成的,不会影响烧写器的工作。


Question 21

HOLTEK C语言中怎样实现对位变量进行操作? 

Answer

一、使用宏定义:
?#define cSetb0 0x01、#define cSetb1 0x02…………#define cSetb7 0x80
等效宏定义 #define bitset(var,bitnum) (var|=1<<bitnum)
?#define cClrb0 0xfe、#define cClrb1 0xfd…………#define cClrb7 0x7f
等效宏定义 #define bitclr(var,bitnum) (var&=~(1<<bitnum))
?#define cTestb0 0x01、#define cTestb1 0x02…………#define cTestb7 0x80
等效宏定义 #define bittest(var,bitnum) ((var)&(1<<bitnum))

二、使用绝对地址:
uchar flags @0x40;

#define key_scan_f _40_0 //flags...key_scan enable
#define key_dis_f _40_1
#define key_long_f _40_2 //flags..long_key
#define alarm_flag _40_3 //flags...send alam data
#define ms500_flag _40_4 //flags...500ms
#define min_flag _40_5 // flags...1 minute
#define buzzer_flag _40_6 //flags...driver buzzer

三、使用C中struct结构:
struct out{
unsigned motor:1; //电机
unsigned relay:1; //继电器
unsigned speaker:1; //喇叭
unsigned led_red:1; //红指示灯
unsigned led_green:1; //绿指示灯
unsigned :3; //高三位未使用
}out;
;;;;;;;;;
if(buzzer_flag)out.speaker=1;


Question 22

汇编程序调用C文件中的函数或变量时,应如何对C文件中被调用的函数或变量进行设置?

Answer

1、 在.C文件中仅需要将被汇编调用的C函数或变量名以大写字母来命名,由于HOLTEK C中没有public保留字,所以而不必将其宣告为public。
2、 在汇编文件中应将被调用的C函数或变量宣告为extern,注意汇编文件中应将被调用的C函数名或变量名前要加上前缀下划线(underscore)。


Question 23

混合语言编程中,.C文檔和.ASM文文件应该如何组织?

Answer

首先,不可以在.C文檔中include .ASM文檔,也不可以在.ASM文檔中include .C文档,否则会出现编译错误。其次,应该将不同的文档都添加到同一个工程(project)下。方式如下:点击菜单Project→Edit,然后将不同文件添加到此工程(project)下。涉及到不同文文件下函数的相互调用的情况,请参见HT-IDE3000使用手册。


注意事项

 


Question 1

我的Project在选用ICE上的Internal Clock时是正常的,但改成选External Clock时却无法正常执行,请问这是什么原因?

Answer

请确定IO Interface Card有无接好,上面的组件是否有脱落及选用的Crystal是否正确。
 
Question 2

我的HT-ICE无法与PC联机,为什么?

Answer

请检查这一套ICE是否有组件脱落的情形,若无,则再执行HT-IDE3000所附的自我诊断程序Hdiag32.EXE,若是Windows NT/2000/XP等系统,请确认安装时是否有用系统管理者的权限安装。


Question 3

为什么我同一个Project在甲乙两台PC产出的 .COD 档案的File Checksum不一样?

Answer

因为出.COD 文件内容HT-IDE3000安装时的版本信息,以及使用者设定的公司及区域等信息,因此会有这种情形发生,但这并不影响IC的生产制造。


Question 4

HT47 ICE之Interface Card上之RFADOSC-1与RFADOSC-2 IC有何功能,区别与如何使用?

Answer

当模拟HT47C20-1/HT47R20A-1时使用RFADOSC-1,当模拟HT47C20L时使用RFADOSC-2。


Question 5

HT47 ICE之Interface Card上之VDD与Low-volt-vdd有何区别与如何使用?

Answer

HT47 ICE之Interface Card上之VDD为ICE所提供的5V,Low-volt-vdd是 R to F 的电源,需和实际量产的产品同一电源。


Question 6

HT46 ICE之Interface Card上之VDD与EXT_VDD有何区别与如何使用?

Answer

HT46 ICE之Interface Card上之VDD为ICE所提供的 5V,EXT_VDD是给ADC的电源,需要注意Interface Card上有Jumper设定ADC的电源是使用ICE所提供的5V或是由USER外接电源,EXT_VDD需和实际量产的产品同样的电源。


Question 7

请问烧OTP Chip时须用何种烧录器?

Answer

须用HT-Writer,烧录时应将ID Check之功能Disable,因Chip中并无烧入ID。


Question 8

Holtek MCU在使用到32kHz Real Time Clock Oscillators时,于HT-ICE的Interface Card上,为何看不到32kHz Crystal的插座?

Answer

32KHz crystal 已build in 在ICE中,故用ICE模拟时,32KHz振荡由ICE产生,不必外加 crystal。


Question 9

请问HT-ICE有否USB界面可与PC联机?

Answer

IDE3000V6.2之后的版本可使用USB界面,转接之Printer to USB Cable 是专用的,请向Holtek或代理商洽询。


Question 10

请问HT-Writer如何与PC之USB连接?

Answer

市面上可购得之一般RS-232转USB Cable即可使用。


Question 11

全新的HT48 ICE为何在仿真器诊断时出现Testing IO EV0时PC Output Error?

Answer

请将HT48 ICE Interface Card 的SW2选至下方,因为上方代表的是Carrier Output,一般情况下仿真时请将SW2拨至下方。


Question 12

为何HT-Writer在用过一段时间后烧写时不率较高一些?

Answer

请检查是否有接触不良,再者可能是40 Pin插座较松或者灰尘较多,请经常清理座上的杂物。


Question 13

HT-Writer在使用时,插上电源后,红灯会闪烁,蜂鸣器会发出报错的响声,软件提示Flash Erase Time Out,这个是为什么?

Answer

这个属于正常现象,只要你重新Download一次OTP,烧写器即可正常工作。


Question 14

新买的仿真器,安装软件后,自检时为什么会出现缺少.dll文件?

Answer

这个因为可能你以前安装过老版本的应用软件造成,只要用光盘卸载PC上的应用软件,检查其它安装软件的目录下有没有相关的IDE软件的目录存在,若有的话,删除这些活页夹,再用光盘重新安装软件即可。


Question 15

在HT49 ICE的Interface Card上外接LCD液晶屏进行LCD仿真时,LCD液晶屏上的图形的显示亮度很暗或所有的图形完全点亮而且始终不变,这是由什么原因引起的?怎样解决?

Answer

这是由于VLCD的电压过低或过高造成的。可以通过调解电位器VR1,使VLCD的电压与液晶的驱动电压相符。


Question 16

为什么仿真HT48X05A-1时,PC.0口作为 输出"1"时电压只有2.5V左右?

Answer

所有的48系列仿真时都使用同一块Interface Card,在此Interface Card上面有个SW2的开关。当客户仿真HT48CA6 时,此开关拨到"HT48XA6",此时PC0和REM是共享的,REM口的输出电压在2.5V左右;当客户仿真其它HT48 MCU时,此开关应该拨到"Others",此时PC0口只作为输入/输出功能。

如果在仿真除了HT48CA6之外的HT48 MCU时,发现PC.0口输出电压不正常,应是SW2设置不正确,造成PC0和发射电路中三级管Q1的B极互相影响所致。


Question 17

请问OTP Dice 烧录流程为何?

Answer

  • Dice打线在COB上。

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

  • COB功能测试。

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


Question 18

Dice在打线后烧录和Package烧录有和不同?要注意那些?

Answer

  • Dice和Package在烧录时是有所不同的;Dice在没有封胶的情况下用紫外线擦除器擦除40~60分钟后,可以擦除重新烧录。

  • Dice打线后烧录和Package烧录,由于Dice有打线不良、PCB不良、烧录夹具接触不良等原因会造成烧录不良比率过高,所以一定要将烧录后不良的COB用紫外线擦除器擦除40~60分钟。擦除完后要检查打线和PCB,如果没有问题可以重新烧录,这样才能保证 Dice烧录的良率。


Question 19

我需要使用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 20

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

Answer

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


Question 21

我使用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 22

如何在仿真时选择A/D转换的参考电压来源?

Answer

在Interface Card上有一个JP2跳线,此跳线是用来选择电压的来源。如果选择HT-ICE提供的5V时源时,必须将JP2位置的第一和第二脚短路,如果选择其它外部电源的电压时,必须将JP2位置的第二和第三脚短路,这时外部电源接到JP3与JP4。


Question 23

使用HT-WRITER脱机烧写时,烧写失败后,红灯闪烁,如何进行下一次烧写动作?

Answer

在红灯闪烁后,按下按键后,烧写器进入待机模式,需要再次按下按键后,烧写器才会进行烧写。


Question 24

为何使用HT95 ICE时,当low battery detect被disable时是OK的,但当low battery detect被enable就有问题,缓存器LCDC的第四个bit (LBFG),没有任何改变,永远为1 (battery low) ?

Answer

Low battery detect 在 ICE上仿真时必须Disable,意即此功能无法仿真,然而在OTP及MASK IC,此功能是正常的。


Question 25

请问在 HT46 ICE上如何模拟 HT46R24/HT46C24之event counter / pulse width 功能?

Answer

由于在 HT46R24/HT46C24 之 28 pin IC包装上, TMR1 和 PD1, PWM1 是共脚位的, 但 HT46 ICE 之 I/O 适配卡上, TMR1却是独立的脚位, 在 ICE 上不能把 PD1当event counter / pulse width用, 请用 TMR1 即可。


Question 26

使用HT49R50A-1系列, HT-IDE3000 6.3,软件仿真希望烧录OTP,但是在项目路径下面没有找到.OTP文件,这是为什么?

Answer

要生成OTP文件,必须是选择OTP类型的MCU,并且要在硬件仿真的条件下编译之后才会生成。但是不一定需要仿真器,在硬件仿真条件下脱机编译后即可以生成相应的OTP文件。


Question 27

在HT46R65仿真机的Interface Card上,PD4和INT0同时有引出脚.但是在芯片上这两个管脚是共享的。仿真时如何连接这两个pin?

Answer

如果你使用的是最新的Interface Card(编号CPCB46SER0001A)的话,按照要求设置Interface Card上蓝色switch成HT46R65就可以了。如果你使用的是旧板Interface Card(编号CPCB46SER0000A),那么需要在目标板上,将PD4和INT0两个管脚连在一起,来实现仿真器和IC特性一致。


Question 28

如何把编好的程序编译产生可以拿到第三方的烧写器烧写的文件呢?

Answer

将程序编译后会产生一个*.otp文件,这就是烧录文件。HOLTEK的IC只能用HOLTEK或Hi-Lo的烧录器烧写程序。


Question 29

如何正确烧写序列号S/N码?

Answer

在HT-WRITER软件里打开S/N菜单,然后设置所要烧写S/N码的地址和数值。要注意的是烧写S/N码的地址要保证是程序空闲的地址,保证程序的正常运行!反之,如果烧写的S/N码万一和机器码相同的话,那就会使你烧写后的OTP和原先仿真器仿真的效果有很大的差别,也可能会使烧写后的OTP程序跑飞!


Question 30

烧写序列号S/N码后,烧写器在校验时会不会提示校验出错?

Answer

烧写序列号S/N码后不会影响烧写器对程序的校验,也不会出现校验出错。


Question 31

HT-49 ICE仿真LCD时,为什么LCD没有显示?

Answer

首先检测LCD的输出波形对不,如果LCD没有输出波形,去调整ICE接口板上的VLCD(VR2)电阻,直到波形正常。如果还是没有显示,则查看LCD RAM对应的LCD有没有值,是否是因为对LCD RAM没有间接寻址造成的。


Question 32

使用HT-IDE3000软件中的LCD软件仿真时,当仿真器和计算机共享220AC时,显示内容正常,否则不正常,为什么?

Answer

笔记本用自带电池时,二者是不共地的,这样就必然会引起一些问题。在仿真器和笔记本都使用220VAC时,仿真器和笔记本就同时共地,这样就不会影响LCD软件仿真的运行了。


Question 33

使用ICE进行硬件仿真时需要在适配卡中插入烧录好的IC吗?

Answer

HOLTEK的仿真器是实时仿真,没有必要在interface card上插烧录好的IC! Interface Card的插口是用来连接目标板的,通过调试写入IDE的程序来仿真你要达到的功能。调试正确后,就可以烧录otp上板子调试了。


Question 34

在使用HT-WRITER时,为什么无法将HT95A40P的OTP文档下载到HT-WRITER里?

Answer

可能此烧写器是在HT95A40P芯片出来前生产出来的,所以烧写器软件上并没有增加此芯片的讯息,故可以向代理商要求将HT-WERITER升级一下。


Question 35

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

使用CICE48C00CCF模拟HT48XA1/XA3时皆正常,但模拟HT48XA5时,ICE却无法正常工作,请问是什么原因?

Answer

因为HT48XA5的ROM SIZE较大,为40K*16,须使用新版的CICE48E000004A才可正常模拟HT48XA5。


Question 37

为何HT82K96E进行烧录时无法被烧录器正确辨认型号? 

Answer

因为HT82K96E为了其它应用上的需要,并未预置ID code,故无法被烧录器自动辨认。HT82K96E进行烧录时,请以人工方式选取型号。


Question 38

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

在模拟HT46R51A、52A、53A、54A时,使用MP0或MP1为何无法间接寻址整个Bank0? 

Answer

由于IDE-3000默认MP指标为7Bits,无法间接寻址到整个Bank0 RAM区,将掩模选项中MP指针选择为8Bits,可解决此问题。


Question 40

在硬件仿真HT46R71D时,为何不能给chprc缓存器赋值?

Answer

这种情况应该是充电泵的电源没有选择正确,要注意适配卡上的J3选择与实际应用要一致。J3是用于charge pump 电源的选择,当选择为INT_VDD时,则为3.3V,如果选择为EXT_VDD则电压由J9,J10上的电压决定(2.2v-5.5v)。。


Question 41

用HOLTEK C编写的由const声明数组常数时应注意的问题有哪些?

Answer

在读取数组常数某元素值时,编译器的编译结果是通过call指令来实现的,所以此时应特别注意堆栈的处理,尤其在中断程序中如果用到数组常数时, 则应保证在进入此中断之前至少还有2个堆栈预留,以防止堆栈溢出。


其它

 


Question 1

用C编写的多个文件的项目汇编通过后,把断点设在子文件中,运行程序后不会中断,请问是什么原因?

Answer

一般不会出现此问题,可能是HT-IDE3000软件运行出错,重新运行或重装HT-IDE3000可解决。