|
基本数据
Question
1
HT46 Cost-Effective A/D Type MCU内容如何?
Answer
HT46 Cost-Effective A/D Type MCU提供1K及2K的OTP Type及Mask
Type的MCU,其中HT46R46E/HT46C46E、HT46R47E/HT46C47E,内含EEPROM,具体规格功能请参考Holtek
Data Sheet。
Question
2
HT46 Cost-Effective A/D Type MCU提供何种类的封装型式?
Answer
HT46 Cost-Effective A/D Type MCU提供下列2种封装型式 :
| HT46X47 : |
18DIP/SOP |
| HT46X46 : |
18DIP/SOP |
|
|
Question
3
HT46 Cost-Effective A/D Type MCU有何重要功能及特性?
Answer
操作电压范围 2.2V ~ 5.5V 工业温度规格 -40°C ~ +85°C Low Voltage
Reset功能 OTP / Mask Type MCU兼容 其它请参考 Holtek Data
Sheet
Question
4
HT46 Cost-Effective A/D Type MCU的工作频率为何?
Answer
在5V、3.3V及3个电池的应用,工作频率达Max. 8MHz
(3.3V)。 在3V及2个电池的应用,工作频率达Max. 4MHz (2.2V)。
Question
5
HT46 Cost-Effective A/D Type MCU的ESD及Latch-up能力如何?
Answer
HT46 Cost-Effective A/D 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
6
TAD的时钟频率如何计算?
Answer
A/D转换需要76个TAD时钟,时钟的频率由ADCS1和ADCS0决定,其计算如下表:
| ADCS1 |
ADCS0 |
TAD频率 |
| 0 |
0 |
fSYS/2 |
| 0 |
1 |
fSYS/8 |
| 1 |
0 |
fSYS/32 |
| 1 |
1 |
Undefined |
Question
7
Power On Reset时间为何?
Answer
在3V时,Power On Reset时间为45ms~180ms;5V时,Power On
Reset的时间为35ms~140ms
Question
8
ADCLK时钟频率设定是否有限制 , 如何计算?
Answer
A/D Clock Period (TAD) 最快为1us ,
因此由ADCS1和ADCS0设定时钟频率需确定tAD不可小于1us . 其计算可参考下表:
| fsys |
A/D Clock Period
(tAD) |
ADCS1,ADCS0 = 00 (fSYS/2) |
ADCS1,ADCS0 = 01 (fSYS/8) |
ADCS1,ADCS0 = 10 (fSYS/32) |
ADCS1,ADCS0 =11 |
| 1 MHz |
2 us |
8 us |
32 us |
Undefine |
| 2 MHz |
1 us |
4 us |
16 us |
| 4 MHz |
*500 ns |
2 us |
8 us |
| 8 MHz |
*250 ns |
1 us |
4 us |
*星号表示ADCS1和ADCS0设定值不正确 ,
tAD小于1us .
Question
9
A/D type MCU其外部模拟讯号源输入A/D 的等效电路为何?
Answer
A/D type MCU其外部模拟讯号源输入A/D 模拟输入PIN的等效电路如下:

符号说明: VA : 外部的模拟讯号源 RA :
外部的模拟讯号源输出阻抗 AN0~AN7 : 模拟讯号输入PIN CPIN :
模拟讯号输入PIN输入电容, CPIN = 5pF D1,
D2 : PAD 上的保护二极管, VT=0.6V II : PAD
上的漏电流, II = ±1μA (最大值) SS :
模拟讯号取样开关 RSS : 模拟讯号取样开关等效阻抗; 大约等于100/200Ω at
5V/3V CS/H : 取样保持电容; 其值请参考下列表格
| |
HT46R23, HT46R24,
HT46R64, HT46R65 |
HT46C23, HT46C24,
HT46C64, HT46C65 |
HT46R47, HT46R22,
HT46R62 |
HT46C47, HT46C22,
HT46C62 |
HT46R63 |
HT46C63 |
| CS/H |
225.3pF |
94.2pF |
112.6pF |
71.3pF |
56.32pF |
35.6pF |
| A/D 分辨率 |
10-bit |
10-bit |
9-bit |
9-bit |
8-bit |
8-bit |
| A/D 转换时间 |
76tAD |
76tAD |
76tAD |
76tAD |
64tAD |
64tAD |
| A/D 取样时间 |
32tAD |
32tAD |
32tAD |
32tAD |
32tAD |
32tAD |
Note: tAD为 DATA SHEET 中 A/D clock period.
Question
10
如何看待 A/D 的输入阻抗呢 ?
Answer
在 A/D 不做转换时, SS 是处在 OPEN 的状态, 在 A/D 开始转换时, 会有两段时间, 一是
SAMPLE 的时间, 需要 32 个 tAD, 此时 SS CLOSE; 之后的 44个
tAD 时间SS OPEN, 执行 A/D 转换的工作,
执行A/D转换总共需要76个tAD, tAD为 DATA SHEET 中 A/D
clock period.
所以我们分两个部分来看 A/D 的输入阻抗 (1). 当模拟讯号取样开关SS OPEN 时, A/D输入阻抗,
只剩下漏电流产生的等效阻抗

此时输入阻抗大约等于 RVDD 并联 RVSS,
RVDD 与 RVSS 分别为 PIN 漏电流所产生的电阻,
RVDD = RVSS = 5V/1uA =
5MΩ RVDD 并联 RVSS = 2.5MΩ
(2). 当模拟讯号取样开关 SS CLOSE 时, A/D输入阻抗约等于如下之等效电路(忽略CPIN
)

此时输入阻抗分析如下: 以DC来分析, 其DC输入阻抗 大约等于 RVDD 并联
RVSS, RVDD 与 RVSS 分别为 PIN
漏电流所产生的电阻, RVDD = RVSS = 5V/1uA =
5MΩ RVDD 并联 RVSS = 2.5MΩ
以AC来分析, 其 time constant = (RA+RSS)×C,
其值如下表
| |
HT46R23, HT46R24,
HT46R64, HT46R65 |
HT46C23, HT46C24,
HT46C64, HT46C65 |
HT46R47, HT46R22,
HT46R62 |
HT46C47, HT46C22,
HT46C62 |
HT46R63 |
HT46C63 |
| CS/H |
225.3pF |
94.2pF |
112.6pF |
71.3pF |
56.32pF |
35.6pF |
| RA+RSS |
1.3kΩ |
1.3kΩ |
2.5kΩ |
2.5kΩ |
4.9kΩ |
4.9kΩ |
| Time constant |
0.29μs |
0.12μs |
0.28μs |
0.18μs |
0.28μs |
0.17μs |
Question
11
与 A/D 相关的另一个参数是 A/D Acquisition Time(tAC),
通常我们需要知道 A/D Acquisition Time(tAC) 的最小值为何?
Answer
其求法为, 假设 VA 模拟讯号源输入到 CS/H 的电压不得误差
VA/2048, 才能维持 10-bit ADC 的精确度, 所以当 SS CLOSE 时,
CS/H 的电压, 必须大于 VA-VA/2048
所以 VA-VA/2048 <
VA(1-EXP(-tAC/R×C);
R=RA+RSS, C=CS/H
VA-VA/2048 <
VA(1-EXP(-tAC/R×C) → 1/1028 >
EXP(-tAC/R×C) → -7.625 > -
tAC/R×C → tAC > 7.625×R×C
以不同型号的MCU, 可得到下表不同的值
| |
HT46R47 |
HT46C47 |
| CS/H |
112.6pF |
71.3pF |
| RA+RSS |
2.5kΩ |
2.5kΩ |
| tAC |
2.1μs |
1.4μs |
| A/D 取样时间 |
32tAD 32μs(最小值) |
32tAD 32μs(最小值) |
由上表可知 A/D 取样时间为 32tAD,根据规格tAD 最小值为
1μs,算出取样时间最小为32μs, 必须大于tAC。
Question
12
HT46R47 IC 的衬底接到VSS还是VDD上?
Answer
HOLTEK的MCU现在以POLY GATE为主,所以衬底是接到VSS。
功能说明
Question
1
PA已经Low为何没有唤醒MCU?
Answer
MCU的PA
Port唤醒为瞬间下降缘触发,若在执行HALT之前PA已经Low,且在HALT期间一直维持在Low,因为没有下降缘动作,所以无法唤醒MCU。
Question
2
为何外部中断有下降缘,仍然没有唤醒MCU?
Answer
虽然MCU可由中断唤醒,但严格的说是要靠中断要求旗标 (Request Flag)
EIF由0变1才能唤醒。若在MCU进入HALT之前EIF已经设定
(EIF=1),则再来之INT无法改变EIF的值,亦即是EIF不能由0变1,所以不能唤醒MCU。
Question
3
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
4
2个CLR WDT指令如何使用?
Answer
2个CLR WDT可以增加系统可靠性。若程序有2个主要的交替循环Loop;则可在1个Loop放CLR
WDT1,在另1个Loop放CLR
WDT2,一旦程序错误或受噪声干扰造成一直停留在某一个Loop时;WDT就会启动,发出WDT
Time-out重新启动CPU。
Question
5
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
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 (TMRC.4=1)
当Timer被打开后,Timer开始向上计数,若Timer OFF
(TMRC.4=0),则Timer立即停止。下次Timer再ON,则从上次停留值继续往上数,直到满位溢出00H时产生中断,同时Timer从TMR
Register重新Load初始值。
Question
7
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
8
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 (TMRC.4)
执行完以上步骤,程序可抽空Check TON值,若TON=0表示Pulse Width量度完成,Timer的值 x
2n即是Pulse时间的宽度。
Question
9
8-Bit PFD如何设定?
Answer
HT46X47为8-Bit Timer,使用PFD设定如下:
-
Configuration Option选择PFD Option Enable
-
依据所要频率选择Prescaler
(PSC2~PSC0=n)和TMR值 (fPFD = fSYS
/ 2n x (256-TMR) x 2 )
-
打开Timer ON (TMRC.4)
-
将PA.3设成Output Mode即PAC.3=0
执行以上设定后,若PA.3=1则PFD ON,若PA.3=0则PFD OFF
Question
10
PWM (6+2) Mode和 (7+1) Mode之频率为何?
Answer
PWM (6+2) Mode是将PWM的值分成4次送出,即每64个时钟送出PWM/4,其PWM频率为
fSYS/26。PWM (7+1)
Mode是将PWM的值分成2次送出,即每128个时钟送出PWM/2,其PWM频率为
fSYS/27。所以说 (6+2) Mode与8 Bit
Mode相比其PWM频率提高为4倍,而 (7+1) Mode与8 Bit Mode相比其频率提高为2倍。
Question
11
MCU Power On时,VDD的上升时间有何限制?
Answer
MCU Power On时为了使Reset可以完全成功,建议Power On
VDD上升时间在20ms以内。当电池逐渐没电,电池内阻增大,造成VDD上升缓慢会影响Reset成功。
Question
12
低电压Reset (LVR) 在HALT时,是否会耗电?
Answer
LVR在HALT时没有作用,所以没有耗电问题。
Question
13
Holtek MCU 之Stack 除了做CHIP reset之外, 有无其它方法可以重设 stack
pointer?
Answer
堆栈指针会受到中断与呼叫附程序与返回指令影响,除此之外,除了透过CHIP reset,
并无其它方法可以重设(reset) Holtek MCU 的堆栈指针。
Question
14
使用HT46R22时,在4MHz系统时钟下,内部定时器时钟来源的频率应该是多少?
Answer
此时内部定时器来源频率等于系统时钟频率,即也是4MHz。
应用说明
Question
1
间接寻址如何使用?
Answer
首先将要读写之Data Memory的地址先存入地址指针缓存器 (MP),然后对IAR执行读写 (例如: MOV a,
IAR),即可读到MP所指到的Data (MP的内容当地址)。间接寻址功能特别方便于数列 (array)
的处理,一般先将数列地址放入MP做运算后再读取所需的数列Data。
Question
2
为什么HT46X47之MP Bit7写入0,但读出却是1?
Answer
HT46X47 Data RAM从40H~7FH,因爲不超过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
因为HT46 Cost-Effective A/D 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)
仍在工作,而且全部I/O会保持HALT前状态,除了WDT OSC会耗一些电外,最要注意的是Input
Port是否浮接或者Output Port是否仍有负载,这些I/O处理要非常小心,否则会耗大电流。
Question
8
可以让外部中断不产生唤醒MCU吗?
Answer
在执行HALT之前先清除EMI再设定EIF=1,则外部中断就无法唤醒MCU。
Question
9
HT46 Cost-Effective A/D Type MCU PWM如何使用?
Answer
首先Configuration
Option需选择PWM功能,使用时,先设PDC.0=0再写入一个欲输出的值丢到PWM缓存器,当PD.0=0则PWM输出0;当PD.0=1输出PWM波形。
Question
10
HT46 Cost-Effective A/D Type MCU的 A/D Converter 如何使用?
Answer
使用A/D要执行以下动作:
-
首先定义Port B Configuration
(PCR2、PCR1、PCR0) 选定有几个模拟输入通道。
-
选定特定通道 (ACS2、ACS1、ACS0),此通道必需在前项选定通道内。
-
命令A/D开始转换 (ADCR.7=0 --> 1 -->
0),此时A/D显示忙碌 (EOCB=1)。
-
等待76个TAD时钟,A/D显示转换完成
(EOCB=0);并产生中断要求旗标(ADF=1)。
-
读取数据 (ADRL和ADRH)。
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
系统频率fSYS=4MHz,ADCLK = fSYS/32,A/D
input signal 是一个square wave(250us),A/D要对square wave之 level
进行转换,但是有时就转换不正确。
Answer
HT46 A/D Type MCU 的转换时间(A/D conversion
time)为76tAD。于此转换进行期间会先进行 S&H
动作,其时间为32tAD 。参考下图 : A/D Conversion Timing。
若 fSYS = 4MHz, ADCLK = fSYS/32,A/D
Sampling Time需32tAD = 256us 因 ADCLK之除级为free run
counter,所以A/D Sampling Time tolerance应为31~32 ADCLK;
248us<A/D S&H time<256us,就造成A/D conversion
结果有时数值正确,有时又不正确 。
此问题可修改 ADCLK 为fSYS/8,缩短A/D Sampling Time 为64us。
Question
14
当系统时钟选择RC振荡器时,应用电路上OSC1外接的电阻与电容有何功能?电容可以不加吗?
Answer
OSC1外加电阻是为了产生一bias以控制内部的RC充放电,电阻值决定RC震荡频率。外加电容建议为470pF,OSC1外加电容是为了避免和OSC2产生交越干扰,以便让OSC2输出一稳定1/4系统频率的频率。假如你不需要使用到OSC2输出的1/4系统频率的频率,那么电容器是可以省略的。
Question
15
当选择RC振荡电路作为系统时钟来源时,如何量测其振荡频率?
Answer
当选择RC振荡电路作为系统时钟来源,OSC2引脚将有系统时钟四分频信号输出,可以通过量测OSC2的频率信号再乘以4获得实际的系统时钟频率; 因为OSC2是NMOS
OPEN DRAIN结构,量测时需要OSC2接一个到VDD的上拉电阻。
Question
16
如何使用HT46 series 单片机的I/O口作为LCD驱动?
Answer
LCD显示由Common和Segment动态扫描实现,Common产生bias波形,具体波形与Common数有关,而Segment可以为方波。要用I/O驱动LCD,关键在于产生Common波形。
HT46
series的I/O可以设置为CMOS输出或Shmitt输入,所以可以产生三种状态:输出High、输出Low、高阻态(输入模式)
根据这三种状态,再配合I/O外接分压电阻,I/O可产生三种电平:VDD(I/O输出High)、VDD/2(I/O为输入模式,引脚电压由外接分压电阻产生)、0(I/O输出Low)。所以I/O可以模拟出3Commom的波形,可以驱动Common*Segment为3*n的LCD。
Question
17
如何使用MCU都有定时器自动重载功能?
Answer
如果希望在下一次定时器自动重载时,装载另一个初值的话,只需要给TMR赋新值就可以了。 如果希望定时器马上装载另一个初值,并开始计数的话,请做以下步骤:
-
关闭允许计数位TMRC.4;
-
给TMR赋新值;
-
打开允许计数位TMRC.4。
Question
18
HT46单片机怎样在PD口输出自己所需要的PWM频率?
Answer
HT46系列MCU的PWM输出频率是由系统频率决定的,Fpwm=Fsys/256;即系统频率定了之后,PWM频率也就定了。PWM频率是不可调的,只能调占空比(通过给PWM寄存器赋值)。
Question
19
如何使用外部晶振结合仿真器调试程序?
Answer
首先,在设置OPTION
的SYSFREQ时,Internal不要打勾。这样可以使用外部的晶振,外部晶振可以加在Interface
Card上面的Y1处。同时也要检查JP1处的跳线,是RC振荡还是x'tal。这样就可以使用外部晶振结合仿真器调试程序。
Question
20
进省电模式时,应如何设置I/O状态,使功耗最小?No load是指什么状态?
Answer
不用的I/O可以设置为输入模式,但一定要选择上拉电阻,否则会因为"浮空"而耗电。也可以设置为输出模式,并输出"0"。
No load是指I/O不任何接外部电路,即MCU只接VDD, VSS, OSC1/OSC2, RES。
Question 21
多通道AD转换时,是否会产生AD互相干扰的情况?
Answer
会产生相互干扰的情况。解决方法是,从一个通道AD转换结束到另一个通道A/D开始之前,应该加入一段延时,以便在AD器件的输入口稳定传送的数据,让AD器件准确读取。一般DELAY
10us以上。
Question 22
A/D转换中(A/D用8位逼近型),电压值应为N*参考电压/255还是N*参考电压/256?
Answer
由于AD转换的结果是离散型数值,所以A/D中的二进值并不表示某一个固定的值,它仅表示一个值的范围。即0表示(0,Vref/256)、1表示(1Vref/256,2Vref/256)……,采用V=N*Vref/256计算,每个区间的最大误差都是-Vref/256;采用V=N*Vref/255计算,每个区间的误差在-Vref/256到Vref/256之间,两者绝对误差范围是一样的,所以采用/255计算与采用/256计算都可以。
Question
23
PWM的(6+2)模式与(7+1)模式分别应用于什么场合?
Answer
两种模式在于PWM调制频率不一样,应用时根据PWM调制频率要求来选择。例如用于DA应用时,最好用(6+2)模式,调制频率高,载波容易过滤掉。
Question
24
如打算用定时中断把处在HALT下的CPU唤醒,遇到这样的问题:
HOLTEK的资料上说: 暂停模式是通过"HALT"指令实现且造成如下结果:系统振荡器将被关闭
,那么这是否说在HALT状态下,定时器也不可用?
Answer
HALT状态下,系统振荡器关闭,若定时器时钟来源为系统时钟,则定时器在HALT下停止;若以非系统时钟(如RTC)为时钟来源,则在HALT下,定时器仍然工作,溢出中断时唤醒MCU。
Question 25
如何在程序中区别是Power on还是/RES 重置?
Answer
如果在Power on或/RES重置的不同情况下,程序中某一个子程序需要做不同的处理,则需要判断是Power
on还是/RES重置,
判断的方法为:在这个子程序之后加入对某两个指定的RAM地址单元分别写入指定值以55H和AAH为例,而在这个子程序之前加入读取这两个指定的RAM地址单元的数值,
如果数值分别为55H和AAH,则判断为/RES重置,否则为Power
on。注意程序中其它地方不可对这两个指定的RAM地址单元进行改写。
Question 26
如果使用多个A/D转换通道进行采样,A/D相关缓存器的设置有何需要注意?
Answer
如果使用多个A/D转换通道进行采样,首先要注意A/D时钟来源是由系统时钟、缓存器ACSR中的ADCS1和ADCS0决定,由于允许的A/D时钟周期tAD的最小值是1us,因此要根据使用的系统时钟来选择合适的ADCS1和ADCS0进行分频,避免A/D时钟周期小于1us,产生不准确的A/D转换值;其次,若使用多个A/D通道进行采样,须注意每次只能进行一个通道的A/D转换,通过改变A/D转换器控制缓存器ADCR中的ACS2~ACS0位,可以选择哪一个仿真通道真正连接到内部A/D转换器;最后,ADCR中的PCR2~PCR0用来定义PB端口上哪些引脚为A/D转换器的模拟输入,哪些引脚为正常I/O,此时需注意如果要将PB端口的某一引脚作为模拟输入,则PB端口上PB0至该引脚均会被设置为仿真输入通道,而不能作为普通I/O来使用,另外当PCR2~PCR0改变后,ADCR中的START位必须在一到十个指令周期内先置位再立即清除为零,以保证ADCR中的EOCB位被正确置位。
Question 27
请问HT46R46E中EEPROM写操作的tWR延时如何检测控制?
Answer
HT46R46E中EEPROM执行完写操作命令并接收到停止状态命令,将会进入内部自动写周期,此时EEPROM不会执行其它的命令。
在执行其它命令之前需要提供tWR的延时,规格书中tWR最大值为5ms,是写周期的最长时间,以保证对EEPROM操作的可靠。
我们可以循环检测写周期什么时候结束,一种方法就是使用开始状态命令和写设备地址命令发送到EEPROM后去循环检测应答信号的方法来执行,如果EEPROM已经结束内部写周期,将返回ACK信号,否则将不会返回ACK信号。
Question 28
用HT46 A/D Type MCU做烟雾报警器,如何驱动蜂鸣器变频报警?
Answer
变频报警首先要确定变频的范围。比如2kHz~4kHz,频率的高低决定音调的高低。其次要确定采样周期。从输出频率2kHz提高到4kHz再下降到2kHz完成一个声波周期,声波周期的长短则决定声音的悠长还是急促。这个周期输出的频率变化不是连续的频率变化,而只能是逼近式的频率变化。比如从2kHz~4kHz这2kHz中,可采样一百次,2kHz/100=20Hz,说明每次采样的频率变化量是20Hz。一个周期中采样次数越多,输出的声音就越连贯、细化
。假定声波周期是0.4s,则采样周期为0.4s/200=2ms,也就是说每个采样频率要保持2ms才能改变。知道了变频报警的原理,就可以通过I/O口或PFD连续不断的输出变频方波来驱动蜂鸣器执行。
注意事项
- Question 1
HT46
Cost-Effective A/D Type MCU是否提供Dice form?
- Question 2
HT46R47
工作在3.3V时, LVR option 选择 enable 与 disable 时功耗差多少?
- Question 3
使用HT46系列的HT-ICE(集成了OTP烧录)来仿真A/D转换,需要注意些什么?
- Question 4
使用OTP
DICE,但是发现烧录不良率较高,这是为什么呢?
- Question 5
使用HT-Writer烧录OTP
DICE,联机的时候出现"MCU:Cannot
identify"信息会出现在信息窗口中,是打线不好?还是OTP有问题?
- Question 6
请问MCU的Reset
与Oscillator线路设计有无需注意事项?
- Question 7
3
pin 之resonator/crystal用于MCU之时基时, 电容之Vss pin可改接Vdd吗?
- Question 8
使用Assembly
Directives之MACRO,可否节省Program memory之空间,对MCU之执行速度有何影响?
- Question 9
写程序时,如欲在program
memory建立Table,如何建于绝对地址,为何ORG不适用,有其它方法吗
- Question 10
HT46R47资料上说"有两个物理寄存器对应TMR
的位置,写入TMR
会将初始值装入到定时/计数器的预置寄存器中",仿真时看到的只有一个TMR(0DH),同一地址对应两个单元(一个为预置寄存器,另一个为8位计数寄存器)?
- Question 11
如果要进行I/O口远距离通讯等应用,I/O口是否需要外接保护器件?
- Question 12
如何得知编译后总程序占多少空间?
- Question 13
使用HT-ICE模拟HT46R47E/HT46R46E,为何在HT-IDE软件中找不到该MCU?如何来仿真其EEPROM的功能?
- Question 14
请问在SIMULATION方式下,是否可以仿真HT46系列的AD转换?
- Question 15
使用带有PA控制寄存器(PAC)的8位MCU作母体调试程序时,为什么向PA
PIN脚的某一位写0再写1,在寄存器观察窗口中却看不到PA PIN脚这一位的值有所变化?
Question
1
HT46 Cost-Effective A/D Type MCU是否提供Dice form?
Answer
Holtek 同时提供OTP Type及Mask Type MCU的Dice form的量产服务,但使用OTP MCU
Dice量产时,客户要特别注意打线及烧录的操作问题。
Question
2
HT46R47 工作在3.3V时,LVR option 选择 enable 与 disable 时功耗差多少?
Answer
在一般操作电流约为 mA级 ,LVR option 选择 enable 与 disable
时,功耗差仅约为30uA。且在 HALT 状态下,LVR 会自动关闭的,所以在使用HT46R47时,不需担心 LVR
功耗问题。
Question
3
使用HT46系列的HT-ICE(集成了OTP烧录)来仿真A/D转换,需要注意些什么?
Answer
A/D仿真时,可直接将模拟输入电压接至ICE的AN0-
AN7口,但注意输入电压不能高于5V,否则有可能会打坏ICE。
用HT-ICE仿真A/D时还要注意Interface上JP2跳线的位置:
JP2 = 1-2:A/D转换参考电压为ICE内部电压(5V)。 JP2 =
2-3:A/D转换参考电压为外接电压(外接电压至JP3/JP4)。
Question
4
使用OTP DICE,但是发现烧录不良率较高,这是为什么呢?
Answer
首先,要排除打线不良的问题,一般来说打线不良是OTP
DIE烧录不良的重要原因。如果你自己没有办法确定打线是否良好,可以通过技术支持的方式,将绑定完好没有封胶的样片寄到HOLTEK相关的技术服务部门分析。
Question
5
使用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
6
请问MCU的Reset 与Oscillator线路设计有无需注意事项?
Answer
请参阅 "应用范例" 网页,其中的 "HA0075S" 供使用者参考。
Question
7
3 pin 之resonator/crystal用于MCU之时基时, 电容之Vss
pin可改接Vdd吗?
Answer
3pin之resonator/crystal 用于MCU之时基时,配合Layout方便, 电容之Vss
pin亦可改接Vdd。
Question
8
使用Assembly Directives之MACRO,可否节省Program
memory之空间,对MCU之执行速度有何影响?
Answer
在Assemble后MACRO所属指令将填入Program space,故对Program
memory之空间和MCU之执行速度没有影响,但其使的程序简化,容易维护。
Question
9
写程序时,如欲在program
memory建立Table,如何建于绝对地址,为何ORG不适用,有其它方法吗?
Answer
ORG expression : expression 是对于目前SECTION
起始地址的offset,并非绝对地址,可使用SECTION来建立Table于绝对地址,例如:
table .section at 300 'code'
-即可将接下去之Table起始位置建立于绝对地址300。
Question
10
HT46R47数据上说"有两个物理寄存器对应TMR 的位置,写入TMR
会将初始值装入到定时/计数器的预置寄存器中",仿真时看到的只有一个TMR(0DH),同一地址对应两个单元(一个为预置寄存器,另一个为8位计数寄存器)?
Answer
所谓的TMR预置寄存器是在芯片内部的一个BUFFER,用户是不可读不可写的。预置寄存器地址并不是TMR的地址,应该说它没有相应的地址。当定时器要装载初值时,它会从预置寄存器中取出。
Question
11
如果要进行I/O口远距离通讯等应用,I/O口是否需要外接保护器件?
Answer
I/O口采用斯密特输入,并且内部有对VDD和VSS的保护二极管,因此它的抗干扰能力比较强的,但是为了避免静电等强干扰源,建议在I/O口上串联一个电阻为好。
Question
12
如何得知编译后总程序占多少空间?
Answer
可以打开.map文件来观看具体的ROM使用情况。.map文件和.prj文件在同一个目录下。如果找不到这个文件,请在编译程序前,打开HT-IDE3000中的菜单"选项-〉项目",在弹出的对话框中,选中"产生映射文件",然后再编译程序就会自动产出.map文件了。
Question
13
使用HT-ICE模拟HT46R47E/HT46R46E,为何在HT-IDE软件中找不到该MCU?如何来仿真其EEPROM的功能?
Answer
在HT-IDE软件中,应选择HT46R47/HT46R46来模拟HT46R47E/HT46R46E,此外必须在
target board接上HT2201或者HT24LC02,如此就可仿真EEPROM的功能了。
Question
14
请问在SIMULATION方式下,是否可以仿真HT46系列的AD转换?
Answer
此方式下无法正常模拟,需在EMULATION方式下实现。
Question
15
使用带有PA控制寄存器(PAC)的8位MCU作母体调试程序时,为什么向PA
PIN脚的某一位写0再写1,在寄存器观察窗口中却看不到PA PIN脚这一位的值有所变化?
Answer
要向PA数据寄存器的某一位写入数据,必需先将PA的控制寄存器(PAC)的对应位清0,也就是将其设置为输出口时,才能有效的将数据写入数据寄存器(PA)中,反之,如果此位是输入状态则通过程序不能改变数据寄存器这一位的值。
其它
Question
1
请问PWM一般有哪些用途?
Answer
HT46系列MCU的PWM输出频率由系统频率决定,通过给PWM寄存器赋值可调占空比。 PWM比较常见的应用有:驱动喇叭或蜂鸣器,调节电流电压强度(如用于控制光的强度),控制步进电机,改变直流电机转速,进行DA转换,转换成稳定的电流电压信号(电源),用于信号调制等等。 |