{
    "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\/pl_pl\/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\/pl_pl\/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\/pl_pl\/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\/pl_pl\/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>",
        "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\/pl_pl\/wp-json\/wp\/v2\/posts\/440",
                "targetHints": {
                    "allow": [
                        "GET"
                    ]
                }
            }
        ],
        "collection": [
            {
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/posts"
            }
        ],
        "about": [
            {
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/types\/post"
            }
        ],
        "author": [
            {
                "embeddable": true,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/users\/1"
            }
        ],
        "replies": [
            {
                "embeddable": true,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/comments?post=440"
            }
        ],
        "version-history": [
            {
                "count": 8,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/posts\/440\/revisions"
            }
        ],
        "predecessor-version": [
            {
                "id": 650,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/posts\/440\/revisions\/650"
            }
        ],
        "wp:featuredmedia": [
            {
                "embeddable": true,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/media\/458"
            }
        ],
        "wp:attachment": [
            {
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/media?parent=440"
            }
        ],
        "wp:term": [
            {
                "taxonomy": "category",
                "embeddable": true,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/categories?post=440"
            },
            {
                "taxonomy": "post_tag",
                "embeddable": true,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/tags?post=440"
            }
        ],
        "curies": [
            {
                "name": "wp",
                "href": "https:\/\/api.w.org\/{rel}",
                "templated": true
            }
        ]
    }
}