LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

Interfejs klawiatury bezstykowej TSI/TSS w mikrokontrolerach Kinetis firmy Freescale

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.

#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.

#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.

#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. 4. Konfiguracja modułu TSI za pomocą narzędzia System Setup Creator

 

 

Rys. 5. konfigurację modułu TSI z wykorzystaniem programu Processor Expert

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.

#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 ) */

 

Polski portal branżowy dedykowany zagadnieniom elektroniki. Przeznaczony jest dla inżynierów i konstruktorów, projektantów hardware i programistów oraz dla studentów uczelni technicznych i miłośników elektroniki. Zaglądają tu właściciele startupów, dyrektorzy działów R&D, zarządzający średniego szczebla i prezesi dużych przedsiębiorstw. Oprócz artykułów technicznych, czytelnik znajdzie tu porady i pełne kursy przedmiotowe, informacje o trendach w elektronice, a także oferty pracy. Przeczyta wywiady, przejrzy aktualności z branży w kraju i na świecie oraz zadeklaruje swój udział w wydarzeniach, szkoleniach i konferencjach. Mikrokontroler.pl pełni również rolę patrona medialnego imprez targowych, konkursów, hackathonów i seminariów. Zapraszamy do współpracy!