Niezależnie od trybu pracy, parametrami podlegającymi modyfikacji są np. rozdzielczość pomiaru modułu TSI oraz wartości graniczne auto-kalibracji. Jednostką wartości rozdzielczości pomiaru są bity. Im większa wartość rozdzielczości, tym większa czułość pomiarowa. Z kolei im mniejsza wartość rozdzielczości, tym większa odporność systemu na zakłócenia. Parametry graniczne auto-kalibracji to minimalna i maksymalna wartość prądu ładowania pochodząca z sygnału zegarowego oraz minimalna i maksymalna wartość prescalera zewnętrznego sygnału zegarowego. Podobnie jak w przypadku rozdzielczości, większa wartość prądu ładowania poprawia czułość systemu, natomiast mniejsza wartość prądu ładowania zwiększa odporność na zakłócenia. Zakres prescalera ustala liczbę zbieranych próbek sygnału, co wpływa na czułość pomiaru. Przykładowy kod realizujący konfigurację omówionych parametrów przedstawiono w listingu 7.
Listing 7.
1 2 3 4 5 |
#define TSS_TSI_RESOLUTION 11 /*Required Bit resolution of the TSI*/ #define TSS_TSI_SCANC_EXTCHRG_LOW_LIMIT 1 /* Low Limit of External OSC Charge Current register value for TSI autocalibration */ #define TSS_TSI_SCANC_EXTCHRG_HIGH_LIMIT 31 /* High Limit of External OSC Charge Current register value for TSI autocalibration */ #define TSS_TSI_GENCS_PS_LOW_LIMIT 0 /* Low Limit of External OSC Prescaler register value for TSI autocalibration */ #define TSS_TSI_GENCS_PS_HIGH_LIMIT 7 /* High Limit of External OSC Prescaler register value for TSI autocalibration */ |
Dostrajanie TSI
Jednym z najtrudniejszych etapów rozwijania projektu wykorzystującego klawiaturę dotykową jest dostrojenie elektrod. Aby uprościć to zadanie wykorzystano narzędzie FreeMaster, które pokazuje „na żywo” wartości zmiennych z biblioteki TSS. Wartości zmiennych mogą zostać sprawdzone również w środowisku CodeWarrior podczas debugowania, jednak narzędzie to nie zawsze oferuje podgląd zmiennych „na żywo”.
Pierwszym parametrem, który należy ustawić, jest rozdzielczość pomiaru. Czynność tą można wykonać za pomocą dowolnego narzędzia współpracującego z biblioteką TSS lub bezpośrednio w kodzie źródłowym projektu (plik TSS_SystemSetup.h). Teraz należy uruchomić aplikację i obserwować wartości w tablicy tss_au16ElecBasline[] (wartości delta) i tss_ai8InstantDelta[] (wartości bazowe). Wartości powinny się zwiększać w momencie zbliżenia palca do obszarów pól czujnikowych. Jeśli w tablicy tss_ai8InstantDelta[] nie pojawiają się żadne wartości, bądź zmiany są bardzo małe, należy zwiększyć wartość prescalera sygnału zegarowego tak, aby wartości tablicy osiągnęły poziom między 20 i 70. Im większe wartości, tym większa czułość pomiaru. Na rysunku 6 przedstawiono pomiar sygnału na elektrodzie E3. Wartość czułości pomiaru jest zbyt niska (wartość delta wynosi 8, a wartość bazowa 169).
Rys. 6. Wykres wartości delta dla elektrody E3 w warunkach zbyt małej czułości pomiaru
Wartości parametrów odpowiadające temu przypadkowi przedstawiono w listingu 8.
Lisitng 8.
1 2 3 |
(void)TSS_SetSystemConfig(System_NSamples_Register, 8); #define TSS_TSI_GENCS_PS_LOW_LIMIT 1 #define TSS_TSI_GENCS_PS_HIGH_LIMIT 7 |
Równie niepożądana jest sytuacja, gdy czułość jest zbyt duża, co może spowodować przesłuchy (wpływanie sygnałów z sąsiednich elektrod na siebie nawzajem). W tym wypadku należy zmniejszyć wartość prescalera sygnału zegarowego. Opisaną sytuację zilustrowano na rysunku 7. Wartość bazowa wynosi 6885, a wartość delta 127.
Rys. 7. Wykres wartości delta dla elektrody E3 w warunkach zbyt dużej czułości pomiaru
Wartości parametrów odpowiadające temu przypadkowi przedstawiono w listingu 9.
Lisitng 9.
1 2 3 |
(void)TSS_SetSystemConfig(System_NSamples_Register, 8); #define TSS_TSI_GENCS_PS_LOW_LIMIT 7 #define TSS_TSI_GENCS_PS_HIGH_LIMIT 7 |
Kolejny przykład przedstawiono na rysunku 8. Dla tego przypadku wartość bazowa wynosi 896, a wartość delta 40. Wartością, której modyfikacja jest wskazana w tej sytuacji w celu zwiększenia czułości jest liczba próbek pomiarowych.
Rys. 8. Wykres wartości delta dla elektrody E3
Wartości parametrów odpowiadające temu przypadkowi przedstawiono w listingu 10.
Lisitng 10.
1 2 3 |
(void)TSS_SetSystemConfig(System_NSamples_Register, 8); #define TSS_TSI_GENCS_PS_LOW_LIMIT 4 #define TSS_TSI_GENCS_PS_HIGH_LIMIT 7 |
Na rysunku 9 przedstawiono sygnał, którego wartość delta wynosi 100, a wartość bazowa 1722. Sygnał taki nie będzie wywoływał przesłuchów i jednocześnie będzie odporny na zakłócenia.