Przypadek ten dotyczy zainicjowania dwunastu wyprowadzeń do pracy jako kanały modułu TSI. Numer przypisany elektrodzie jest istotny w przypadku włączenia opcji decoder control option, co przedstawiono w listingu 2.
Listing 2.
1 2 3 4 5 6 7 8 9 |
#define TSS_N_CONTROLS 2 #define TSS_C0_TYPE TSS_CT_KEYPAD /* Control type */ #define TSS_C0_ELECTRODES 10 /* Number of electrodes in the control */ #define TSS_C0_STRUCTURE cKey0 /* Name of the C&S struct to create */ #define TSS_C0_CALLBACK TSS1_fCallBack0 /* Identifier of the user's callback */ #define TSS_C1_TYPE TSS_CT_KEYPAD /* Control type */ #define TSS_C1_ELECTRODES 2 /* Number of electrodes in the control */ #define TSS_C1_STRUCTURE cKey1 /* Name of the C&S struct to create */ #define TSS_C1_CALLBACK TSS1_fCallBack1 /* Identifier of the user's callback */ |
Elektrody zostały pogrupowane. W pierwszej grupie znajduje się dziesięć elektrod (od E0 do E9), natomiast w drugiej dwie (E10 i E11).
Źródło wyzwalania
Odczyt stanów przycisków klawiatury jest procesem asynchronicznym (wykonywanym każdorazowo tylko wtedy, gdy wywołana zostanie funkcja TSS_Task). Ustawienie źródła wyzwalania jest nową funkcjonalnością umożliwiającą konfigurację procesu skanowania elektrod w trzech tryba pracy:
- Always: proces skanowania nigdy się nie kończy. Po zakończeniu danego cyklu skanowania wykonywany jest od razu następny
- Software: proces skanowania wykonywany jest tylko wtedy, gdy wynika to z kodu źródłowego
- Auto: po zakończeniu danego cyklu skanowania następuje przerwa o czasie ustalonym przez użytkownika, po upływie której proces skanowania jest powtarzany
Poniżej na listingu 3 przedstawiono przykład konfiguracji źródła wyzwalania w trybie Auto. Należy pamiętać, że na parametry pracy źródła wyzwalania mają wpływ ma źródło sygnału zegarowego, podzielnik zegara i prescaler zegara.
Listing 3.
1 2 3 4 5 |
#define TSS_USE_TRIGGER_SOURCE TSI0 /*Identifier of the Trigger source device*/ /* Auto Trigger Config */ TSS_SetSystemConfig(System_SystemTrigger_Register, TSS_TRIGGER_MODE_AUTO); /* TSS_TRIGGER_MODE_AUTO/TSS_TRIGGER_MODE_ALWAYS/TSS_TRIGGER_MODE_SW */ TSS_SetSystemConfig(System_AutoTriggerModuloValue_Register, 255); |
Okres skanowania jest ustalany za pomocą 8-bitowego rejestru. Dozwolone wartości należą do przedziału 1-255.
Praca w trybie o obniżonym poborze prądu
Moduł TSI może być aktywny podczas pracy mikrokontrolera w trybie uśpienia o niskim poborze prądu. Jeśli wykryte zostanie dotknięcie któregoś z dołączonych do układu pól czujnikowych, moduł TSI jest w stanie wybudzić mikrokontroler. W takich okolicznościach możliwa jest konfiguracja trzech parametrów pracy modułu TSI:
- Wybranie elektrod, które będą skanowane
- Ustawienie okresu skanowania o niskim poborze prądu (dłuższy okres pomiędzy kolejnymi procesami skanowania zmniejsza zużycie prądu)
- Konfiguracja czułości w procesie skanowania
Funkcjonalność modułu TSI jest zależna od ustawionego trybu oszczędzania energii. Część trybów umożliwia skanowanie wszystkich elektrod, część natomiast jest w stanie zapewnić skanowanie tylko wybranych elektrod. Przykład kodu konfigurującego działanie modułu TSI w trybie pracy mikrokontrolera o obniżonym poborze prądu przedstawiono w listingu 4.
Listing 4.
1 2 3 4 5 |
#define TSS_USE_LOWPOWER_CONTROL_SOURCE TSI0 /* Identifier of the Low Power control source device */ /* Low Power Config */ TSS_SetSystemConfig(System_LowPowerScanPeriod_Register, 0x08); TSS_SetSystemConfig(System_LowPowerElectrode_Register, 5u); TSS_SetSystemConfig(System_LowPowerElectrodeSensitivity_Register, 0x1A); |
Zmienne konfigurujące moduł TSI
Moduł TSI posiada szeroki zakres konfiguracji w celu jak najlepszego dostosowania jego działania do danej aplikacji. W bibliotece TSS znajdują się zmienne umożliwiające wykonanie odpowiednich ustawień. Na rysunku 4 przedstawiono konfigurację modułu TSI za pomocą narzędzia System Setup Creator, natomiast na rysunku 5 zilustrowano konfigurację z wykorzystaniem programu Processor Expert.
Rys. 4. Konfiguracja modułu TSI za pomocą narzędzia System Setup Creator
Rys. 5. konfigurację modułu TSI z wykorzystaniem programu Processor Expert
W trybie normalnej pracy mikrokontrolera zdefiniować można parametry takie jak: źródło sygnału zegarowego, podzielnik zegara i prescaler zegara. Przykład kodu przedstawiono w listingu 5.
Listing 5.
1 2 3 |
#define TSS_TSI_SCANC_AMCLKS 0 /* Input Active Mode Clock Source (0=BUSclk, 1=MCGIRCLK, 2=OSCERCLK, 3-NA)*/ #define TSS_TSI_SCANC_AMCLKDIV 1 /* Input Active Mode Clock Divider (0 = divide 1, 1 = divide 2048 ) */ #define TSS_TSI_SCANC_AMPSC 0 /* Input Active Mode Clock Prescaler (0 = divide 1, 7 = divide 128 ) */ |
W trybie pracy o obniżonym poborze prądu jednym z parametrów, które można skonfigurować, jest źródło sygnału zegarowego (listing 6).
Listing 6.
#define TSS_TSI_GENCS_LPCLKS 0 /* Low Power Mode Clock Source (0 = LPOCLK, 1 = VLPOSCCLK ) */