{"id":7139,"date":"2021-01-07T19:18:43","date_gmt":"2021-01-07T19:18:43","guid":{"rendered":"https:\/\/www.fambach.net\/?p=7139"},"modified":"2021-01-07T19:29:40","modified_gmt":"2021-01-07T19:29:40","slug":"espressif-idf-timer","status":"publish","type":"post","link":"https:\/\/www.fambach.net\/en\/espressif-idf-timer\/","title":{"rendered":"Espressif IDF \u2013 Timer"},"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>Ein beliebtes Beispiel in der Arduino Umgebung ist Blink. Hier wird eine LED mit einer kurzen Pause an und aus geschaltet. Zu Gpio Aktionen kommen wir im n\u00e4chsten Kapitel, um das Blinken k\u00fcmmern wir uns hier. Auch in der Arduino Umgebung wird immer geraten Codeunterbrechungen mit Delay zu vermeiden. Dort gibt es einige Konstrukte mit sebst gestrickte Timer oder ganzen Bibliotheken. In der IDF gibt es als Bestandeteil des RTOS Timerfunktionen, diese erm\u00f6glichen Funktionsaufrufe zu terminieren. Es gibt zwei Optionen periodisch und das einmalig. <\/p>\n\n\n\n<p>Was ben\u00f6tigt man f\u00fcr einen IDF Timer?<\/p>\n\n\n\n<p>Eine Funktion welche die folgende Signatur haben muss:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>static void timer_callback(void* arg){\n}<\/code><\/pre>\n\n\n\n<p>Die Timerargumente, welche die einen Pointer auf die Timerfunktion (s.o.) und einen frei w\u00e4hlbaren Namen enthalten.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> const esp_timer_create_args_t periodic_timer_args = {\n                        \/* Pointer auf die Funktion *\/\n                        .callback = &amp;timer_callback,\n                        \/* Der name ist optional*\/\n                        .name = \"periodic\"\n    };<\/code><\/pre>\n\n\n\n<p>Jetzt noch den Timer erstellen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>esp_timer_handle_t periodic_timer;\nESP_ERROR_CHECK(\n  esp_timer_create(&amp;periodic_timer_args, &amp;periodic_timer)\n);  <\/code><\/pre>\n\n\n\n<p>Dann noch entscheiden ob dieser periodisch oder nur einmal gestarte werden soll. Der zweite Parameter ist die Ausl\u00f6sezeit in Microsekunden (Millisekunden * 1000)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/** periodisch\nESP_ERROR_CHECK(\n  esp_timer_start_periodic(periodic_timer, 5000000)\n);\n        \n\/\/** Nur einmal\nESP_ERROR_CHECK(\n  esp_timer_start_single(periodic_timer, 5000000)\n);<\/code><\/pre>\n\n\n\n<p>Im Beipiel wird die periodische Ausgabe des Textes aus der \u00dcbung 1, alle 5 Sekunden realisiert.<\/p>\n\n\n\n<script>\nvar project = \"sfambach\/espressif-idf\/tree\/master\/L4_Timed_Output\";\nvar file = \"\/main\/main.c\";\nvar test = project + file;\nvar startAt = 16;\nvar endAt = 0;\n\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<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"428\" height=\"163\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2021-01-02-16_23_31.jpg\" alt=\"\" class=\"wp-image-6950\"\/><figcaption>Konsolenausgabe - Alle 5 Sekunden wird die Ausgabe ausgel\u00f6st.<\/figcaption><\/figure>\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>Es gibt noch viele weitere Optionen in der IDF um Timer zu nutzen. Hier habe ich nur die Oberfl\u00e4che der Thematik angekratzt. F\u00fcr weitere Informationen sei deshalb auf die IDF Dokumentation verwiesen.<\/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 href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32\/api-reference\/system\/freertos.html#\" target=\"_blank\" rel=\"noreferrer noopener\">IDF-RTOS<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32\/api-reference\/system\/freertos.html#timer-api\" target=\"_blank\">IDF-Timer Api<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Ein beliebtes Beispiel in der Arduino Umgebung ist Blink. Hier wird eine LED mit einer kurzen Pause an und aus geschaltet. Zu Gpio Aktionen kommen wir im n\u00e4chsten Kapitel, um das Blinken k\u00fcmmern wir uns hier. Auch in der Arduino Umgebung wird immer geraten Codeunterbrechungen mit Delay zu vermeiden. Dort gibt es einige Konstrukte 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":7149,"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":[497,148,499,465,474,492,476,500,491],"modified_by":"sfambach","_links":{"self":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/7139"}],"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=7139"}],"version-history":[{"count":6,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/7139\/revisions"}],"predecessor-version":[{"id":7146,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/7139\/revisions\/7146"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/media\/7149"}],"wp:attachment":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/media?parent=7139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/categories?post=7139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/tags?post=7139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}