HT单片机技术问答集.docx

上传人:b****8 文档编号:11240048 上传时间:2023-02-26 格式:DOCX 页数:15 大小:26.42KB
下载 相关 举报
HT单片机技术问答集.docx_第1页
第1页 / 共15页
HT单片机技术问答集.docx_第2页
第2页 / 共15页
HT单片机技术问答集.docx_第3页
第3页 / 共15页
HT单片机技术问答集.docx_第4页
第4页 / 共15页
HT单片机技术问答集.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

HT单片机技术问答集.docx

《HT单片机技术问答集.docx》由会员分享,可在线阅读,更多相关《HT单片机技术问答集.docx(15页珍藏版)》请在冰豆网上搜索。

HT单片机技术问答集.docx

HT单片机技术问答集

 此问答集主要收录了一些在使用Holtek产品时,用户普遍会遇到的问题:

Question1

HT-ICE内部的VCC可提供多大的电流?

I/O口最大的输出电流是多少?

Answer

仿真器内部的VCC可提供电流大概为600mA。

所有的I/O输出电流总和在300mA左右。

________________________________________

Question2

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

Answer

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

________________________________________

Question3

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

Answer

不可以。

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

________________________________________

Question4

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

Answer

首先检测LCD的输出波形对不,如果LCD没有输出波形,去调整ICE接口板上的VLCD(VR2)电阻,直到波形正常。

如果还是没有显示,则查看LCDRAM对应的LCD有没有值,是否是因为对LCDRAM没有间接寻址造成的。

________________________________________

Question5

HT48I/OTypeMCU的工作频率为何?

Answer

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

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

________________________________________

Question6

当系统频率选用Int.RC+RTC时Timer的ClockSource有何选择?

Answer

当系统频率选用Int.RC+RTC时Timer的ClockSource有fSYS/4和RTCOSC两种选项,当选用fSYS/4时,则HALT时Timer跟着停止。

若选用RTCOSC,则HALT时,此Timer不会停止;亦即是此Timer可以当RealTimeClock(RTC)使用。

________________________________________

Question7

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

Answer

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

当最小工作电压

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

________________________________________

Question8

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

Answer

若不用之I/OPin浮接时,会造成IC的耗电,最好的处理方式就是将不用的I/OPin设定成OutputPin。

如果要设成InputPin则要选择Pull-high电阻,如果不选用Pull-high电阻,则将Pin脚接地。

________________________________________

Question9

当直接向Tmr中写入数据时,会发生什么结果?

Answer

直接向Tmr写数据,会由于Tmr的工作状态分为两种情况。

当Tmr关闭时,写入的数据会直接修改到当前的计数寄存器和默认值寄存器。

如果Tmr是打开的,写入的数据只会修改默认值寄存器,当前的计数值不会被修改,当计数到溢出后,再从默认值寄存器中取值。

________________________________________

Question10

MCUinputpin若用于侦测110或220V/230AC讯号之过零点(ZeroCrossing)功能时,外部应串接多大的电阻才不会造成IC损坏?

Answer

由ACLINE直接连接至ICI/P,主要须考虑的是来自ACLINE的浪涌电压及高频噪声可能对ICI/P造成的过流及过压破坏。

在110V之应用下,建议串接一个2M奥姆电阻。

在220/230V之应用下,建议串接4M~5M奥姆。

若使用SMD零件,

由于其耐压值只有200V,故必须串接2个2M~2.5M电阻。

________________________________________

Question11

请问HoltekMCU使用汇编语言中的RR和RL操作与使用C语言中的位移运算符>>和<<操作的结果是否相同?

Answer

两种操作的结果是不同的。

使用汇编语言中的RR和RL指令,会将相应的数据存储器右移一位,结果放回数据存储器中,不影响C标(进位标志位)。

而使用C语言中的位移运算符>>和<<会对运算符左边的操作数执行向右或向左的位移运动,移动的位数由运算符右边的操作数决定,如果进行右移操作则左边高位会补0,反之进行左移操作则右边低位会补0,同时需要注意右移或左移时的移出数据会进入标志位C,从而改变C标的原值。

________________________________________

Question12

采用系统频率来自内部RC震荡的时候,请问误差是多少?

Answer

因为芯片工艺和温度等等影响,一般内部RC的误差最大可以达到40%左右。

因此如果需要蜂鸣器输出或者计时等功能,建议采用外部RC或者晶振。

________________________________________

Question13

  

如何在程序中通过软件设置来解决因干扰引起的重置问题?

Answer

防止干扰最有效的方法是去除干扰源、隔断干扰路径,但往往很难做到。

在恶劣环境影响下,单片机可能受到较大干扰,最常见的现象就是重置,至于程序跑飞可以用软件陷阱和看门狗将程序拉回到重置状态。

HoltekMCU提供有TO(暂停旗标位)和PDF(看门狗溢出旗标位)旗标缓存器,可以用来判断重置原因;另外也可以自己在RAM中埋一些旗标。

在每次程序重置时,通过判断这些旗标,可以判断出不同的重置原因;还可以根据不同的旗标直接跳到相应的程序段,这样可以使程序运行有连续性,用户在使用时也不会察觉到程序被重新重置过。

________________________________________

Question14

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

Answer

为了保证程序运行的可靠性,防止程序乱跑之后跳入未编程的ROM空间,建议将所有的空余程序空间全部写JMP00H,机器代码是2800H。

这样一旦程序跑到空余程序空间,也会马上跳到程序开头执行,避免程序跑错。

________________________________________

Question15

生产中发现HT1380很多不能可靠起振,是否对晶体要求很高,HOLTEK是否有相应的指导意见?

Answer

出现晶体不可靠起振的原因比较多,与晶体的质量当然有关系,但1380对晶体的要求不高。

首先你要根据我们datasheet上推荐的参数设计振荡电路,另外,晶体尽可能的靠近IC,避免因衰减导致不可靠起振。

________________________________________

Question16

在使用汇编语言编程时,针对如HT46R24等具有多个RAMBank的MCU,是否可以对定义在非RAMBANK0中的变量进行直接寻址操作?

Answer

不可以。

在汇编语言中,不管BP是何值,直接寻址方式只能对RAMBank0内的数据寄存器进行操作,如需对RAMBANK0以外的通用数据存储器进行操作的话只能通过MP1进行间接寻址操作。

________________________________________

Question17

HT46R23、HT46R24各提供2及4channelPWMoutput,如各channel之PWMregister填入一样的值,请问于不同时间依次enable各channel之PWMoutput,是否可产生不同相位的PWMoutput波形?

Answer

无法产生不同相位的PWMoutput波形,因为各channel之PWMoutput来自同一个PWMcounter。

________________________________________

Question18

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

Answer

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

当最小工作电压

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

________________________________________

Question19

HoltekMCU中断有优先级的区别,请问高优先级中断会不会打断低优先级中断?

Answer

HoltekMCU中断优先级区别是,当有多个中断申请同时存在时(对应中断请求旗标置起)MCU将首先响应高优先级的中断。

但不论哪一级中断只要被MCU响应后,其对应的中断请求旗标会被重置且EMI(总中断控制位)会被清零从而除能其它中断,所以如果MCU已进入了低优先级的中断则不会被更高优先级的中断所打断,直到中断服务子程序返回后才会响应。

________________________________________

Question20

如打算用定时中断把处在HALT下的CPU唤醒,遇到这样的问题:

HOLTEK的资料上说:

暂停模式是通过"HALT"指令实现且造成如下结果:

系统振荡器将被关闭,那么这是否说在HALT状态下,定时器也不可用?

Answer

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

________________________________________

Question21

程序中建的表格在ROM范围之内,并且程序语句占用空间也在ROM范围内,但编译时却报错:

Programcodeistoolarge!

原因可能出现在哪?

Answer

请注意“MOVA,OFFSETTAB_Address+Num”语句的使用。

譬如TAB_Address是程序中所建立的表格的首地址,如果该表整体都在ROM范围内,而当TAB_Address+Num(Num是程序员自己定的一个地址偏移量)指向的地址却超出了ROM空间时,就会出现题目中所说的报错。

这一点很容易被忽略,所以要慎用“MOVA,OFFSETTAB_Address+Num”语句。

建议用下面两语句来代用:

MOVA,OFFSETTAB_Address

ADDA,Num

(后面再视情况而定做ADD算法是否溢出的判断,作相应处理)

则不会出现这种错误,因为表地址TAB_Address是否在ROM范围内能很容易发现。

  

________________________________________

Question22

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

Answer

一般来说,这种晶体外壳焊接到地,只是为了结构上的稳定:

抗震!

电路特性能够充分抑制EMI干扰。

只有频率较高的晶体,EMI方面才需要着重考虑其振荡波形上的overshoot毛刺对CPU时序带来的问题!

要求不高的地方,其实不必要太考虑,基本电路余量,合理配搭,组件参数,LAYOUT做好就足够了!

________________________________________

Question23

HT82A851R做为USB设备,哪些USB事件可使SIE向MCU发出中断请求?

如何识别是哪种USB事件产生了中断?

Answer

HT82A851R做为USB设备,有以下USB事件可使SIE向MCU发出中断请求。

1.USB休眠(SUSPEND)。

2.USB复位(RESET)。

3.USB恢复(RESUME)。

4.USB各个端点被访问(ACCESS)。

以上USB事件产生中断时,可通过以下方法来识别:

1.当USB进入休眠状态时,USC(20H)缓存器之bit0(SUSP位)会被SIE设置为1,并产生USB中断,在USB中断服务程序中只要看到此位为1,就知道是USB休眠事件产生了中断。

2.当USB发生复位时,USC(20H)缓存器之bit2(URST位)会被SIE设置为1,并产生USB中断,在USB中断服务程序中只要看到此位为1,就知道是USB因复位而产生了中断。

3.当USB离开休眠而被恢复(RESUME)时,USC(20H)缓存器之bit3(RESUME位)会被SIE设置为1,并产生USB中断,在USB中断服务程序中只要看到此位为1,就知道是USB因RESUME而产生了中断。

4.当HT82A851R的端点0~端点4,任何一个端点被访问时,均可产生USB中断,其相应的中断旗标元EP0F~EP4F(USR(21H)缓存器之bit0~bit4))会被SIE设置为1,在USB中断服务程序中查看相应的旗标,就知道是那个端点发生了中断。

________________________________________

Question24

PhoneMCU系列的看门狗时钟(WDT)有那些选择?

Answer

Phone的看门狗时钟(WDT)在掩模选项(MaskOption)中有四种选择:

1.    使用WDTOSC,其时钟周期在5伏特时约78µs,看门狗时钟产生溢位(WDToverflow)的时间为78µsx2(WS2WS1WS0)+9,例如:

WS2,WS1,WS0=7,则看门狗时钟溢位(WDToverflow)的时间为78µsx27+9=5.11s。

2.    使用T1(四分之一系统频率),其时钟周期在NormalMode高频模式为1.117µsx29,在GreenMode低频模式为122.07µsx29,在Sleep及Idle省电模式下将不会有动作,而看门狗时钟产生溢位(WDToverflow)的时间为T1x2(WS2WS1WS0)+9。

3.    使用32768Hz,其时钟周期在NormalMode高频模式、GreenMode低频模式、Sleep省电模式皆为30.52µsx29,在Idle省电模式下不会有动作,而看门狗时钟产生溢位(WDToverflow)的时间为30.52x2(WS2WS1WS0)+9。

4.    不使用看门狗时钟(WDTDisable)。

________________________________________

Question25

HT48FXXE内嵌有EEPROM,微控制器在正常工作中是如何对其进行读/写的?

Answer

微控制器是通过EECR缓存器(在Bank1的40H地址)来控制的。

通过读写EECR缓存器,控制EEPROM的CS、SK和DI/DO信号,以软件的方式生EEPROM的操作时序,进而达到读写EEPROM的目的。

控制EEPROM数据存储器共有7条命令:

READ、ERASE、WRITE、EWEN、EWDS、ERAL和WRAL,详细可参看规格书。

________________________________________

Question26

HT48F06E具有使用内部PFD分频器输出信号驱动蜂鸣器的特性,如何应用?

Answer

BZ和/BZ分别与PB0和PB1共享引脚,要应用内部PFD分频器输出信号驱动蜂鸣器的功能时,将无源蜂鸣器的两个脚分别与BZ和/BZ相连接,在掩膜选项中选择OutputTypePB0-PB1为PFDBZ_BZB,设定定时器产生的PFD频率与蜂鸣器的鸣响频率一致,并且在使用中要将定时器输出致能,此时控制PB0的输出,为1则蜂鸣器响,为0则蜂鸣器不响。

________________________________________

Question27

HT48FXXE使用ISP烧录时,一共享到哪几个脚?

Answer

HT48FXXEISP烧录一共享到5个脚,分别为VSS,VDD,RESET,SDATA(PA0),SCLK(PA4)。

________________________________________

Question28

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

Answer

HT46系列MCU的PWM输出频率是由系统频率决定的,Fpwm=Fsys/256;即系统频率定了之后,PWM频率也就定了。

PWM频率是不可调的,只能调占空比(通过给PWM寄存器赋值)。

________________________________________

Question29

HT24LC系列&HT93LC系列SerialEEPROM的差异为何?

Answer

  

Feature    2-Wire(HT24LCxx)    3-Wire(HT93LCxx)

Interface    SerialdataI/O,Clock    Datain,Dataout,Clock,CS

ClockRate(max)    400K    2M

PageWrite    Yes    No

MemoryOrganization    X8bit    X8bitorx16bit

WritetoAllmode    No    Yes

Specificfeatures    HardwarewriteprotectWPpin    SoftwarewriteprotectEWDSinstruction

________________________________________

Question30

对HT93系列操作时,在两个不同的命令码发送之间,一定要将CS引脚拉低吗?

Answer

是的。

而且在两个命令码之间CS拉低时间至少要保持250ns,如果工作电压在2.2V时候,CS的拉低时间至少要保持1000ns。

要注意的是,如果此时你进行写操作,当你所要写的数据发送完毕,将CS拉低保持一定时间后拉高CS,在读到HT93系列给出的ready信号之后,你必须再一次作一次拉低CS的动作,才能给出你要进行的下一条命令码的START位,也就是说需要两次拉低CS引脚。

________________________________________

Question31

如何用I/O口测温度值?

Answer

用I/O口测试温度只能用I/O充放电来测量,需要三个I/O,两个输出口,一个输入口,两输出口分别连接参考电阻R1,热敏电阻R2,R1和R2的另一端相连,并接入输入口和电容C1的一端,电容的另一端接地。

用输入口的门限电平判断充放电的结束否,R1是为修正R2的测量误差,其原理:

ΔT1=R1C1ΔT2=R2C1-->R2=ΔT2R1/ΔT1。

________________________________________

Question32

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

Answer

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

另外,芯片内部还有一个WDT的RC振荡电路,外部不需要接任何电路。

________________________________________

Question33

请教一下holtekc语言中没有float类型,那小数该怎么表示?

Answer

用整数保存咯(原始的AD值或则将电压值扩大10倍,100倍保存),然后需要显示的时候再处理成小数来显示,计算的话就用整数计算就可以了,反正你的计算过程也没人看到,全部再内部处理的。

最简单的,就是用除法,除10,把位数一个一个的分离出来

比如1.01,扩大100倍后就是101,也就是65H,需要把它换成小数显示的时候,就是(65H/100)=1(整数部分),然后(65H%100)得余数1,然后1/10,得小数点后第一位,1%10得余数。

________________________________________

Question34

请问HT的工程师:

46RU25AD采样的速度如何?

能否满足交流采样的速度,频率40~70Hz,每周期采样80个点左右?

Answer

tadc典型为80个tad,tadcs典型为32个tad,整个时间为tadc+tadcs,而tad最小为1us,

所以典型为112us。

应该差不多够采80个点吧,这些在规格书里都有说明。

________________________________________

Question35

求AD转换C语言范例

Answer

unsignedlongad_temp;

voidmain()

{

_acsr=0x01;

_adcr=0x21;

_start=0;

_start=1;

_start=0;

while(_eoc);

*((unsignedchar*)&ad_temp+1)=_adrh;

*((unsignedchar*)&ad_temp+0)=_adrl;

//ad_temp移位

_nop();

}

________________________________________

Question36

HT46RB70的时钟是否支持RCOscillator?

Answer

HT46RB70的时钟不支持RCOscillator,其只支持CrystalOscillator(6Mor12M)。

________________________________________

Question37

HT82Keyboard/MouseMCU的ESD及Latch-up能力如何?

Answer

HT82Keyboard/MouseMCU

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1