HOLTEK产品之常见问答集

[复制链接]
 楼主| HOLTEK_FAE 发表于 2008-6-2 17:45 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;此问答集主要收录了一些在使用&nbsp;Holtek&nbsp;产品时,用户普遍会遇到的问题:<br /><br />Question&nbsp;1<br /><br />HT-ICE内部的VCC可提供多大的电流?I/O口最大的输出电流是多少?<br />Answer&nbsp;<br />仿真器内部的VCC可提供电流大概为600mA。所有的I/O输出电流总和在300mA左右。<br />________________________________________<br />Question&nbsp;2<br /><br />为何我的程序在设定16-&nbsp;bit&nbsp;Timer时,用Step观察的结果与我预期的不一样?&nbsp;<br />Answer<br /><br />由于ICE设计上的原因,对于16bit&nbsp;Timer的运作,是不宜用Step指令观察其结果,正确的方法应是在设定Timer的指令前后设定断点,再分别观察执行的结果。<br />________________________________________<br />Question&nbsp;3<br /><br />软件仿真是否能够生成OTP档?<br />Answer&nbsp;<br />不可以。但可以选择硬件仿真编译,编译器会提示无法连接ICE,但会生成OTP档。<br />________________________________________<br />Question&nbsp;4<br /><br />HT-49&nbsp;ICE仿真LCD时,为什么LCD没有显示?&nbsp;<br />Answer&nbsp;<br />首先检测LCD的输出波形对不,如果LCD没有输出波形,去调整ICE接口板上的VLCD(VR2)电阻,直到波形正常。如果还是没有显示,则查看LCD&nbsp;RAM对应的LCD有没有值,是否是因为对LCD&nbsp;RAM没有间接寻址造成的。<br />________________________________________<br />Question&nbsp;5&nbsp;<br />HT48&nbsp;I/O&nbsp;Type&nbsp;MCU的工作频率为何?&nbsp;<br />Answer&nbsp;<br />在5V、3.3V及3个电池的应用,工作频率达Max.&nbsp;8MHz&nbsp;(3.3V)。<br />在3V及2个电池的应用,工作频率达Max.&nbsp;4MHz&nbsp;(2.2V)。&nbsp;<br />________________________________________<br />Question&nbsp;6<br />当系统频率选用Int.&nbsp;RC&nbsp;+&nbsp;RTC时Timer的Clock&nbsp;Source有何选择?&nbsp;<br />Answer&nbsp;<br />当系统频率选用Int.&nbsp;RC&nbsp;+&nbsp;RTC时Timer的Clock&nbsp;Source有fSYS/4和RTC&nbsp;OSC两种选项,当选用fSYS/4时,则HALT时Timer跟着停止。若选用RTC&nbsp;OSC,则HALT时,此Timer不会停止;亦即是此Timer可以当Real&nbsp;Time&nbsp;Clock&nbsp;(RTC)使用。<br />________________________________________<br />Question&nbsp;7<br /><br />HT&nbsp;MCU具有LVR功能,它动作时,MCU的I/O、OSC等管脚处于何种状态?&nbsp;<br />Answer&nbsp;<br />当电压低于低电压复位电压时,此时LVR启动。<br />当最小工作电压&ltVdd&lt低电压复位电压时,I/O口处于初始输入状态,OSC起振。<br />LVR的复位电压会因制程的不同有一定漂移,具体请参看相关的Datasheet的D.C.参数表格。<br />________________________________________<br />Question&nbsp;8<br />没有用到的I/O&nbsp;Pin如何处理?&nbsp;<br />Answer&nbsp;<br />若不用之I/O&nbsp;Pin浮接时,会造成IC的耗电,最好的处理方式就是将不用的I/O&nbsp;Pin设定成Output&nbsp;Pin。如果要设成Input&nbsp;Pin则要选择Pull-high&nbsp;电阻,如果不选用Pull-high电阻,则将Pin脚接地。<br />________________________________________<br />Question&nbsp;9<br /><br />当直接向Tmr中写入数据时,会发生什么结果?&nbsp;<br />Answer&nbsp;<br />直接向Tmr写数据,会由于Tmr的工作状态分为两种情况。<br />当Tmr关闭时,写入的数据会直接修改到当前的计数寄存器和默认值寄存器。<br />如果Tmr是打开的,写入的数据只会修改默认值寄存器,当前的计数值不会被修改,当计数到溢出后,再从默认值寄存器中取值。<br />________________________________________<br />Question&nbsp;10<br /><br />MCU&nbsp;input&nbsp;pin&nbsp;若用于侦测110或220V/230&nbsp;AC&nbsp;讯号之过零点(Zero&nbsp;Crossing)功能时,外部应串接多大的电阻才不会造成&nbsp;IC&nbsp;损坏?&nbsp;<br />Answer&nbsp;<br />由&nbsp;AC&nbsp;LINE&nbsp;直接连接至&nbsp;IC&nbsp;I/P,主要须考虑的是来自AC&nbsp;LINE的浪涌电压及高频噪声可能对&nbsp;IC&nbsp;I/P造成的过流及过压破坏。<br />在110&nbsp;V之应用下,建议串接一个&nbsp;2M&nbsp;奥姆电阻。在220/230&nbsp;V&nbsp;之应用下,建议串接4M~5M奥姆。若使用SMD零件,<br />由于其耐压值只有200V,故必须串接2个2M~2.5M电阻。<br />________________________________________<br />Question&nbsp;11<br />请问Holtek&nbsp;MCU使用汇编语言中的RR和RL操作与使用C语言中的位移运算符&gt&gt和&lt&lt操作的结果是否相同?&nbsp;<br />Answer&nbsp;<br />两种操作的结果是不同的。使用汇编语言中的RR和RL指令,会将相应的数据存储器右移一位,结果放回数据存储器中,不影响C标(进位标志位)。而使用C语言中的位移运算符&gt&gt和&lt&lt会对运算符左边的操作数执行向右或向左的位移运动,移动的位数由运算符右边的操作数决定,如果进行右移操作则左边高位会补0,反之进行左移操作则右边低位会补0,同时需要注意右移或左移时的移出数据会进入标志位C,从而改变C标的原值&nbsp;。<br />________________________________________<br />Question&nbsp;12<br /><br />采用系统频率来自内部RC震荡的时候,请问误差是多少?&nbsp;<br />Answer&nbsp;<br />因为芯片工艺和温度等等影响,一般内部RC的误差最大可以达到40%左右。因此如果需要蜂鸣器输出或者计时等功能,建议采用外部RC或者晶振。&nbsp;<br />________________________________________<br />Question&nbsp;13<br />&nbsp;&nbsp;<br />如何在程序中通过软件设置来解决因干扰引起的重置问题?&nbsp;<br />Answer&nbsp;<br />防止干扰最有效的方法是去除干扰源、隔断干扰路径,但往往很难做到。在恶劣环境影响下,单片机可能受到较大干扰,最常见的现象就是重置,至于程序跑飞可以用软件陷阱和看门狗将程序拉回到重置状态。<br />Holtek&nbsp;MCU提供有TO(暂停旗标位)和PDF(看门狗溢出旗标位)旗标缓存器,可以用来判断重置原因;另外也可以自己在RAM中埋一些旗标。在每次程序重置时,通过判断这些旗标,可以判断出不同的重置原因;还可以根据不同的旗标直接跳到相应的程序段,这样可以使程序运行有连续性,用户在使用时也不会察觉到程序被重新重置过。<br />________________________________________<br />Question&nbsp;14<br /><br />当芯片内部的程序空间没有被写满时,如何处理空余的程序空间?&nbsp;<br />Answer&nbsp;<br />为了保证程序运行的可靠性,防止程序乱跑之后跳入未编程的ROM空间,建议将所有的空余程序空间全部写JMP&nbsp;00H&nbsp;,机器代码是2800H。这样一旦程序跑到空余程序空间,也会马上跳到程序开头执行,避免程序跑错。<br />________________________________________<br />Question&nbsp;15<br />生产中发现HT1380很多不能可靠起振,是否对晶体要求很高,HOLTEK是否有相应的指导意见?<br />Answer&nbsp;<br />出现晶体不可靠起振的原因比较多,与晶体的质量当然有关系,但1380对晶体的要求不高。首先你要根据我们datasheet上推荐的参数设计振荡电路,另外,晶体尽可能的靠近IC,避免因衰减导致不可靠起振。<br />________________________________________<br />Question&nbsp;16<br />在使用汇编语言编程时,针对如HT46R24等具有多个RAM&nbsp;Bank的MCU,是否可以对定义在非RAM&nbsp;BANK&nbsp;0中的变量进行直接寻址操作?<br />Answer<br />不可以。<br />在汇编语言中,不管BP是何值,直接寻址方式只能对RAM&nbsp;Bank&nbsp;0内的数据寄存器进行操作,如需对RAM&nbsp;BANK&nbsp;0以外的通用数据存储器进行操作的话只能通过MP1进行间接寻址操作。<br />________________________________________<br />Question&nbsp;17<br />HT46R23、HT46R24各提供2及4&nbsp;channel&nbsp;PWM&nbsp;output,如各channel之PWM&nbsp;register填入一样的值,&nbsp;请问于不同时间依次enable&nbsp;各channel之PWM&nbsp;output,是否可产生不同相位的PWM&nbsp;output&nbsp;波形?<br />Answer<br />无法产生不同相位的PWM&nbsp;output&nbsp;波形,&nbsp;因为各channel之PWM&nbsp;output&nbsp;来自同一个PWM&nbsp;counter。<br />________________________________________<br />Question&nbsp;18<br /><br />HT&nbsp;MCU具有LVR功能,它动作时,MCU的I/O、OSC等管脚处于何种状态?&nbsp;<br />Answer&nbsp;<br />当电压低于低电压复位电压时,此时LVR启动。<br />当最小工作电压&ltVdd&lt低电压复位电压时,I/O口处于初始输入状态,OSC起振。<br />LVR的复位电压会因制程的不同有一定漂移,具体请参看相关的Datasheet的D.C.参数表格。<br />________________________________________<br />Question&nbsp;19<br />Holtek&nbsp;MCU中断有优先级的区别,请问高优先级中断会不会打断低优先级中断?&nbsp;<br />Answer&nbsp;<br />Holtek&nbsp;MCU中断优先级区别是,当有多个中断申请同时存在时(对应中断请求旗标置起)MCU将首先响应高优先级的中断。但不论哪一级中断只要被MCU响应后,其对应的中断请求旗标会被重置且EMI(总中断控制位)会被清零从而除能其它中断,所以如果MCU已进入了低优先级的中断则不会被更高优先级的中断所打断,直到中断服务子程序返回后才会响应。<br />________________________________________<br />Question&nbsp;20<br /><br />如打算用定时中断把处在HALT下的CPU唤醒,遇到这样的问题:&nbsp;HOLTEK的资料上说:&nbsp;暂停模式是通过&quot;HALT&quot;指令实现且造成如下结果:系统振荡器将被关闭&nbsp;,那么这是否说在HALT状态下,定时器也不可用?&nbsp;<br />Answer&nbsp;<br />HALT状态下,系统振荡器关闭,若定时器时钟来源为系统时钟,则定时器在HALT下停止;若以非系统时钟(如RTC)为时钟来源,则在HALT下,定时器仍然工作,溢出中断时唤醒MCU。<br />________________________________________<br />Question&nbsp;21<br />程序中建的表格在ROM范围之内,并且程序语句占用空间也在ROM范围内,但编译时却报错:Program&nbsp;code&nbsp;is&nbsp;too&nbsp;large!原因可能出现在哪?<br />Answer<br />请注意“MOV&nbsp;A,&nbsp;OFFSET&nbsp;TAB_Address+Num”语句的使用。譬如TAB_Address是程序中所建立的表格的首地址,如果该表整体都在ROM范围内,而当TAB_Address+Num(Num是程序员自己定的一个地址偏移量)指向的地址却超出了ROM空间时,就会出现题目中所说的报错。<br />这一点很容易被忽略,所以要慎用“MOV&nbsp;A,&nbsp;OFFSET&nbsp;TAB_Address+Num”语句。建议用下面两语句来代用:<br /><br />MOV&nbsp;A,&nbsp;OFFSET&nbsp;TAB_Address<br />ADD&nbsp;A,&nbsp;Num<br />。。。(后面再视情况而定做ADD算法是否溢出的判断,作相应处理)<br />则不会出现这种错误,因为表地址TAB_Address是否在ROM范围内能很容易发现。&nbsp;&nbsp;<br />________________________________________<br />Question&nbsp;22<br /><br />把金属晶振外面的金属层与GND连接,这种接法是不是可以提高抗干扰性,使晶振更稳定?<br />Answer&nbsp;<br />一般来说,这种晶体外壳焊接到地,只是为了结构上的稳定:抗震!电路特性能够充分抑制EMI干扰。只有频率较高的晶体,EMI方面才需要着重考虑其振荡波形上的overshoot毛刺对CPU时序带来的问题!要求不高的地方,其实不必要太考虑,基本电路余量,合理配搭,组件参数,LAYOUT做好就足够了!<br />________________________________________<br />Question&nbsp;23<br />HT82A851R&nbsp;做为USB设备,哪些USB事件可使SIE向MCU发出中断请求?如何识别是哪种USB事件产生了中断?&nbsp;<br />Answer&nbsp;<br />HT82A851R&nbsp;做为USB设备,有以下USB事件可使SIE向MCU发出中断请求。<br />1.USB休眠(SUSPEND)。<br />2.USB复位(RESET)。<br />3.USB恢复(RESUME)。<br />4.USB各个端点被访问(ACCESS)。<br />以上USB事件产生中断时,可通过以下方法来识别:<br />1.当USB进入休眠状态时,USC(20H)&nbsp;缓存器之bit0(SUSP位)会被SIE设置为1,并产生USB中断,在USB中断服务程序中只要看到此位为1,就知道是USB休眠事件产生了中断。<br />2.当USB发生复位时,USC(20H)&nbsp;缓存器之bit2(URST位)会被SIE设置为1,并产生USB中断,在USB中断服务程序中只要看到此位为1,就知道是USB因复位而产生了中断。<br />3.当USB离开休眠而被恢复(RESUME)时,USC(20H)&nbsp;缓存器之bit3(RESUME位)会被SIE设置为1,并产生USB中断,在USB中断服务程序中只要看到此位为1,&nbsp;就知道是USB因RESUME而产生了中断。<br />4.当HT82A851R&nbsp;的端点0~端点4,任何一个端点被访问时,均可产生USB中断,其相应的中断旗标元EP0F~EP4F(USR&nbsp;(21H)缓存器之bit0~bit4))会被SIE设置为1,&nbsp;在USB中断服务程序中查看相应的旗标,就知道是那个端点发生了中断。<br />________________________________________<br />Question&nbsp;24&nbsp;<br />Phone&nbsp;MCU系列的看门狗时钟(WDT)有那些选择?&nbsp;<br />Answer&nbsp;<br />Phone的看门狗时钟(WDT)在掩模选项(Mask&nbsp;Option)中有四种选择:&nbsp;<br />1.&nbsp;&nbsp;&nbsp;&nbsp;使用WDT&nbsp;OSC,其时钟周期在5伏特时约&nbsp;78&micro;s,看门狗时钟产生溢位(WDT&nbsp;overflow)的时间为&nbsp;78&micro;s&nbsp;x&nbsp;2(WS2WS1WS0)+9,例如:WS2,WS1,WS0=7,则看门狗时钟溢位(WDT&nbsp;overflow)的时间为78&micro;s&nbsp;x&nbsp;27+9&nbsp;=&nbsp;5.11s。&nbsp;<br />2.&nbsp;&nbsp;&nbsp;&nbsp;使用T1&nbsp;(四分之一系统频率),其时钟周期在Normal&nbsp;Mode高频模式为1.117&micro;s&nbsp;x&nbsp;29&nbsp;,在Green&nbsp;Mode低频模式为122.07&micro;s&nbsp;x&nbsp;29&nbsp;,&nbsp;在Sleep及Idle省电模式下将不会有动作,而看门狗时钟产生溢位(WDT&nbsp;overflow)的时间为&nbsp;T1&nbsp;x&nbsp;2(WS2WS1WS0)+9。&nbsp;<br />3.&nbsp;&nbsp;&nbsp;&nbsp;使用32768Hz,其时钟周期在Normal&nbsp;Mode高频模式、Green&nbsp;Mode低频模式、Sleep省电模式皆为&nbsp;30.52&micro;s&nbsp;x&nbsp;29,在Idle省电模式下不会有动作,而看门狗时钟产生溢位(WDT&nbsp;overflow)的时间为&nbsp;30.52&nbsp;x&nbsp;2(WS2WS1WS0)+9。&nbsp;<br />4.&nbsp;&nbsp;&nbsp;&nbsp;不使用看门狗时钟&nbsp;(WDT&nbsp;Disable)。&nbsp;<br />________________________________________<br />Question&nbsp;25&nbsp;<br />HT48FXXE内嵌有EEPROM,微控制器在正常工作中是如何对其进行读/写的?&nbsp;<br />Answer&nbsp;<br />微控制器是通过EECR缓存器(在Bank1的40H地址)来控制的。<br />通过读写EECR缓存器,控制EEPROM的CS、SK和DI/DO信号,以软件的方式
dianda34 发表于 2008-8-20 10:11 | 显示全部楼层

不错

好贴!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

54

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

1

主题

54

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部