Obsługa manetki – cz.2

Dzisiaj zajmiemy się praktycznymi aspektami odczytywania klawiszy – spróbujemy podłączyć manetkę MFA do naszego urządzenia. Od strony elektrycznej, składa się ona z trzech przełączników monostabilnych, normalnie otwartych. Naciśnięcie jednego z przycisków zwiera odpowiadającą mu linię bezpośrednio do masy. Schemat manetki MFA wygląda więc następująco:

Ponieważ używanie całej manetki jest mało wygodne, zdecydowałem się zbudować jej odpowiednik. Wykorzystałem do tego celu trzy przyciski typu microswitch. Całość po podłączeniu do płytki STM32F4 Discovery wygląda tak 🙂


Ok, sprzęt mamy. Teraz oprogramowanie. Tak jak nadmieniłem w poprzednim poście, będziemy odczytywać co 10ms stan każdego z wejść, do których podłączone są przyciski. Stan przycisku uznajemy za stabilny po uzyskaniu trzech kolejnych, identycznych odczytów. Na tym etapie musimy w jakiś sposób przekazać tę informację dalej, do aplikacji. Jedną z opcji jest przerzucenie obsługi klawiszy na stronę aplikacji, jest to jednak rozwiązanie nieoptymalne i mocno odbiega od przyjętej przez nas architektury.

Zdecydowanie lepiej sprawdzi się interfejs zapewniający aplikacji możliwość rejestrowania swoich callbacków. W czasie startu umieści ona odpowiednie funkcje w slotach odpowiadających wybranym przyciskom.


W momencie naciśnięcia jednego z klawiszy, wywołana zostanie zarejestrowana funkcja (o ile slot nie jest pusty).


Należy w tym miejscu pamiętać, iż wywołanie nastąpi w kontekście przerwania podstawy czasu (SysTick). Wymagane jest więc zapewnienie odpowiedniej (bezpieczniej) synchronizacji danych między kontekstem aplikacji i callbacku, na przykład przez podwójne buforowanie i dostęp atomiczny.

Posted in Sto dni w kolorze.