{"id":440,"date":"2018-03-27T19:05:40","date_gmt":"2018-03-27T19:05:40","guid":{"rendered":"http:\/\/hayperek.pl\/?p=440"},"modified":"2018-03-27T19:08:16","modified_gmt":"2018-03-27T19:08:16","slug":"obsluga-manetki-cz-2","status":"publish","type":"post","link":"https:\/\/hayperek.pl\/en\/2018\/03\/27\/obsluga-manetki-cz-2\/","title":{"rendered":"Obs\u0142uga manetki &#8211; cz.2"},"content":{"rendered":"<p>Dzisiaj zajmiemy si\u0119 praktycznymi aspektami odczytywania klawiszy &#8211; spr\u00f3bujemy pod\u0142\u0105czy\u0107 manetk\u0119 MFA do naszego urz\u0105dzenia. Od strony elektrycznej, sk\u0142ada si\u0119 ona z trzech prze\u0142\u0105cznik\u00f3w monostabilnych, normalnie otwartych. Naci\u015bni\u0119cie jednego z przycisk\u00f3w zwiera odpowiadaj\u0105c\u0105 mu lini\u0119 bezpo\u015brednio do masy. Schemat manetki MFA wygl\u0105da wi\u0119c nast\u0119puj\u0105co:<br \/>\n<a href=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/keys.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/keys-300x267.png\" alt=\"\" width=\"300\" height=\"267\" class=\"aligncenter size-medium wp-image-442\" srcset=\"https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/keys-300x267.png 300w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/keys-600x533.png 600w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/keys.png 618w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nPoniewa\u017c u\u017cywanie ca\u0142ej manetki jest ma\u0142o wygodne, zdecydowa\u0142em si\u0119 zbudowa\u0107 jej odpowiednik. Wykorzysta\u0142em do tego celu trzy przyciski typu microswitch. Ca\u0142o\u015b\u0107 po pod\u0142\u0105czeniu do p\u0142ytki STM32F4 Discovery wygl\u0105da tak \ud83d\ude42 <\/p>\n<p><a href=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/board_keys.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/board_keys-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" class=\"aligncenter size-medium wp-image-443\" srcset=\"https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/board_keys-300x225.jpg 300w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/board_keys-600x450.jpg 600w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/board_keys-768x576.jpg 768w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/board_keys-1024x768.jpg 1024w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/board_keys.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nOk, sprz\u0119t mamy. Teraz oprogramowanie. Tak jak nadmieni\u0142em w <a href=\"http:\/\/hayperek.pl\/en\/2018\/03\/26\/obsluga-manetki-cz-1\/\">poprzednim po\u015bcie<\/a>, b\u0119dziemy odczytywa\u0107 co 10ms stan ka\u017cdego z wej\u015b\u0107, do kt\u00f3rych pod\u0142\u0105czone s\u0105 przyciski. Stan przycisku uznajemy za stabilny po uzyskaniu trzech kolejnych, identycznych odczyt\u00f3w. Na tym etapie musimy w jaki\u015b spos\u00f3b przekaza\u0107 t\u0119 informacj\u0119 dalej, do aplikacji. Jedn\u0105 z opcji jest przerzucenie obs\u0142ugi klawiszy na stron\u0119 aplikacji, jest to jednak rozwi\u0105zanie nieoptymalne i mocno odbiega od <a href=\"http:\/\/hayperek.pl\/en\/2018\/03\/24\/miedzy-niebem-a-ziemia-czyli-sterowniki-peryferiow\/\">przyj\u0119tej przez nas architektury.<\/a><\/p>\n<p>Zdecydowanie lepiej sprawdzi si\u0119 interfejs zapewniaj\u0105cy aplikacji mo\u017cliwo\u015b\u0107 rejestrowania swoich callback\u00f3w. W czasie startu umie\u015bci ona odpowiednie funkcje w slotach odpowiadaj\u0105cych wybranym przyciskom.<\/p>\n<p><a href=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/keys_1-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/keys_1-1.jpg\" alt=\"\" width=\"650\" height=\"276\" class=\"aligncenter size-full wp-image-446\" srcset=\"https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/keys_1-1.jpg 650w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/keys_1-1-600x255.jpg 600w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/keys_1-1-300x127.jpg 300w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/a><br \/>\nW momencie naci\u015bni\u0119cia jednego z klawiszy, wywo\u0142ana zostanie zarejestrowana funkcja (o ile slot nie jest pusty).<\/p>\n<p><a href=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/keys_2-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/keys_2-1.jpg\" alt=\"\" width=\"650\" height=\"272\" class=\"aligncenter size-full wp-image-447\" srcset=\"https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/keys_2-1.jpg 650w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/keys_2-1-600x251.jpg 600w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/keys_2-1-300x126.jpg 300w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/a><br \/>\nNale\u017cy w tym miejscu pami\u0119ta\u0107, i\u017c wywo\u0142anie nast\u0105pi w kontek\u015bcie przerwania <a href=\"http:\/\/hayperek.pl\/en\/2018\/03\/25\/czas-to-podstawa\/\">podstawy czasu<\/a> (SysTick). Wymagane jest wi\u0119c zapewnienie odpowiedniej (bezpieczniej) synchronizacji danych mi\u0119dzy kontekstem aplikacji i callbacku, na przyk\u0142ad przez podw\u00f3jne buforowanie i dost\u0119p atomiczny. <\/p>","protected":false},"excerpt":{"rendered":"<p>Dzisiaj zajmiemy si\u0119 praktycznymi aspektami odczytywania klawiszy &#8211; spr\u00f3bujemy pod\u0142\u0105czy\u0107 manetk\u0119 MFA do naszego urz\u0105dzenia. Od strony elektrycznej, sk\u0142ada si\u0119 ona z trzech prze\u0142\u0105cznik\u00f3w monostabilnych, normalnie otwartych. Naci\u015bni\u0119cie jednego z przycisk\u00f3w zwiera odpowiadaj\u0105c\u0105 mu lini\u0119 bezpo\u015brednio do masy. Schemat manetki MFA wygl\u0105da wi\u0119c nast\u0119puj\u0105co: Poniewa\u017c u\u017cywanie ca\u0142ej manetki jest ma\u0142o wygodne, zdecydowa\u0142em si\u0119 zbudowa\u0107 jej [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":458,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":{"0":"post-440","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-stodni","9":"post-with-thumbnail","10":"post-with-thumbnail-large"},"_links":{"self":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts\/440","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/comments?post=440"}],"version-history":[{"count":8,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts\/440\/revisions"}],"predecessor-version":[{"id":650,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts\/440\/revisions\/650"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/media\/458"}],"wp:attachment":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/media?parent=440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/categories?post=440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/tags?post=440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}