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

基本資料

 

Question 1

看門狗定時器WDT的溢出時間為多少?

Answer

看門狗定時器的的時鐘來源有兩種,看門狗振盪器或指令時鐘,由光罩選項設置。
在5V電壓4M系統頻率的工作條件下,用看門狗振盪器時鐘源,溢出時間為(256/4)x 256 = 16384uS,約為17mS,若再設定WDT的分頻級數為1:128,則溢出時間為16384 x 128 = 2097152uS,約為2.1S。
若用的時鐘源是指令時鐘,溢出時間為(4/4)x 256 = 256uS,同樣設定WDT的分頻級數為1:128,則溢出時間也只有256 x 128 = 32768uS。


Question 2

LVR 工作時和RES PIN 拉低有何區別?

Answer

區別在于:當低電壓重置電壓>Vdd>最小工作電壓時,
若使能LVR,則OSC起振;
若讓RES PIN 拉低,則OSC停振。


Question 3

HT45R38的A/D可測電壓精度是多少?

Answer

HT45R38的A/D是12位元的,即A/D的滿量程是0FFFH(十六進制數),也就是4095,包括0點在內,即一共可測4095+1=4096個點。在5V的工作電壓下,它能檢測的電壓精度是(5/4095)V, 約為1.2mV;在其他的允許工作電壓下,可檢測的精度同樣照以上計算方式計算:工作電壓值/4095。


Question 4

HT45R35和HT45R34都提供12通道的模擬開關RC1-RC12,其控制打開與關閉的方法有差異嗎?

Answer

有。HT45R34是通過寄存器ASCR來控制的,功能表格如下:

而HT45R35是通過兩個寄存器來控制的,它們是ASCR0和ASCR1,功能表格如下:

另外,HT45R35比HT45R34還多出了另一重設定,每個通道可以選擇是否要連接下拉,由寄存器ASCR2控制(見下圖),HT45R34則沒有下拉。


功能說明

 

Question 1

HT45R36的16個電容/電阻型傳感器輸入通道如何切換?

Answer

HT45R36提供16個電容/電阻型傳感器的輸入通道RC1~RC16,通道的切換由暫存器ASCR(1AH)來控制。
對ASCR寫入00000b~01111b 16個不同的值,分別對應打開RC1~RC16這16個輸入通道,同一時刻只能打開一個通道,
其它則關閉,寫入1xxxxb時所有通道關閉,外部RC振盪器關閉。


Question 2

如何存取HT45R36的數據暫存器(RAM)的兩個Bank(Bank0和Bank1)?

Answer

存取Bank0或Bank1的通用數據暫存器時,必須設置存儲區指針BP值為“00H”或“01H”,來選擇正確的數據存儲區。
同時,Bank1內數據必須通過間接尋址指針MP1和間接尋址暫存器IAR1來存取;任何直接尋址或通過MP0和IAR0間接尋址將存取Bank0內數據。 而特殊功能暫存器不受BP的影響,不論在Bank0還是Bank1內都能對特殊功能暫存器進行操作。


Question 3

HT45R38 PWM提供 (6+2) ,(7+1) 兩種Mode選擇,有何作用?

Answer

在系統頻率一定的條件下,可以通過選擇PWM(6+2) ,(7+1) Mode來設定PWM頻率。PWM (6+2) Mode是將PWM的值分成4次送出,即每64個時鐘送出PWM/4, 其PWM頻率為 fSYS/64。PWM (7+1) Mode是將PWM的值分成2次送出,即每128個時鐘送出PWM/2,其PWM頻率為 fSYS/128。


Question 4

HT45RXX 中的TIMERA和TIMERB設置初值的注意事項 .

Answer

在每次R/C-F轉換後,我們都必須對TIMERA和TIMERB進行初始化動作,否則就不能獲得我們想要之轉換數值。因每次轉換(計數)結束後它們的數值一般都會改變。


Question 5

HT45R3X系列MCU中,Timer B是如何工作的?

Answer

控制Timer B工作與三個暫存器有關,分別是ASCR、RCOCCR和RCOCR暫存器。首先設定ASON(ASCR.0~4)位元選定一個模擬通道,並定義外部RC振盪模式(RCOCR.1=1),OVB(RCOCR.0)用於定義Timer A還是Timer B溢出產生中斷(OVB=0/1,對應Timer A/Timer B溢出),一旦RCOCON置位(RCOCCR.4=1), Timer B便開始計數直至Timer A/Timer B溢出,並置位相應中斷請求旗標RCOCF(INTC1.4=1),此時RCOCON位元自動清零,Timer B停止計數。


Question 6

HT45R35中RC通道的Pull-Low是如何控制和動作的?

Answer

HT45R35中RC通道的Pull-Low的ON和OFF受ASCR0,ASCR1,ASCR2控制,但是ASCR0,ASCR1比ASCR2的控制優先級更高,即當ASCR0,ASCR1中對應的某個RC通道ON時,不管ASCR2中對應該通道的Pull-Low是ON或OFF都失效,即該通道的Pull-Low都是斷開的,只有當ASCR0,ASCR1中對應的某個RC通道OFF時,此時ASCR2中對應該通道的位元才決定Pull-Low的ON或OFF。所以Pull-Low只在RC通道OFF時才可以打開,這樣可以通過Pull-Low來使RC通道接地,釋放RC通道的殘留電荷,使得每次RC通道打開時通道都是處於零電位元狀態,這樣消除了RC通道的殘留電荷對RC振盪器頻率的影響,提高了RC振盪器頻率穩定度。


Question 7

上電重置,RESET重置與LVR重置後,RAM變化有何異同?

Answer

一般MCU的上電重置,其特殊暫存器會被初始化(初始化值可參考datasheet),而通用暫存器的值是隨機數。 而RESET重置,其特殊暫存器會被重新初始化,而通用暫存器的值保持不變。 LVR重置與外部RESET信號重置有相同的效果,但需注意LVR低電壓狀態要持續tLVR以上。(tLVR時間請參考datasheet)


應用說明

 

Question 1

HT45R36的C/R-F模塊如何實現Touch Switch(電容式)的功能?

Answer

HT45R36包含了一個C/R-F模塊,它的核心是一個RC振蕩器,當改變振蕩器外部的等效電阻或是等效電容時,振蕩器的輸出頻率就會改變。可以利用人體電容效應改變C/R-F電路中電容的容量,進而改變其振蕩頻率,通過檢測頻率的改變大小即可檢測出Touch Switch(電容式)是否被按下。實際程序並不需要計算出頻率值,只要計算在相同的Timer A定時時間內,參考頻率下(Touch Switch off)Timer B Count的值與即時的Timer B Count的值之間的差值,當差值達到了事先設定的Sensitivity值,即認為Touch Switch被按下。
HT45R36提供了16個C/R sensor 輸入通道(RC1~RC16)和信道譯碼器,程序可通過改變ASCR寄存器的值(00H~0FH)輪流打開TG1~TG16,對RC1~RC16 Pin 連接的Touch Switch的狀態進行多信道掃描。


Question 2

RC1~RC16中沒有用到的通道該如何處理?

Answer

RC1~RC16為電阻/電容型傳感器輸入通道,由於同一時刻只會有一個通道打開連接到內部的RC振盪器,沒有用到的通道不會影響到其它的輸入通道, 未用到的通道在硬體處理上將其懸空即可,在軟體控制上注意不要將此通道打開。


Question 3

採用HT45R34/HT45R36做Touch Switch,RC Pin到Touch Switch的走線有何要求?

Answer

由MCU的RC PIN到Touch Switch的連線,要盡量的短,盡量遠離其他走線或元件,線寬盡量窄(在7~10mil之間為佳),以提高抗干擾的能力。


Question 4

用下面的指令讀取TMRAH和TMRAL的內容﹐讀取內容有錯﹒
mov A,TMRAL
mov a_CapK04_H,A
mov A,TMRAH
mov a_CapK04_L,A

注﹕a_CapK04_H和a_CapK04_L是客戶自定義RAM

Answer

1)在讀取TMRAH和TMRAL的內容必須先Highbyte后Lowbyte﹐即先讀TMRAH再讀TMRAL﹒而寫的時候反之﹐先L后H﹒
2)在規格書的P14-15頁有詳細描述﹒


Question 5

如何增快HT45R36 C/R-F 掃瞄TOUCH-KEY的速度?

Answer

根據Timer A 計時單位時間內(EX:5ms)Timer B 計數個數的變化來判斷按鍵是否被按下。
改進的方式為根據Timer B 單位計數個數(EX:60次)Timer A 計時時間長短的變化來判斷按鍵是否被按下。


Question 6

如何增快HT45R34 C/R-F 掃瞄TOUCH-KEY的速度?

Answer

根據Timer A 計時單位時間內(EX:5ms)Timer B 計數個數的變化來判斷按鍵是否被按下。
改進的方式為根據 Timer B 單位計數個數(EX:60次)Timer A 計時時間長短的變化來判斷按鍵是否被按下。


Question 7

如何增快HT45R38 C/R-F 掃瞄TOUCH-KEY的速度?

Answer

根據Timer A 計時單位時間內(EX:5ms)Timer B 計數個數的變化來判斷按鍵是否被按下。
改進的方式為根據 Timer B 單位計數個數(EX:60次)timer A計時時間長短的變化來判斷按鍵是否被按下。


Question 8

於HT45R34/HT45R36中的PCB佈線,如何增進按鍵的穩定性及其他干擾?

Answer

CREF, RREF, IN, RCOUT引出腳要短,RC模組這一部分電路應儘量靠近MCU,走線可以為10~30mil間; RC1~RC12 Pin線徑要儘量短、細(進議7~8mil 左右,以10mil為限),其間之VIA&PAD儘可能量小,各個KEY到RC Pin的連線長度要儘量一致; RC1~RC12 Pin的走線建議遠離其他元件和其他走線,尤其注意通訊線,儘可能避離;PCB鋪VSS網路,至少要將與Touch switch有關區域佈上VSS地網, RC1~RC12 Pin的線徑間儘量以VSS隔離。


Question 9

HT45R34/HT45R36/HT45R38 中RC模組的震盪頻率如何選擇較為適宜?

Answer

RC模組的震盪頻率可以降低到500kHz以內(CREF接10p電容,Default頻率值為500kHz,儘可能不要超過這個頻率),抗干擾能力也會增強。


Question 10

觸摸按鍵的形狀有哪些?

Answer

觸摸按鍵形狀可以為圓形、方形、三角形等(實心型),抑可以線條構成此類圖形(鏤空型),前者可應用於覆蓋板較厚的情況,後者則可應用於覆蓋板較薄的情況下。


Question 11

製作觸摸按鍵可用哪些材質?

Answer

製作觸摸按鍵可用的材質為:PCB、 柔性線路板、鍍膜導電玻璃。其中PCB為最常用的材質,成本較低;柔性線路板可用於做彎曲造型,可使用背光; 鍍膜導電玻璃應用於顯示螢幕,可與用戶界面結合,但成本較高。


Question 12

觸摸按鍵表面覆蓋板的材料有何要求?

Answer

覆蓋板為一些耐用,易安裝的絕緣材料,介電常數在3~10之間,例如普通玻璃、壓克力、微晶板等。覆蓋板的介電常數越小,觸摸按鍵的感應範圍越小。 安裝要求覆蓋板緊貼觸摸按鍵的表面,用粘膠將其貼在觸摸按鍵的表面(排掉它們之間的空氣)則效果更佳。


Question 13

觸摸按鍵表面覆蓋板的厚度有何要求?

Answer

覆蓋板的厚度一般為1mm~5mm,厚度越大觸摸按鍵的感應變化量越小,信噪比也越低。觸摸按鍵的面積越小,其感應的範圍越小,覆蓋板要求越薄。


Question 14

觸摸按鍵的工作原理是什麼?

Answer

它的工作原理是當手指靠近觸摸按鍵時,手指與觸摸按鍵形成一個電容(大約幾pf),從而改變了C/R-F振盪器的時間常數RC,從而改變振盪器的頻率。通過檢測振盪器頻率的變化就能感知觸摸按鍵是否被按下。


Question 15

電容式觸摸按鍵的面積大小有何要求?

Answer

以圓形的觸摸按鍵為例,建議其直徑不可小於5mm。


Question 16

C/R type MCU 的多個 C/R to F轉換口可否同時打開?

Answer

視MCU而定。C/R type MCU共有HT45R34/35/36/38四種,其中HT45R34/36/38的多個C/R to F轉換口不可以同時打開,只能通過輪換的方法打開它們,並採用查詢或中斷方式讀取之數值;HT45R35的多個C/R to F轉換口則可以同時打開,與同時打開的C/R to F轉換口相連的按鍵此時則只能當做同一按鍵進行處理。


Question 17

可否用HT45RXX實現大於最大RC通道個數的觸摸按鍵功能?

Answer

可以。可以使用矩陣式的觸摸按鍵排列,方法如下:
如圖所示,RCa與RCb交匯處即表示觸摸按鍵。假設此時MCU設置為Timer A溢出產生中斷信號,則當RCa通道打開,Timer A計數溢出後,Timer B計數值變化量超出一定基準,且當RCb通道打開,Timer A計數溢出後,Timer B計數值變化量也超出一定基準時,即表示此觸摸按鍵被觸摸。
同理對於Timer B溢出產生中斷信號,Timer A計數值發生變化的情況。通過此方式可實現更多的觸摸按鍵功能,如HT45R36即可實現8X8=64個觸摸按鍵的輸入。


Question 18

用C/R-F Type MCU實現滑條式輸入的PCB layout應注意哪些問題?

Answer

PCB layout 示意圖如附圖所示(注:此圖僅為示意圖,並非真正的PCB layout圖)。


1、用多個RC通道,一一對應一個觸摸感應區;
2、各個觸摸區域大小要一致,以保證被觸摸到時變化量基本一致;
3、各觸摸感應區應盡量靠得緊湊,但應保證兩感應區之間能鋪上VSS網絡;
4、感應區形狀可視情況而定(建議用如圖所示的鋸齒形狀)。
(注:圖中RCa~RCf表示RC引腳,分別對應一個鋸齒狀的觸摸感應區,綠色表示VSS網絡)


Question 19

用C/R-F Type MCU實現滑條式輸入的軟體流程是怎樣的?

Answer

主要思路如下:
The following points should be considered:
以掃描一遍所有RC通道當作基本單位;
1、當初次掃描到有觸摸區域被觸摸時,當作觸摸動作的開始,將此觸摸區域對應的標號寫入buffer;
2、下一輪掃描到的被觸摸區域如果較前一次未變,則buffer內容不變;如果緊鄰前一次的被觸摸區域,則進行滑條的相關動作,並將此次被感應區域的標號寫入buffer以更新buffer資訊;
如被觸摸區域是其他區域,則忽略該動作並清空buffer資訊;
3、同時,如果一定時間內(例如0.5秒或更短時間)沒有感應到觸摸動作,則也應清空buffer。
4、然後重複以上動作,依此類推。
如流程圖所示 :


(注:get_key()函數掃描一遍所有RC通道,當沒有觸摸動作時返回NULL,當僅有一個RC通道被掃描到有觸摸動作時返回此通道對應的ASCR暫存器值,其他情況返回FALSE;
add(1)/sub(1)表示相關數據做加/減1動作;tmr_count表示一個時間量,用於定時更新基準值)


Question 20

HT45R3X系列觸摸按鍵功能在模擬器上調試通過,燒錄到IC中後按鍵不能被感應?

Answer

該問題主要是由於觸摸按鍵各通道在仿真器上和在IC中線路不一樣,由此造成在仿真器上按鍵的感應差值與在IC中按鍵的感應差值不一樣,因此在仿真器上調試通過並不代表在IC中按鍵就一定能被感應到,需要確定一個合理的感應值直到所有的按鍵都能被感應到。
確定感應差值的最有效途徑:如果客戶PCB板具備數字顯示功能,只需要編寫一段程序將各通道的感應差值顯示出來,最後將此感應差值燒錄到IC中。如果客戶PCB板不具備數字顯示功能,可以通過搭建顯示電路的方式將各通道的感應差值顯示出來,也可以借助于《觸摸按鍵測試工具Demo Board介紹》(參考本網站,文件編號為HA0145)一文中提到的開發工具確定感應值。


Question 21

Timer A/Timer B溢出後必須馬上讀取其計數值嗎?

Answer

不需要。因Timer A/Timer B溢出後,Timer A/Timer B停止計數,RCOCON位元自動清除為零,即在Timer A/Timer B不重新啟動計數的情況下,Timer A/Timer B的計數值會一直保持不變, 所以在Timer A/Timer B溢出後任何時間都可以讀取其計數值。


Question 22

C/R-F type MCU做觸摸按鍵時設置靈敏度的一般方法是什麼?

Answer

以Timer B計數溢出讀取Timer A的值為例。
1、讀取基準值,即所有按鍵均無觸摸動作時各RC通道對應的Timer A的值,設值為A1~An
2、讀取相應RC通道按鍵有觸摸動作時,其對應的Timer A的值,設值為Bn。例如讀取RC3對應按鍵有觸摸時Timer A的計數值B3
3、讀取某按鍵周圍其它按鍵有觸摸動作時,此按鍵受到干擾或間接被感應到時的Timer A的最大值,設值為Cn。例如RC4對應按鍵與RC3對應按鍵相鄰,RC4有觸摸動作,此時RC3通道打開時其Timer A的計數值C3。
4、給出判斷相應按鍵觸摸與否的值Dn_min,Dn_max,應滿足Dn_max >(Bn- An) >Dn_min>(Cn- An),通過調整Dn_min的大小可以調整相應按鍵的靈敏度。
由於模擬器本身與實際晶片之間存在一定的差異性,以及在RC通道的引線長度、粗細等與實際PCB板有差異,所以模擬器僅僅能調試相關功能,得到的靈敏度等數據和實際情況卻不盡相同。最終所用的靈敏度最好由實際晶片及PCB板測得。以上數據的獲得可以通過一些輔助工具和測試程序在實際的PCB板上得到。


Question 23

沒有PUSH和POP指令,進入中斷時數據要如何備份?

Answer

雖然沒有PUSH和POP指令,工程師仍可指定專用的RAM BYTE儲存中斷時會被破壞的數據。首先將ACC存入專用內存,然後利用ACC依次將STATUS和其他需要保護的數據轉移到各自的專用內存中。在中斷返回前,再反序地將備份數據,STATUS和ACC回存,最後再執行RETI返回主程式。
譬如:如下等同PUSH作用:
MOV R_AccStack, A
MOV A, STATUS
MOV R_StatusStack, A
MOV A, MP0
MOV R_MP0Stack, A
MOV A, MP1 ;如果有MP1的話,或者是其他需要保護的數據
MOV R_MP1Stack, A

如下等同POP作用:

MOV A, R_MP1Stack ;如果有MP1的話,或者是其他備份數據
MOV MP1, A
MOV A, R_MP0Stack
MOV MP0, A
MOV A, R_StatusStack
MOV STATUS, A
MOV A, R_AccStack
RETI
(以上R_AccStack,R_StatusStack,R_MP0Stack,R_MP1Stack是工程師自行指定的專用RAM BYTE。)


Question 24

HT45R3x系列如何確認按鍵有效按下,具體流程如何?

Answer

系列確認按鍵有效按下的過程是:對所有通道掃描一遍得到一個按鍵值,為了消除干擾,建議對所有通道再掃描幾遍,如果這幾遍都檢測到為同一按鍵,就確認該按鍵被有效按下。本例中以對所有通道掃描四遍為例(具體掃描幾遍可根據實際情況調整),具體流程圖如下:


 


注意事項

 

Question 1

在HT45系列中設置計時器A溢出作為R-F轉換結束旗標,發現計時器 A溢出之前計時器B已經溢出,導致資料處理出錯。如何避免這種情況出現?

Answer

當計時器A溢出作為R-F轉換結束旗標,要保證在計時器A溢出之前計時器B不要溢出,否則資料無效。用戶可以通過設置減小計時器A溢出值或適當增大CREF確保計時器B在計時器A溢出之前不溢出。


Question 2

在用C語言設置16位元定時器TMRA時,設置為:_TMRAL=(65536-COUNT)%256;_TMRAH=(65536-COUNT)/256;編譯時會出現警告,為什麼?

Answer

用C語言設置16位元timer初值,若寫成以下形式:_TMRAL=(65536-COUNT)%256;_TMRAH=(65536-COUNT)/256;編譯時會有overflow in constant '65536'的警告。
因為‘65536’已經超出了16位元的範圍,應該修改為:_TMRAL=(65535-COUNT+1)%256;_TMRAH=(65535-COUNT+1)/256;便可以消除警告了。


Question 3

如何正確對TMRAH/ TMRBH,TMRAL/ TMRBL進行寫操作?

Answer

在對TMRAH/ TMRBH,TMRAL/ TMRBL寫值時,必須執行以下動作設定:
1.關閉外部RC振盪器計數(RCOCON=0)
2.打開RC振盪器 (RCO=1)
3.寫值時必需先寫Low Byte然後High Byte (先寫TMRAL/TMRBL後寫TMRAH/TMRBH)
以上三點任何一點設置錯誤,都無法正確對TMRAH/ TMRBH,TMRAL/ TMRBL有效寫值。


Question 4

在使用20PIN封裝 ht45r35 的RC通道時,應特別注意哪些?

Answer

由於腳位RC3、RC4、RC9、RC10都分別同時和 PA、PB 口復用,所以如用到此4個 RC 通道,除了應在 Configuration Option 中設置其為RC Input外,還應在程序中設置其復用的 I/O 口同時都為輸入模式,否則Timer B將無時鐘輸入。