|
基本数据
Question 1
HT48F I/O TYPE FLASH MCU WITH EEPROM内容如何?
Answer
HT48F I/O TYPE FLASH MCU WITH EEPROM 提供1K、2K、4K及8K的Flash
Program Memory ,及128x8,256x8之 EEPROM data memory,
编号为HT48F06E、HT48F10E、HT48F30E、HT48F50E、HT48F70E总共5颗IC,规格功能请参考Holtek
Data Sheet。
Question 2
HT48F I/O TYPE FLASH MCU WITH EEPROM有何重要功能及特性?
Answer
操作电压范围 2.2V ~ 5.5V;
工业温度规格 -40°C ~ +85°C;
Low Voltage Reset功能;
Flash Program Memory;
EEPROM data Memory;
其它请参考 Holtek Data Sheet.。
功能说明
Question 1
HT48F I/O TYPE FLASH MCU WITH EEPROM的工作频率为何?
Answer
在5V、3.3V及3个电池的应用,工作频率达Max. 8MHz (3.3V)。
在3V及2个电池的应用,工作频率达Max. 4MHz (2.2V)。
Operating voltage:
fSYS=4MHz: 2.2V~5.5V
fSYS=8MHz: 3.3V~5.5V
fSYS=12MHz: 4.5V~5.5V
Question 2
间接寻址如何使用?
Answer
首先将要读写之Data Memory的地址先存入地址指针缓存器 (MP),然后对IAR执行读写 (例如: MOV a,
IAR),即可读到MP所指到的Data (MP的内容当地址)。 间接寻址功能特别方便于数列 (array)
的处理,一般先将数列地址放入MP做运算后再读取所需的数列Data。
Question 3
HT48FXXE内嵌有EEPROM,微控制器在正常工作中是如何对其进行读/写的?
Answer
微控制器是通过EECR缓存器(在Bank1的40H地址)来控制的。
通过读写EECR缓存器,控制EEPROM的CS、SK和DI/DO信号,以软件的方式产生EEPROM的操作时序,进而达到读写EEPROM的目的。控制EEPROM数据存储器共有7条命令:READ、ERASE、WRITE、EWEN、EWDS、ERAL和WRAL,详细可参看规格书。
应用说明
Question 1
中断处理中可否允许相同的中断再进入?
Answer
理论上在进入中断时MCU会自动清除EMI旗标 (EMI=0),并禁止所有中断的再进入,若中断处理中用软件设定EMI旗标
(EMI=1),则在Stack有空之下,
所有中断(含相同中断)皆可再进入。要允许相同的中断再进入,需特别注意备份数据的处理,应避免已备份之数据被再进入的中断所破坏。
若不是非常紧急中断,一般不建议中断再中断。
Question 2
没有Push和POP指令;中断时数据要如何备份?
Answer
虽然没有Push和POP指令,韧体工程师仍可指定专用记忆RAM BYTE (例如:db ACCStack; for ACC
Storage)
储存中断时会被破坏的数据。首先将ACC存入专用内存,然后利用ACC依序将Status和其它数据搬移至各别之专用内存。在中断返回前,再反序将其它备份数据,Status和ACC回存,最后再执行RETI返回主程序。
Question 3
查表指令如何使用,有何注意事项?
Answer
查表指令有二种,一种是TABRDC指令,此指令读取目前指令所在表数据,另一种为TABRDL指令,此指令固定读取最后一页表数据。
要查表时首先必需将表的Low Address填入TBLP再执行查表指令,表的Low Byte
Data将存入指令指定的内存;表的High Byte Data被存入TBLH中,
要注意未满16-Bit之表Data高位被补0。
Question 4
WDT选用WDT OSC时钟源时,看门狗如何计算?
Answer
WDT OSC的时钟周期在工作5V时约介于8 ms~33 ms,看门狗的溢出时间为,时钟周期 x 2
^(WS2~WS0),例如:选S2~WS0=7,
则看门狗溢出时间将介于为8 ms x 128=1 sec 到33 ms x 128=4.2 sec。
Question 5
MCU已经进入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 6
可以让外部中断不产生唤醒MCU吗?
Answer
在执行HALT之前先清除EMI再设定EIF=1,则外部中断就无法唤醒MCU。
Question 7
没有用到的I/O Pin如何处理?
Answer
若不用之I/O Pin浮接时,会造成IC的耗电,最好的处理方式就是将不用的I/O Pin设定成Output
Pin,且输出”Low”。如果要设成Input Pin则要选择Pull-high
电阻,如果不选用Pull-high电阻,则将Pin脚接地。
Question 8
2个CLR WDT指令如何使用?
Answer
2个CLR WDT可以增加系统可靠性。若程序有2个主要的交替循环Loop,则可在1个Loop放CLR
WDT1,在另1个Loop放CLR WDT2,
一旦程序错误或受噪声干扰造成一直停留在某一个Loop时,WDT就会启动,发出WDT Time-out重新启动CPU。
Question 9
使用带有PA控制寄存器(PAC)的8位MCU时,为什么向Port A(PA) 的某一位写0再写1,在寄存器观察窗口中却看不到这一位的值有所变化?
Answer
要向PA数据缓存器的某一位写入数据,必需先将PA的控制缓存器(PAC)的对应位清0,也就是将其设置为输出口时,才能有效的将数据写入数据缓存器(PA)中,
反之,如果此位是输入状态则通过程序不能改变数据缓存器这一位的值。
Question 10
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 11
8-Bit TMR值如何设定?
Answer
8-Bit Timer/Counter为一向上数之计数器 (Counter),每当Counter数到255 (0FFH)
溢出到0时产生中断 (Interrupt),所以若要计数为N (N < 256);则TMR值要设定成 256-N,
设定好后启动TMR;TMR即从设定值往上数到255溢出到0 (即256),故所得值即256-(256-N)=N。
Question 12
16-Bit Timer/Counter的设定和读取顺序?
Answer
HT48FxxE I/O Type FLASH MCU WITH EEPROM内部Data
Bus均为8-Bit,对于16-Bit数据的读写必需两次才能完成,对16-Bit
Timer/Counter的写必需先写Low Byte然后写High Byte, 而读的顺序必需先读High
Byte然后读Low Byte。
Question 13
16-Bit TMR值如何设定?
Answer
16-Bit Timer/Counter为一向上数之计数器 (Counter),每当Counter数到65535
(0FFFFH)溢出到0时产生中断 (Interrupt),所以若要计数为N (N < 65536);则TMR值要设定成
65536-N, 设定好后启动TMR;TMR即从设定值往上数到65535溢出到0
(即65536),故所得值即65536-(65536-N)=N。
Question 14
PA已经Low为何没有唤醒MCU?
Answer
MCU的PA
Port唤醒为瞬间下降缘触发,若在执行HALT之前PA已经Low,且在HALT期间一直维持在Low,因为没有下降缘动作,所以无法唤醒MCU。
Question 15
为何外部中断有下降缘,仍然没有唤醒MCU?
Answer
虽然MCU可由中断唤醒,但严格的说是要靠中断要求旗标 (Request Flag) EIF由0变1才能唤醒。若在MCU进入HALT之前EIF已经设定
(EIF=1),则再来之INT无法改变EIF的值,
亦即是EIF不能由0变1,所以不能唤醒MCU。
Question 16
在HT-IDE3000系统中,除错菜单的模式选择中的软件模拟为何是反白的,无法选择?
Answer
在HT-IDE3000系统里,并不是所有型号的MCU都提供软件仿真功能的,HT48FXX系列就暂不提供此功能。
Question 17
HT48FXX的MCU中,有BANK0或BANK1。如果是读写RAM单元的操作,怎样确定是在BANK0中还是在BANK1中呢?
Answer
HT48FXX的MCU中,BP的取值确定了读写操作RAM的BANK区。BP为0时在RAM的BANK0区,BP为1在RAM的BANK1区。需注意的是,对BANK1区进行读写操作时,必须用MP1来间接寻址操作,否则无效。
Question 19
当系统时钟选择RC振荡器时,应用电路上OSC1外接电容有何功能?电容可以不加吗?
Answer
OSC1外加电容是为了避免和OSC2产生交越干扰,以便让OSC2输出一稳定1/4系统频率的频率。假如你不需要使用到OSC2输出的1/4系统频率的频率,那么电容器是可以省略的。
Question 20
使用外部RC振荡时,如何确定准确频率?
Answer
外部RC是接在微控制器的OSC1端,OSC2端是悬空的。如果要测量准确的频率,则在OSC2端接上拉2K奥姆的电阻,使用示波器测量OSC2端,就可以测量到Fsys/4的准确频率。
Question 21
对于有驱动蜂鸣器功能的芯片,在应用时候已选定了其相应IO口为PFD BZ_BZB,并且硬件电路连接无误,但在按指定IO口输出状态去驱动蜂鸣器时,蜂鸣器却不响是什么原因?
Answer
芯片是应用由定时器产生的PFD频率驱动蜂鸣器使其发声的,请检查是否已将定时器输出致能,同时定时器的溢出时间使得PFD的频率与蜂鸣器的频率相一致,其中PFD的信号频率可由等式Fint/[2x(256-N)]计算。
(注:Fint为定时器产生溢出中断的频率,N是设定的装入定时器的初始值。)
Question 22
HT48F06E具有使用内部PFD分频器输出信号驱动蜂鸣器的特性,如何应用?
Answer
BZ和/BZ分别与PB0和PB1共享引脚,要应用内部PFD分频器输出信号驱动蜂鸣器的功能时,将无源蜂鸣器的两个脚分别与BZ和/BZ相连接,在掩膜选项中选择Output
Type PB0-PB1为PFD BZ_BZB,设定定时器产生的PFD频率与蜂鸣器的鸣响频率一致,并且在使用中要将定时器输出致能,此时控制PB0的输出,为1则蜂鸣器响,为0则蜂鸣器不响。
Question 23
使用READ指令读取HT48F06E/10E/30E和HT48F50E/70E中的EEPROM数据有区别吗?
Answer
有。READ指令用来读取EEPROM中一个或多个字节的数据,执行该指令操作,CS应置高准位紧接着为起始位“1”和两位指令编码“10”,所有的传输经由DI位。之后地址信息以高位在前的模式发出,对于EEPROM容量为128×8bit
的HT48F06E/10E/30E而言传输7位地址,而对于EEPROM容量为256×8bit的HT48F50E/70E则需要传输9位地址,一个空位必须插入指令编码的最后一位和地址的MSB之间。地址A0发出后,数据信息以高位在前的模式在SK上升缘到来时由DO位读取。其时序图如附件图表所示。

Question 24
存取EEPROM的数据寄存器与存取内部特殊功能寄存器、普通寄存器的方式有何不同?
Answer
存取内部特殊功能寄存器采用直接寻址方式,存取普通寄存器可用直接寻址或通过间址指针(MP0、MP1)作间址寻址来进行访问。而对于EEPROM的数据寄存器的存取则与以上两者不同,它需要通过位于BANK
1内的控制寄存器EECR(40H)进行间接寻址访问。
存取EEPROM的数据寄存器是通过向EECR写入数据并且经三线串行通讯来实现的。
采用指令包括以下7条:READ,ERASE,WRITE,EWEN,EWDS,ERAL,WRAL。对于七条指令的功能描述及其时序请参看规格书。
Question 25
写程序时,如欲在program memory建立Table,如何建于绝对地址,为何ORG不适用,有其它方法吗?
Answer
ORG expression : expression 是对于目前SECTION
起始地址的offset,并非绝对地址,可使用SECTION来建立Table于绝对地址,
例如:
table .section at 300 'code' -即可将接下去之Table起始位置建立于绝对地址300。
Question 26
存取MCU内置的EEPROM时操作位是按照什么格式处理的?
Answer
是按照MSB的格式传送数据的,即是高位先传。数据信息(包括Instruction Code、Address、Data)都是以高位在前的模式在SK上升缘到来时发送。(SK:Serial
Clock时钟信号)
注意事项
Question 1
MCU Power On时,VDD的上升时间有何限制?
Answer
MCU Power On时为了使Reset可以完全成功,建议Power On
VDD上升时间在20ms以内。如果VDD上升缓慢会影响Reset成功。
Question 2
HT48R10A-1的C语言程序,换用HT48F10E编译后使用的ROM为何会增多?
Answer
HT48R10A-1的RAM只有一个BANK,在对RAM进行操作时,不需要对BP进行操作。
而HT48F10E的RAM有两个BANK,在编译生成的ASM代码中,在对RAM操作的地方,会自动添加进对BP操作的代码,从而增加了编译后产生的代码量。
Question
3
HT46F4xE的EEPROM使用时需要注意的问题?
Answer
HT46F4xE的EEPROM使用时需要注意:1.并不是通过SCL和SDA两信号来进行读写控制,而是通过EEPROM控制寄存器EECR来实现;2.EEPROM的数据不能被其它IC直接读取,只能由HT46F4xE来直接读取,原因在于EEPROM没有与外界通讯的接口;3.通过间接寻址BANK1区块EECR寄存器来控制EEPROM的CS、SK、DI和DO信号,以软件的方式产生EEPROM的操作时序,进而达到读写EEPROM的目的;4.EEPROM的操作由READ、ERASE、WRITE、EWEN、EWDS、ERAL和WRAL共7条指令来实现,其指令码和指令时序必须遵从Data
Sheet定义的格式。有关EEPROM更详细的内容以及示例程序请参考HT46F4xE的Data Sheet。
Question 4
HT48F系列有7条控制EEPROM数据存储器的指令:READ、ERASE、WRITE、EWEN、EWDS、ERAL和WRAL,请问这7条指令是否和其它63条指令一样可以直接使用?
Answer
不能。63条指令的指令周期都是1或2个机器周期;而HT48F系列EEPROM数据存储器是以序列方式存取的,这7条命令中的各条指令分别对应特定的时序(详见规格书),必须严格按照规定的时序进行多步操作才能完成指令功能。
其它
Question 1
HT48FXXE使用ICP烧录时,一共享到哪几个脚?
Question 1
HT48FXXE使用ICP烧录时,一共享到哪几个脚?
Answer
HT48FXXE ICP烧录一共享到5个脚,分别为VSS,VDD,RESET,SDATA(PA0),SCLK(PA4)。
|