應用說明
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將無時鐘輸入。
|