Obsługa kontrolera klawiatur pojemnościowych w mikrokontrolerach Freescale Kinetis
Cechy TSI
W module TSI zaimplementowano funkcjonalności umożliwiające prosty i zarówno wydajny odczyt stanów przycisków klawiatur pojemnościowych. Główne cechy modułu TSI to:
- Możliwość odczytu stanu przycisków we wszystkich trybach pracy mikrokontrolera,
- Automatyczny cykliczny odczyt stanu przycisków z konfigurowalnym czasem przerwy między odczytami lub pojedynczy odczyt,
- Tryb działania z obniżonym poborem prądu (poniżej 1 µA),
- Współpraca z wieloma przyciskami (do 16 niezależnych elektrod z oddzielnymi rejestrami),
- Automatyczna detekcja zmiany pojemności z konfigurowalnym górnym i dolnym poziomem pojemności oddzielnie dla każdej z elektrod,
- Praca w trybie przerwań – generowanie przerwania po każdym zakończonym procesie skanowania elektrod,
- Wykrycie zwarcia elektrody do napięcia zasilania lub masy,
- Wykrycie przekroczenia czasu konwersji.
Tryby pracy TSI
Moduł TSI może pracować w trzech różnych trybach: tryb ciągły aktywny (continuous active mode), tryb aktywny wyzwalany programowo (software triggered active mode), tryb ciągły o obniżonym poborze prądu (continuous low power mode).
Tryb ciągły aktywny
Cechy trybu ciągłego aktywnego:
- Wszystkie włączone elektrody są skanowane w sposób ciągły,
- Okres skanowania jest określany przez wartość rejestru SMOD,
- Tryb dedykowany do pracy mikrokontrolera w trybie aktywnym.
Tryb aktywny wyzwalany programowo
Cechy trybu aktywnego wyzwalanego programowo:
- Wszystkie elektrody są skanowane jeden raz,
- Brak okresu skanowania.
Tryb ciągły o obniżonym poborze prądu
Cechy trybu ciągłego o obniżonym poborze prądu:
- Tylko jedna elektroda jest skanowana w sposób ciągły,
- Elektroda może zostać użyta do wybudzenia mikrokontrolera z trybu uśpienia,
- Okres skanowania jest niezależny od okresu skanowania w trybie ciągłym aktywnym,
- Tryb jest aktywowany gdy mikrokontroler przechodzi do trybu uśpienia (bit STPE musi być ustawiony),
- Tryb umożliwia obniżenie poboru prądu pobieranego przez moduł TSI.
Konfiguracja TSI
Przykładowy kod źródłowy do konfiguracji modułu TSI przedstawiono w listingu:
SIM_SCGC5 |= (SIM_SCGC5_TSI_MASK); SIM_SCGC5 |= (SIM_SCGC5_PORTA_MASK); PORTA_PCR4 = PORT_PCR_MUX(0); //Enable ALT0 for portA4 //Configure the number of scans and enable the interrupt TSI_GENCS |= ((TSI_GENCS_NSCN(10))|(TSI_GENCS_TSIIE_MASK)|(TSI_GENCS_PS(3))); TSI_SCANC |= ((TSI_SCANC_EXTCHRG(3))|(TSI_SCANC_REFCHRG(31))| (TSI_SCANC_DELVOL(7))|(TSI_SCANC_SMOD(0))|(TSI_SCANC_AMPSC(0))); //Enable the channels desired TSI_PEN |= (TSI_PEN_PEN5_MASK|TSI_PEN_PEN7_MASK| TSI_PEN_PEN8_MASK|TSI_PEN_PEN9_MASK); TSI_THRESHLD5 = (uint32)((TSI_CHAN5_OFFSET)); TSI_THRESHLD7 = (uint32)((TSI_CHAN7_OFFSET)); TSI_THRESHLD8 = (uint32)((TSI_CHAN8_OFFSET)); TSI_THRESHLD9 = (uint32)((TSI_CHAN9_OFFSET)); //Enable TSI module TSI_GENCS |= (TSI_GENCS_TSIEN_MASK); //Enables TSI
Przedstawiony kod można podzielić na kilka podpunktów:
- Na początku odbywa się włączenia zegarów – dla modułu TSI oraz portu PORTA. Włączenie sygnału zegarowego dla portu PORTA jest wymagane, gdyż jeden z konfigurowanych kanałów TSI (channel 5) jest dołączony do wyprowadzenia PORTA 4, którego podstawową funkcją nie jest praca jako wejście modułu TSI.
- W kolejnym etapie konfigurowany jest rejestr kontrolny (control register) i statusowy (status register) GENCS. Ustawiana jest liczba procesów skanowania i preskaler. Dodatkowo skonfigurowany może zostać tryb pracy, przerwania, wykrywanie błędów oraz możliwość generowania przerwania po każdorazowym zakończeniu skanowania elektrod. Jeśli używany jest tryb o niskim poborze prądu, konieczne jest wskazanie zegara referencyjnego (LPCLKS) oraz interwał skanowania (LPSCNITV).
- Następnie konfigurowany jest kontrolny rejestr skanowania (scan control register) (SCANC). Określa on parametry elektryczne ładowania i rozładowywania kondensatora elektrody, w tym prąd ładowania i źródło odniesienia (EXTCHRG, REFCHRG) oraz parametry czasowe jak okres skanowania, który zależny jest od zegara (AMCLKCS), preskalera (AMPSC) i dzielnika zegara (SMOD).
- Kolejny krok polega na ustawieniu rejestru PEN (pin enable register) włączającego piny TSI. 16 najmniej znaczących bitów 32-bitowego rejestru odpowiada za aktywowanie 16 wyprowadzeń elektrod. Tryb o obniżonym poborze prądu konfigurowany jest przez bity 16 – 19.
- Następnie konfigurowane są poziomy pojemności: maksymalny i minimalny. Wartości poziomów przechowywane są w rejestrach THRESHLDx. Każda elektroda ma przyporządkowany jeden rejestr. 16 najmniej znaczących bitów rejestru określa poziom wysoki pojemności, natomiast kolejne 16 najbardziej znaczących bitów określa poziom niski pojemności.
- Ostatnim etapem konfiguracji jest włączenie modułu TSI (ustawienie bitu TSIEN).
Przykładowe oprogramowanie
Firma Freescale przygotowała przykładowe oprogramowanie dla modułu TSI (zostało ono zamieszczone w załączniku do artykułu). Jest ono przeznaczone na platformę Freescale Tower. Jej działanie polega na odczycie stanu czterech przycisków klawiatury pojemnościowej i sygnalizacji wciśnięcia lub braku wciśnięcia przycisków za pomocą diod LED. Schemat konfiguracji modułu TSI przedstawiono na rysunku 4.
Rys. 4. Przykładowa procedura inicjalizacji modułu TSI


Koniec ery defiladowej. Cykl życia technologii na froncie skrócił się do kilku tygodni
Czym jest czytnik e-booków i jak działa?
O suwerenności Europy mówią gen. Sławomir Żakowski, gen. Paweł Bielawny, dr. Jacek Pawlak, Adam Cudny i dr Daniel Więzik 




