基本資料 功能說明 應用說明 注意事項 其他

基本資料

 


Question 1

HT46X63及HT46X6X功能有何不同?

Answer

Part No. VDD System
Clock
Program
Memory
Data
Memory
I/O LCD Timer Interrupt A/D PWM PFD UART Stack Package
8-bit 16-bit RTC Ext. Int.
HT46R62
HT46C62*
2.2V~
5.5V
400kHz~
8MHz or
32768Hz
2Kx14 88x8 20 19x4
or
20x3
1 -- v 2 4 9-bitx6 8-bitx3 v -- 6 56SSOP
HT46R63
HT46C63
2.2V~
5.5V
400kHz~
8MHz
4Kx15 208x8 32 19x4
or
20x3
-- 1 v 2 4 8-bitx8 8-bitx4 -- -- 8 56SSOP,
100QFP
HT46R64
HT46C64*
2.2V~
5.5V
400kHz~
8MHz or
32768Hz
4Kx15 192x8 24 32x4
or
33x3
1 1 v 2 5 10-bitx8 8-bitx4 v -- 8 56SSOP,
100QFP
HT46R65
HT46C65*
2.2V~
5.5V
400kHz~
8MHz or
32768Hz
8Kx16 384x8 24 40x4
or
41x3
-- 2 v 2 5 10-bitx8 8-bitx4 v -- 16 56SSOP,
100QFP
HT46R66*
HT46C66*
2.2V~
5.5V
400kHz~
8MHz or
32768Hz
16Kx16 576x8 32 46x4
or
47x3
1 2 v 2 6 12-bitx8 8-bitx4 v v 16 56SSOP,
100QFP

註:細節規格請參考 Holtek Data Sheet。


Question 2

HT46 A/D with LCD Type MCU的工作頻率為何?

Answer

在5V、3.3V及3個電池的應用,工作頻率達Max. 8MHz (3.3V)。
在3V及2個電池的應用,工作頻率達Max. 4MHz (2.2V)。


Question 3

當系統時鐘選擇RC振盪器時,頻率誤差為何?

Answer

當系統時鐘選擇RC振盪器時,由於製程的因素造成的每個批號頻率誤差為±20%。假如外加電阻之誤差為±5%,那麼總頻率誤差就是±25%。
上述的誤差範圍僅供參考,不予保證,若客戶需要精準的頻率,請使用RESONATOR或CRYSTAL。


功能說明

 


Question 1

HT46 A/D with LCD Type MCU有何重要功能及特性?

Answer

工作電壓範圍 2.2V ~ 5.5V 
工業溫度規格 -40°C ~ +85°C
高抗雜訊能力
Low Voltage Reset功能
OTP / Mask Type MCU相容
其它請參考 Holtek Data Sheet


Question 2

間接定址如何使用?

Answer

首先將要讀寫之Data Memory的位址先存入位址指標暫存器 (MP),然後對IAR執行讀寫 (例如: MOV a, IAR),即可讀到MP所指到的Data (MP的內容當位址)。間接定址功能特別方便於數列 (array) 的處理,一般先將數列位址放入MP做運算後再讀取所需的數列Data。


Question 3

查表指令如何使用,有何注意事項?

Answer

查表指令有二種,一種是TABRDC指令,此指令讀取目前指令所在表資料,另一種為TABRDL指令,此指令固定讀取最後一頁表資料。要查表時首先必需將表的Low Address填入TBLP再執行查表指令,表的Low Byte Data將存入指令指定的記憶體;表的High Byte Data被存入TBLH中,要注意未滿16-Bit之表Data高位元會補0。


Question 4

HT46 A/D with LCD Type MCU之RTC、WDT和Time Base等三個Timer的時鐘源選擇?

Answer

HT46 A/D with LCD Type MCU之RTC、WDT和Time Base等三個Timer的時鐘源(fS)必需同時選擇,且由Configuration Option選擇。

當系統頻率為RTC OSC時,則RTC、WDT和Time Base之時鐘源為RTC OSC,因RTC OSC不受HALT影響,亦即是這是一個不停的時鐘源。此時WDT OSC顯然多餘。為了省電所以將WDT OSC關閉,並將其時鐘源固定為RTC OSC。

當系統頻率不是RTC OSC時;則時鐘源有以下3種:

  1. fSYS/4

  2. RTC OSC

  3. WDT OSC


Question 5

WDT時鐘源選用WDT OSC時,看門狗時間如何計算?

Answer

WDT OSC的時鐘週期在工作5V時約65µs (32µs~130µs),看門狗時間約為65µs x 212=0.266 Sec.到65µs x 216=4.26Sec.之間。(由WDT configuration option 選擇)。


Question 6

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 7

8-Bit TMR值如何設定?

Answer

8-Bit Timer/Counter為一向上數之計數器 (Counter),每當Counter數到255 (0FFH) 溢位0H時令Timer/Event Counter中斷請求旗標(interrupt request flag)置1,所以若要計數為N (N < 256);則TMR值要設定成 256-N,設定好後啟動TMR;TMR即從設定值往上數到255溢出到0 (即256),故所得值即256-(256-N)=N。


Question 8

16-Bit TMR值如何設定?

Answer

16-Bit Timer/Counter為一向上數之計數器 (Counter),每當Counter數到65535 (0FFFFH)溢位0H時令Timer/Event Counter中斷請求旗標(interrupt request flag)置1,所以若要計數為N (N < 65536);則TMR值要設定成 65536-N,設定好後啟動TMR;TMR即從設定值往上數到65535溢出到0 (即65536),故所得值即65536-(65536-N)=N。


Question 9

16-Bit Timer/Counter的設定和讀取順序?

Answer

HT46 A/D with LCD Type MCU內部Data Bus均為8-Bit,對於16-Bit的資料必需兩次才能完成,對16-Bit Timer/Counter的寫必需先寫Low Byte然後High Byte,而讀的順序必需先讀High Byte然後Low Byte。


Question 10

Timer/Counter之Timer Mode如何設定?

Answer

因Timer/Counter有3種模式,即Timer、Event Counter和Pulse Width等3種。

要執行Timer Mode要執行以下動作設定:

  1. 先選定Timer/Counter的時鐘源

  2. 設定Timer/Counter為Timer Mode (TM1、TM0=10H)

  3. 設定計數初始值 (TMR)

  4. 開相對應中斷致能旗標 (ETI和EMI)

  5. 設定 Timer ON (TMRC.4=1)

當Timer被打開後,Timer開始向上計數,若Timer OFF (TMRC.4=0),則Timer立即停止。下次Timer再ON,則從上次停留值繼續往上數,直到滿位溢出產生中斷,同時Timer 重新載入初始值。


Question 11

Timer/Counter之Event Counter Mode如何設定?

Answer

因Timer/Counter有3種模式,即Timer、Event Counter和Pulse Width等3種。

要執行Event Counter Mode要執行以下動作:

  1. 設定Timer/Counter為Event Counter Mode (TM1、TM0=01H)

  2. 選擇TE; TE=1則Count Falling Edge,TE=0則Count Rising Edge

  3. 設定計數初始值 (TMR)

  4. 打開相對應中斷致能旗標 (ETI和EMI)

  5. 控制Timer ON (TMRC.4=1)


Question 12

Timer/Counter之Pulse Width Mode如何設定?

Answer

因Timer/Counter有3種模式,即Timer、Event Counter和Pulse Width測量等3種。

要執行Pulse Width Mode要執行以下動作:

  1. 選定Timer/Counter時鐘源

  2. 設定Timer/Counter為Pulse Width Measurement Mode (TM1、TM0=11H)

  3. 選擇TE; TE=1量High Pulse,TE=0量Low Pulse

  4. 設定TMR計數初始值 (一般設定=0)

  5. 打開相對應中斷致能旗標

  6. 打開Timer ON (TMRC.4)

執行完以上步驟,程式可抽空Check TON值,若TON=0表示Pulse Width量度完成。


Question 13

Timer/Counter 0中的時鐘源如何選擇?

Answer

HT46R63/HT46C63有一個16-bit的Timer,其內部時鐘源只有fSYS/4一種。

HT46R62/HT46C62的8-bitTimer/Counter和HT46R64/HT46C64的8-bitTimer/Counter0 以及HT46R65/HT46C65的16-bit Timer/Counter0,其內部時鐘源經由PSC2~PSC0的選擇可設為fSYS ~ fSYS /128。


Question 14

Timer/Counter 1中的時鐘源如何選擇?

Answer

Timer/Counter 1中的時鐘源可以有二種選擇,包括fSYS/4及32768Hz。
TS=0選擇fSYS/4;TS=1選擇32768Hz。


Question 15

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 16

A/D轉換的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 17

HT46 A/D with LCD Type MCU之LCD頻率如何設定?

Answer

  1. Configuration Option時鐘源 (同RTC、WDT & Time Base時鐘源)。

  2. Configuration Option選除級,使LCD頻率 (fLCD=fS/22~28) 約為4kHz。


Question 18

HT46 A/D with LCD Type MCU 之LCD Bias選R Type或C Type有何差別?

Answer

LCD選R Type可省零件,而選C Type可較省電,若介意耗電問題可選C Type,若沒有耗電顧慮可以選省3顆電容的R Type。但要注意選C Type LCD且1/3 Bias時LCD的電壓是3/2 VLCD。


Question 19

HT46 A/D with LCD Type MCU的系統頻率有那些?

Answer

HT46系列MCU的系統頻率來源有三種,如下:

  1. 外部RC

  2. 外部 Crystal

  3. 外部 RTC OSC Crystal


Question 20

ADCLK時鐘頻率設定是否有限制 , 如何計算?

Answer

HT46 A/D with LCD Type MCU 的 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 21

A/D取樣時間為何?

Answer

A/D取樣時間(A/D Sampling Time) 需32tAD . 若A/D Clock Period 為4us 則A/D Sampling Time = 128us。


Question 22

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 23

請問WDT之功能為何?

Answer

Watchdog Timer(WDT)主要用於監視MCU內部功能(software及hardware)之執行是否正常, 使用者必須適當設計software及運用clear WDT(CLR WDT, CLR WDT1, CLR WDT2)之指令, 使程式正常執行時, WDT不會overflow, 並且在當系統不正常執行時, WDT可以overflow造成WDT reset, WDT reset之效能, 主要由software設計所決定。


Question 24

在HT46RU66/HT46CU66中,具有一個多功能中斷MFI ,請問其中斷請求旗標MFF是如何置起的?

Answer

MFI (Multi-Function Interrupt ),指的是多功能中斷,它是由時基溢出(TBF)、RTC溢出(RTF)或定時/計數器2溢出(T2F)觸發的。當時基溢出(TBF=1)且相應的中斷控制位元ETBI=1、RTC溢出(RTF=1) 且相應的中斷控制位元ERTI=1,或者定時/計數器2溢出(T2F=1)且相應的中斷控制位元ET2I=1三者任一條件成立,MFF都將會置起。如果總中斷打開(EMI=1),相關的中斷允許(EMFI=1), 且堆疊未滿,當MFF被置位時,會產生位址018H的子程式呼叫。進中斷後MFF和EMI會被清零,以禁止其它中斷響應。TBF、RTF和T2F被置位表明發生了時基、RTC或定時/計數器2溢出, 中斷旗標TBF、RTF和T2F不會自動清除,必須由程式員用軟件清除。其中斷過程如附件圖(FAQ-10.bmp)表虛框部分所示。


應用說明

 


Question 1

LCD映射資料記憶體如何使用?

Answer

LCD的映射資料記憶體位於BANK 1的40H開始的位置,故欲使LCD顯示對應的內容時,需先將BP(Bank Pointer)設為1,然後利用間接定址的方式存取LCD Display Memory的內容,LCD映射資料記憶體不能使用直接定址方式存取。


Question 2

HT46 A/D with LCD Type MCU有兩組MP使用有何不同?

Answer

MP0/IAR0和MP1/IAR1必需配對使用,其中MP0/IAR0只能用在RAM BANK0,MP1/IAR1則可以在任何RAM BANK使用。


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 A/D with LCD 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

PA已經Low為何沒有喚醒MCU?

Answer

MCU的PA Port喚醒為瞬間下降緣觸發,若在執行HALT之前PA已經Low,且在HALT期間一直維持在Low,因為沒有下降緣動作,所以無法喚醒MCU。


Question 8

為何外部中斷有下降緣,仍然沒有喚醒MCU?

Answer

雖然MCU可由中斷喚醒,但嚴格的說是要靠中斷要求旗標 (Request Flag) EIF0/EIF1由0變1才能喚醒。若在MCU進入HALT之前EIF0/EIF1已經設定 (EIF0/EIF1=1),則再來之INT無法改變EIF0/EIF1的值,亦即是EIF0/EIF1不能由0變1,所以不能喚醒MCU。


Question 9

可以讓外部中斷不產生喚醒MCU嗎?

Answer

在執行HALT之前先清除EMI再設定EIF=1,則外部中斷就無法喚醒MCU。


Question 10

2個CLR WDT指令如何使用?

Answer

2個CLR WDT可以增加系統可靠性。若程式有2個主要的交替循環Loop;則可在1個Loop放CLR WDT1,在另1個Loop放CLR WDT2,一旦程式錯誤或受雜訊干擾造成一直停留在某一個Loop時;WDT就會啟動,發出WDT Time-out重新啟動MCU。


Question 11

HT46 A/D with LCD Type MCU之PWM功能如何使用?

Answer

首先Configuration Option需選擇PWM功能,使用時,先設PDC.0=1再寫入一個欲輸出的值丟到PWM暫存器,當PD.0=0則PWM輸出0;當PD.0=1輸出PWM波形 (若有第2個PWM則控制PDC.1和PD.1)。


Question 12

HT46 A/D with LCD Type MCU的 A/D Converter如何使用?

Answer

使用A/D要執行以下動作:

  1. 首先定義Port B Configuration (PCR2、PCR1、PCR0) 選定有幾個類比輸入通道。

  2. 選定特定通道 (ACS2、ACS1、ACS0),此通道必需在前項選定通道內。

  3. 命令A/D開始轉換 (ADCR.7=0 --> 1 --> 0),此時A/D顯示忙碌 (EOCB=1)。

  4. 等待76個TAD時鐘,A/D顯示轉換完成 (EOCB=0);並產生中斷要求旗標(ADF=1)。

  5. 讀取資料 (ADRL和ADRH)。


Question 13

HT46 A/D with LCD Type MCU的RTC如何使用?

Answer

RTC類似Time Base設定,最大的差別為其頻率可以軟體設定。

  1. 首先Configuration Option選好時鐘源。

  2. 依需要,程式隨時設定RTC除頻。fRTC=fS/28~215 (其中 fS為前項之時鐘源)。

  3. 依據中斷需求設定中斷致能旗標(ERTI=1)。

以上設定完成,RTC會不停運作,每次RTC到時,RTC旗標會被設定(RTF=1),並產生相應中斷。


Question 14

HT46 A/D with LCD Type MCU的Buzzer如何使用?

Answer

使用Buzzer要先執行以下設定:

  1. Configuration Option設定PA0、PA1成CMOS Output。

  2. Configuration Option選擇Buzzer。

  3. Configuration Option選定時鐘源 (同RTC、WDT和Time Base時鐘源)。

  4. Configuration Option設定Buzzer頻率。fBUZZER=fS/22~29 (fS為前項時鐘源)。

以上設定完成,在程序中設定PA0和PA1即可控制Buzzer輸出。

當PA0、PA1=0,則BZ、BZ兩者輸出,當PA0=0、PA1=1則僅BZ輸出,當PA0=1則BZ、BZ兩者皆不輸出。


Question 15

HT46 A/D with LCD Type MCU的PFD如何使用?

Answer

使用PFD要執行以下設定:

  1. Configuration Option選擇PFD功能輸出。

  2. 當有2個以上PFD時;Configuration Option選擇由那一個PFD輸出。

  3. 設定PFD頻率;分8 Bit和16 Bit二種。
    8 Bit: fPFD=fINT/(2 x (256-N))
    16 Bit: fPFD=fINT/(2 x (65536-N))
    其中fINT為Timer之時鐘源

  4. 打開選定之Timer (TON)

以上設定完成;在程式控制PA3=0,則PFD輸出。


Question 16

HT46 A/D with LCD Type MCU的Time Base如何使用?

Answer

使用Time Base要執行以下設定:

  1. 首先Configuration Option選好時鐘源。

  2. 依需要;Configuration Option選擇Time Base除頻。
    fTIME BASE=fS/212~215 (其中fS為前項之時鐘源)。

  3. 依據中斷需求設定中斷致能旗標 (ETBI=1)。

以上設定完成,Time Base會不停的運作,每次Time Base到時,Time Base旗標會被設定(TBF=1),並產生相應中斷。


Question 17

在什麼情形下要關閉32K快速起振?

Answer

MCU開機上電後32K振盪器起動快速起振。若考慮省電可在2秒鐘後關閉快速起振,如此在3V工作電壓下可省1~2µA,在5V工作電壓下可省3~4µA。


Question 18

2顆電池 (2.2V~3.8V) 的工作電壓操作可以使用LVR嗎?

Answer

LVR的動作點在2.7V~3.3V之間,所以2.2V的工作電壓不能選擇LVR,若一定要偵測2.2V低壓,可以外加Voltage Detector (HT70XX系列)。


Question 19

系統頻率Fsys=4MHz , ADCLK = fsys/32 , A/D input signal 是一個square wave(250us), A/D要對square wave之 level 進行轉換,但是有時就轉換不正確 .

Answer

HT46 A/D with LCD Type MCU 的轉換時間(A/D conversion time)為76 TAD . 於此轉換進行期間會先進行 S&H 動作, 其時間為32 TAD . 參考下圖 : 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 20

Holtek MCU 之Stack 除了做CHIP reset之外,有無其它方法可以重設 stack pointer?

Answer

堆疊指標會受到中斷與呼叫附程式與返回指令影響,除此之外,除了透過CHIP reset,並無其它方法可以重設(reset) Holtek MCU 的堆疊指標。


Question 21

當系統時鐘選擇RC振盪器時,應用電路上OSC1外接的電阻與電容有何功能?電容可以不加嗎?

Answer

OSC1外加電阻是為了產生一bias以控制內部的RC充放電,電阻值決定RC震盪頻率。外加電容建議為470pF,OSC1外加電容是為了避免和OSC2產生交越干擾,以便讓OSC2輸出一穩定1/4系統頻率的時脈。假如你不需要使用到OSC2輸出的1/4系統頻率的時脈,那麼電容器是可以省略的。


Question 22

如何決定 RA ?

Answer

以 5V, 10-bit A/D 來看, VA 輸入到 AN0~AN7 PIN, 訊號衰減不得超過 1/4 LSB,以維持 ADC 轉換過程中的精確度, 因此相對應下來為 5V/4096 約等於 1.2mV

所以 1uA×RA < 1.2 mV → RA < 1.2kΩ , 1uA 為 II 的值
建議 RA 不要大於 1.2kΩ, 以維持 10-bit ADC 的精確度

對 9-bit 及 8-bit ADC而言, RA 不要大於 2.4kΩ及4.8kΩ, 以維持其相對的精確度


Question 23

如何看待 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 24

與 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, 可得到下表不同的值

  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Ω
tAC 2.2μs 0.93μs 2.1μs 1.4μs 2.1μs 1.3μs
A/D 取樣時間 32tAD
32μs(最小值)
32tAD
32μs(最小值)
32tAD
32μs(最小值)
32tAD
32μs(最小值)
32tAD
32μs(最小值)
32tAD
32μs(最小值)

由上表可知 A/D 取樣時間為 32tAD, 根據規格tAD 最小值為 1μs, 算出取樣時間最小為32μs, 必須大於tAC.


Question 25

A/D 類比輸入 PIN 的輸入電壓範圍為何 ?

Answer

因為 AN0~AN7 PIN上都有 保護二極體, 所以 AN0~AN7 PIN上的電壓, 絕對不得大於VDD + 0.3 或是小於 VSS-0.3, 以免造成其他不可預期的耗電及誤動作. 


Question 26

HT46單片機怎樣在PD口輸出自己所需要的PWM頻率?

Answer

HT46系列MCU的PWM輸出頻率是由系統頻率決定的,Fpwm=Fsys/256;即系統頻率定了之後,PWM頻率也就定了。PWM頻率是不可調的,只能調占空比(通過給PWM寄存器賦值)。


Question 27

HT46系列之MCU,如有使用A/D Converter,當進入HALT MODE前,應作何處理以省電?

Answer

由於進入HALT MODE時,A/D Converter並不會關掉,仍會耗電,故當進入HALT MODE前,應將ADCR Register之PCR0,PCR1,PCR2等3位元設為000,以關掉A/D Converter達成省電,待WAKE UP返回NORMAL MODE後再重設PCR0,PCR1,PCR2等3位元,將A/D Converter 開啟。


Question 28

3 pin 之resonator/crystal用於MCU之時基時, 電容之Vss pin可改接Vdd嗎?

Answer

3pin之resonator/crystal 用於MCU之時基時,配合Layout方便, 電容之Vss pin亦可改接Vdd。


Question 29

寫程式時,如欲在program memory建立Table,如何建於絕對位址,為何ORG不適用,有其他方法嗎?

Answer

ORG expression : expression 是對於目前SECTION 起始位址的offset,並非絕對位址,可使用SECTION來建立Table於絕對位址,例如:

table .section at 300 'code' -即可將接下去之Table起始位置建立於絕對位址300。


Question 30

請問要如何以C語言讀取OTP WRITER燒入IC之序號?

Answer

在C語言中須以Inline assembly來讀取OTP WRITER燒入IC之序號, 程式範例如下:

首先, 宣告一變數並指定 ram 位址
unsigned long series_num @0x80;

然後, 將 serial number 讀入此 variable, 方法如下:

#asm

tblp equ [07h]

; define table address

mov a,20h

mov tblp,a 

; set table pointer to 20h (series number at 20h of last page)

tabrdl [80h] 

; load first byte of series number to series_num (0x80h);

inc tblp

tabrdl [81h] 

; second byte of series number

inc tblp

tabrdl [82h] 

; third byte of series number

inc tblp

tabrdl [83h] 

; fourth byte of series number

#endasm


Question 31

用HT46/HT47/HT48/HT49系列單片機的BZ/BZB功能時感覺聲音不夠響亮,該怎麼辦?

Answer

BZ/BZB的輸出頻率要與蜂鳴器的頻率對應,每種蜂鳴器都有各自的中心頻率,設置的頻率要儘量靠近中心頻率。如果蜂鳴器直接接在BZ,BZB兩個管腳,那麼這兩個管腳 對應的IO口都要設成輸出。


Question 32

為何寫TMRL和TMRH不能改變其中的值?程式如下:
mov a,131
mov tmrl,a 
mov a,0ffh 
mov tmrh,a 
執行了以上這幾條指令,TMRL和TMRH中的值依然保持原來的資料而未被改變!

Answer

在寫入TMRL和TMRH前要先關掉計時中斷。


Question 33

使用HOLTEK MCU做一個聲音的產品,在程式中,會應用到查表:
TABLE1: DC 0FFE1H,0FE32H,0FA34H,0FC78H
DC 0FECDH,0FEDCH,0FE57H,0FD87H ; 16位表格值

請問16位的查表表格定義能否按TABLE1的格式?

Answer

HOLTEK各系列MCU的ROM有不同的字節長度,每一個字節最低含14個位,最多含16個位。
字節長度為16位的MCU可以按TABLE1格式定義出16位表格,其他MCU只能定義出最長14位或15位的表格。


Question 34

HT46R62的SEG腳掩膜做邏輯輸出後怎麼控制?

Answer

HT46R62的SEG0~SEG15可掩膜選擇為邏輯輸出,一旦LCD設置為邏輯輸出,LCD存儲區的bit0將控制相關SEG腳的輸出狀況。掩膜選擇時SEG0~SEG7 是按字節設置的,SEG8~SEG15 是按位設置的。


Question 35

使用帶有PA控制寄存器(PAC)的8位MCU作母體調試程式時,為什麼向PA PIN腳的某一位寫0再寫1,在寄存器觀察窗口中卻看不到PA PIN腳這一位的值有所變化?

Answer

要向PA數據寄存器的某一位寫入數據,必需先將PA的控制寄存器(PAC)的對應位清0,也就是將其設置為輸出口時,才能有效的將數據寫入數據寄存器(PA)中,反之,如果此位是輸入狀態則通過程式不能改變數據寄存器這一位的值。


Question 36

當選用PFD功能時,PA3端口是否仍可以用作輸入口?

Answer

可以。如果PAC.3位被設置為"1",即使掩膜選項選擇該引腳為PFD輸出,PA3還是作為輸入端口使用。


Question 37

在HALT狀態下,LVR有沒有作用?

Answer

在Option選項中設置LVR使能,在HALT狀態下LVR不起作用。


Question 38

請問與A/D複用的I/O Port設為A/D輸入後,是否還支援普通I/O功能?

Answer

如果某個I/O一旦設為AD input時, 因省電因素,其不支援輸入/輸出功能,並且上拉電阻會自動失效。


Question 39

定義在不同RAM Bank中的變數,是否可以通過變數名來直接進行讀寫操作?

Answer

對於有多個RAM Bank的MCU來說,定義在Bank0中的變數,可以通過變數名直接進行讀寫操作,而對於定義在其他Bank中的變數則無法實現。
因為在RAM中不論變數定義在哪一個Bank,變數名都是一個位址標號,當使用變數名直接進行讀寫操作時相當於進行了一次直接尋址操作,Holtek MCU規定任何直接尋址只會在Bank0存取資料,所以定義在Bank0之外的變數無法直接通過變數名進行操作,而必須使用間接尋址指針MP1和間接尋址暫存器IAR1進行間接存取。


Question 40

請問HT46RU66的LVD功能如何使用?HALT下LVD是否工作?

Answer

若要使用HT46RU66之LVD(低電壓檢測)功能,首先要在光罩當中設定LVD選項Enable,其次要注意配合RTCC暫存器中的第3位元(LVDC)和第5位元(LVDO)。
其中LVDC是致能/禁能控制位元,設定為邏輯高時LVD為有效狀態;LVDO是LVD檢測器的輸出位元,並且是只讀位元。當正確設置LVD功能後,當系統電源電壓高於 規格書DC特性中的VLVD(典型值約為3.3V)時,VLDO位元將保持0;一旦系統電源電壓低於VLVD值,則LVDO位元會置1,應用程序就可以判斷出是否出現低電壓狀態。
在HALT狀態下,LVD功能將不起作用,也不會增加MCU額外的功耗。


Question 41

HT46RU66/HT46CU66中ROM分為兩個Bank,程式跳轉到不同的Bank時需如何處理?

Answer

HT46RU66/HT46CU66中ROM分為Bank0和Bank1,每個Bank的空間容量為8192X16位元,可通過Bank指針BP.5選擇。當BP.5=0時,選擇Bank0;當BP.5=1時,選擇Bank1。而指令JMP和CALL只包含13位元地址,其跳轉範圍為一個Bank(即8k),當執行JMP指令跳轉到不同Bank的地址,或者執行CALL指令呼叫位元於不同Bank的子程式時,必須先正確設置Bank指針BP.5來確定目標Bank,以確保程式正確執行。當執行這個子程式的RET指令時,程式會自動返回到原先主程式所在的Bank,然而BP的值不會改變,仍保持子程式所在Bank的值,因此還需要將BP值重新設置為原先主程式所在Bank的值,以確保程式正確執行。舉例說明如下所示。

include HT46RU66.inc

rombank 0 codesec0 ;define rombank0
rombank 1 codesec1 ;define rombank1

codesec0 .section at 'code'
org 00h
clr bp
jmp mainstart

mainstart:

mov a,BANK routb1 ;routine'routb1'is located in bank1
mov bp,a ;load bank number for routb1 into BP register
call routb1 ;call subroutine located in bank 1
clr bp ;program will return to this location after RET in
︰ ;bank 1,but BP will retain bank 1 value
︰ ;so clear the BP
codesec1 .section at 'code'

routb1:

nop
nop
ret ;return program to bank0 but BP will retain
;bank 1 value


Question 42

HT46RU66中的UART如何設置喚醒功能?

Answer

當MCU接收數據時進入HALT狀態,UART將停止工作,並且UART相關寄存器不會受到影響。如果進入HALT模式前,先將UCR2寄存器中的第2位(RIE)和第3位(WAKE)置位,那么UART將具有喚醒功能,在RX引腳下降沿會喚醒MCU。若要喚醒並產生中斷,UARTEN(UART使能位)、RXEN(接收使能位)、EURI(UART中斷使能位)和EMI(總中斷使能位)必須同時置位;若EURI或EMI為0,則MCU可以被喚醒但不會產生UART中斷。


Question 43

在HT46RU66中,對於定義在Bank1中的表格,使用TBHP和TBLP進行查表,請問應使用相對地址還是絕對地址進行操作?

Answer

當表格定義在Bank1中,例如在Bank1程序存儲器中使用ORG偽指令將表格數據存放在005H的地址,這是相對於Bank1起始地址000H而言,而它的絕對地址則是2005H。此時,根據表格的絕對地址,設置TBHP(高字節表格指針)的值為20H,設置TBLP(低字節表格指針)的值為05H,再使用“TABRDC [m]”指令,即可讀取該表格數據,其中低字節的表格數據會送往用戶定義的數據寄存器[m]中,而高字節表格數據會送到TBLH特殊寄存器,並且高字節中未使用的位將被讀取為零。


Question 44

HT46R62 的RTC 有時不起振,為什麼?

Answer

原因:
1. 位置過遠。
2. OSC3,OSC4電容不匹配。


解決辦法:
1. 32768振蕩器應緊靠IC PIN腳。
2. OSC3,OSC4可以不接電容,但在有精度要求時電容要適配。電容要滿足下述條件:Cl=C1*C2/(C1+C2)+Cs,Cs為oscillator pin在PC板上的離散電容。

 


注意事項

 


Question 1

已經進入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 2

請問OTP dice 燒錄流程為何?

Answer

  • Dice 打線在 COB 上。

  • 利用燒錄器如 HT-Writer 等作OTP 燒錄。

  • COB 功能測試。

  • 功能正常之 COB 將 Dice 封膠, 之後再焊上其他零件。


Question 3

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

我使用OTP DICE,但是發現燒錄不良率較高,這是為什麼呢?

Answer

首先,要排除打線不良的問題,一般來說打線不良是OTP DIE燒錄不良的重要原因。如果你自己沒有辦法確定打線是否良好,可以通過技術支援的方式,將綁定完好沒有封膠的樣片寄到HOLTEK相關的技術服務部門分析。 


Question 5

我使用HT-Writer燒錄OTP DICE,聯機的時候出現"MCU:Cannot identify"資訊會出現在資訊視窗中,是打線不好?還是OTP有問題?

Answer

OTP的封裝片在出廠前會有一些資訊在堶情A使用HT-Writer 燒錄器時會顯示於資訊視窗中。如果OTP晶片中沒有此等資訊,那麼燒錄程式就會認為無法辨認此ID,會出現這麼一個警告信息。而OTP DICE一般來說,出廠前是不會有這樣的信息的,所以燒錄器會不認識此顆IC。

如在Option菜單中將Check ID的選擇去掉,這樣在今後的燒錄過程中,燒錄程式就不會再去Check IC堶悸截D信息;如果是脫機燒錄模式的話,請將HT-Writer背面的DIP開關的DIP1撥為OFF,這樣在脫機燒錄的時候,就不會去Check IC堶悸截D信息了。


Question 6

請問MCU的Reset 與Oscillator線路設計有無需注意事項?

Answer

請參閱 "應用範例" 網頁,其中的 "HA0075E" 供使用者參考。


Question 7

以HT-ICE模擬HT46R63,當執行INT0或INT1外部中斷時,如設定為falling edge觸發,於RESET之後,送第一個falling edge時,會誤動作而產生兩次中斷,然而從送第二個falling edge開始,則正常動作,每送一個falling edge只產生一次中斷,請問如何才能正確的模擬外部中斷,避免誤動作?

Answer

以HT-ICE模擬HT46R63,當有使用INT0或INT1等外部中斷時,寫程式切記於reset後之initial程式必須加入 inactive external interrupt request flag( clr eif0,clr eif1),以避免模擬時外部中斷誤動作.


Question 8

HT46R63/HT46C63以HT-ICE 模擬外部中斷int0,int1的功能時,會有誤動作產生,如何避免?

Answer

當有使用int0,int1等外部中斷時,HT46R63/HT46C63於reset後之initial程式必須加入 inactive external interrupt request flag( clr eif0,clr eif1)後,才執行enable emi,eei0,eei1(set emi,set eei0,set eei1),以避免模擬時誤動作.


Question 9

在仿真ht46系列單片机時,如何將32.768k做為系統仿真頻率?

Answer

仿真時SysFreq要選擇內部32.768K,同時Fsys選擇RTC OSC FOR Fsys.


Question 10

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

請問在SIMULATION方式下,是否可以模擬HT46系列的AD轉換?

Answer

此方式下無法正常模擬,需在EMULATION方式下實現。

 


Question 12

請問在使用帶 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 13

對於HT46R652而言,其VDD電壓可不可以低於VREF電壓?

Answer

VDD電壓不可以低於VREF電壓,在5V工作電壓下,1.5V≦VREF≦5V;在3V工作電壓下,1.3V≦VREF≦3V。

 


其他

 


Question 1

HT46 A/D with LCD Type MCU是否提供Dice form?

Answer

Holtek 同時提供OTP Type及Mask Type MCU的Dice form的量產服務,但使用OTP MCU Dice量產時,客戶要特別注意打線及燒錄的操作問題。


Question 2

HT46 A/D with LCD Type MCU的ESD及Latch-up能力如何?

Answer

HT46 A/D with LCD 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 3

MCU Power On時,VDD的上升時間有何限制?

Answer

MCU Power On時為了使Reset可以完全成功,建議Power On VDD上升時間在20ms以內。當電池逐漸沒電,電池內阻增大,造成VDD上升緩慢會影響Reset成功。


Question 4

在Data Sheet的Reset電路,是否可適用各種應用狀況?

Answer

Data Sheet所提供的Reset電路一般可適用各種應用狀況,若在特殊情形,要參考當時環境及Noise,再設計適當Reset電路。


Question 5

低電壓Reset (LVR) 在HALT時,是否會耗電?

Answer

LVR在HALT時沒有作用,所以沒有耗電問題。


Question 6

使用Assembly Directives之MACRO,可否節省Program memory之空間,對MCU之執行速度有何影響?

Answer

在Assemble後MACRO所屬指令將填入Program space,故對Program memory之空間和MCU之執行速度沒有影響,但其使的程式簡化,容易維護。


Question 7

把金屬晶振外面的金屬層與GND連接,這種接法是不是可以提高抗干擾性,使晶振更穩定?

Answer

一般來說,這種晶體外殼焊接到地,只是為了結構上的穩定:抗震!電路特性能夠充分抑制EMI干擾。只有頻率較高的晶體,EMI方面才需要著重考慮其振蕩波形上的overshoot毛刺對CPU時序帶來的問題!要求不高的地方,其實不必要太考慮,基本電路餘量,合理配搭,組件參數,LAYOUT做好就足夠了!


Question 8

如果受外部干擾造成電源電壓波動不穩定,會對MCU有何影響,如何設計低電壓重置?

Answer

當電源電壓受外部干擾波動較大時,如果低於MCU的正常工作電壓,可能會造成程式功能運行不正常,如果電壓掉電不能完全掉到0V然後又上升,就容易造成MCU重置不完全而無法正常工作。
通常我們可以採用兩個方法執行低電壓重置:1、外加一個低電壓重置IC(如HT70XX系列)到RES腳上,當電源電壓低於某個臨界值時,電壓檢測晶片會給出一個低準位到RES腳是微控制器重置,
防止微控制器當機。2、可以直接利用HOLTEK MCU的LVR功能進行低電壓檢測,當電源電壓低於某一個臨界值時並且持續時間超過1ms以上,微控制器會自動重置避免當機,外部不需要再連接任何檢測電壓的電路。