{"id":7263,"date":"2021-01-18T14:16:46","date_gmt":"2021-01-18T14:16:46","guid":{"rendered":"https:\/\/www.fambach.net\/?p=7263"},"modified":"2021-01-20T09:40:11","modified_gmt":"2021-01-20T09:40:11","slug":"espressif-idf-tasks-2","status":"publish","type":"post","link":"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/","title":{"rendered":"Espressif IDF \u2013 GPIOs"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_73 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/#Grundsatzliches\" title=\"Grunds\u00e4tzliches\">Grunds\u00e4tzliches<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/#Ausgang\" title=\"Ausgang\">Ausgang<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/#Eingang\" title=\"Eingang\">Eingang<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/#Fazit\" title=\"Conclusion\">Conclusion<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/#Verwandte_Beitrage\" title=\"Related Posts\">Related Posts<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/#Quellen\" title=\"Sources\">Sources<\/a><\/li><\/ul><\/nav><\/div>\n\n<p>Die meisten GPIO Pins des ESP32 sind, bis auf ein paar Ausnahmen, sowohl Eing\u00e4nge als auch Ausg\u00e4nge (Siehe hierzu auch das entsprechende Datenblatt). Wie diese Digital angesteuert werden, zeigen die n\u00e4chsten Beispiele. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Grundsatzliches\"><\/span>Grunds\u00e4tzliches<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Sind die Pins als Digital konfiguriert k\u00f6nnen sie jeweil den Wert 1= true oder 0= false annehmen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ausgang\"><\/span>Ausgang<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Hier das Blinkbeispiele mit dem periodischen Timern aus der vorangegangenen \u00dcbung. Nur wird jetzt eine LED geschaltet.<\/p>\n\n\n\n<p>Als bin\u00e4ren Ausgang konfigurieren<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpio_set_direction(&lt;LED_PIN>, GPIO_MODE_OUTPUT);<\/code><\/pre>\n\n\n\n<p>Wert setzten<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpio_set_level(&lt;LED_PIN>, &lt;0|1>);<\/code><\/pre>\n\n\n\n<p> <\/p>\n\n\n\n<script>\nvar project = \"sfambach\/espressif-idf\/tree\/master\/L7_GPIO_OUTPUT\";\nvar file = \"\/main\/main.c\";\nvar test = project + file;\nvar startAt = 16;\nvar endAt = 0;\n\ndocument.write('<a href=\"https:\/\/github.com\/'+project+'\" target=\"_blank\">Link zu Git<\/a>');\ndocument.write('<div><a href=\"https:\/\/downgit.github.io\/#\/home?url=https:\/\/github.com\/'+project+'\" target=\"_blank\">Download des Projektes mit DownGit<\/a><\/div>');\n\ndocument.write('<div style=\"font-size:1vw\">');\ndocument.write('<script src=\"https:\\\/\\\/gist-it.appspot.com\\\/github.com\\\/'+test+'\\?slice='+startAt+':'+endAt+'\"><\\\/script>');\ndocument.write('<\/div>');\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Eingang\"><\/span>Eingang<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Mein Code hierzu orientiert sich sehr stark am Beispiel Projekt \"examples\/peripherals\/gpio\/generic_gpio\" der IDF. <\/p>\n\n\n\n<p>Das Beispiel ist leider etwas umfangreicher geworden, da es mit zwei esentiellen Mechanismen arbeitet. Zum einen den Interrupts und zum andren einen Task. Die Tasks habe ich kurz zuvor eingef\u00fchrt.<\/p>\n\n\n\n<p>Als bin\u00e4ren Eingang  konfigurieren<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpio_set_direction(&lt;LED_PIN>, GPIO_MODE_INPUT);<\/code><\/pre>\n\n\n\n<p>Wert abfragen<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bool gpio_get_level(&lt;PIN>);<\/code><\/pre>\n\n\n\n<p>Interupt aktivieren<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/Interupt Typ setzten\ngpio_set_intr_type(\n     &lt;PIN>, \n     &lt;\n      GPIO_INTR_DISABLE \/\/ deaktiviert\n      GPIO_INTR_POSEDGE\r \/\/ Steigende Flanke\n      GPIO_INTR_NEGEDGE\r \/\/ Fallender Flanke\n\r      GPIO_INTR_ANYEDGE\r \/\/ Beider Flanken\n      GPIO_INTR_LOW_LEVEL\r \/\/ Eingang Low\n      GPIO_INTR_HIGH_LEVEL \/\/ Eingang High\n     >\n);\r\n\r\n\/\/ Interupt f\u00fcr Pin aktivieren\ngpio_intr_enable(&lt;PIN>);\r<\/code><\/pre>\n\n\n\n<p>Beispielprogramm<\/p>\n\n\n\n<p>Vor der Verwendung des Beispielprogramms menuconfig nicht vergessen, die Schalter k\u00f6nnen einzel aktiviert werden. Zus\u00e4tzlich kann die Kurz\/Lang Unterscheidung eingeschaltet werden. Diese pr\u00fcft ob ein Knopf lange oder kurz gedr\u00fcckt wurde.:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"363\" height=\"190\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2021-01-20-09_41_03.jpg\" alt=\"\" class=\"wp-image-7321\"\/><figcaption>Aktivierung \/ Konfiguration der Schalter<\/figcaption><\/figure>\n\n\n\n<script>\nvar project = \"sfambach\/espressif-idf\/tree\/master\/L7_GPIO_INPUT\";\nvar file = \"\/main\/main.c\";\nvar test = project + file;\nvar startAt = 16;\nvar endAt = 0;\n\ndocument.write('<a href=\"https:\/\/github.com\/'+project+'\" target=\"_blank\">Link zu Git<\/a>');\ndocument.write('<div><a href=\"https:\/\/downgit.github.io\/#\/home?url=https:\/\/github.com\/'+project+'\" target=\"_blank\">Download des Projektes mit DownGit<\/a><\/div>');\n\ndocument.write('<div style=\"font-size:1vw\">');\ndocument.write('<script src=\"https:\\\/\\\/gist-it.appspot.com\\\/github.com\\\/'+test+'\\?slice='+startAt+':'+endAt+'\"><\\\/script>');\ndocument.write('<\/div>');\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Fazit\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>GPIOs sind einfach zu bedienen. Die Handhabung \u00e4hnelt der Arduino GUI. Kommen Interupte dazu wird der Code schnell komplexer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Verwandte_Beitrage\"><\/span>Related Posts<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><a href=\"https:\/\/www.fambach.net\/en\/?p=6943\">Hauptbeitrag<\/a><\/p>\n\n\n<div class=\"display-posts-listing\">\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-projekt-erstellen\/\">Espressif IDF \u2013 Create Project<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-konsolenausgabe\/\">Espressif IDF \u2013 Console Output<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-fehlerbehandlung\/\">Espressif IDF \u2013 Error Handling<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-log-nachrichten\/\">Espressif IDF \u2013 Log Messages<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-timer\/\">Espressif IDF \u2013 Timer<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-menuconfig\/\">Espressif IDF \u2013 Menuconfig<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/\">Espressif IDF \u2013 Tasks<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/\">Espressif IDF \u2013 GPIOs<\/a><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Quellen\"><\/span>Sources<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32\/index.html\" target=\"_blank\">IDF - Programming Guide<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32\/api-reference\/peripherals\/gpio.html\" target=\"_blank\" rel=\"noreferrer noopener\">IDF - GPIO &amp; RTC GPIO<\/a><\/p>\n\n\n\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Die meisten GPIO Pins des ESP32 sind, bis auf ein paar Ausnahmen, sowohl Eing\u00e4nge als auch Ausg\u00e4nge (Siehe hierzu auch das entsprechende Datenblatt). Wie diese Digital angesteuert werden, zeigen die n\u00e4chsten Beispiele. Grunds\u00e4tzliches Sind die Pins als Digital konfiguriert k\u00f6nnen sie jeweil den Wert 1= true oder 0= false annehmen. Ausgang Hier das Blinkbeispiele mit &#8230;<\/p>\n<a href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/\" class=\"read-more-link\">Continue reading <span class=\"screen-reader-text\">\"Espressif IDF &#8211; GPIOs\"<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a>","protected":false},"author":1,"featured_media":7328,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"no","_lmt_disable":"no","footnotes":""},"categories":[188,472,473,496],"tags":[465,474,498,492,476,493,491],"modified_by":"sfambach","_links":{"self":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/7263"}],"collection":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/comments?post=7263"}],"version-history":[{"count":14,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/7263\/revisions"}],"predecessor-version":[{"id":7330,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/7263\/revisions\/7330"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/media\/7328"}],"wp:attachment":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/media?parent=7263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/categories?post=7263"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/tags?post=7263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}