{"id":432,"date":"2017-11-24T23:26:53","date_gmt":"2017-11-24T22:26:53","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=432"},"modified":"2017-12-30T19:36:44","modified_gmt":"2017-12-30T18:36:44","slug":"51-inputcapture_pwm-library-stm32f4","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/51-inputcapture_pwm-library-stm32f4\/","title":{"rendered":"51-InputCapture_PWM-Library (STM32F4)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/50-sram-library-stm32f4\/\" title=\"50-SRAM-Library (STM32F4)\"><span class=\"meta-nav\">\u2190<\/span> 50-SRAM-Library (STM32F4)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/52-encoder-library-stm32f4\/\" title=\"52-Encoder-Library (STM32F4)\">52-Encoder-Library (STM32F4) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Um die Frequenz und den Tastgrad (Dutycycle) von einem PWM-Signal messen zu k\u00f6nnen, habe ich diese Librarys erstellt.<br \/>\n<em>(es gibt auch noch eine extra LIB wenn nur die Frq gemessen werden soll)<\/em><\/p>\n<p>Es gibt f\u00fcr die Timer \u201cTIM2, TIM3, TIM4, TIM5\u2033 je eine Library.<\/p>\n<p>Die Timer werden im PWM-InputCapture-Mode betrieben, mit MasterSlave und Autoreset. Die Interrupt-Funktion wird bei jeder Hi-Flanke vom Signal ausgel\u00f6st und ermittelt die Periodendauer und die Impulsl\u00e4nge vom Signal.<\/p>\n<p>Pro Timer kann in diesem Mode nur ein Signal gemessen werden. Und es stehen auch nur die Kan\u00e4le 1 oder 2 zur Verf\u00fcgung.<\/p>\n<p>Der Kanal und Port-Pin der benutzt werden soll, muss im C-File eingetragen werden.<\/p>\n<p>Im H-File wird die Takt-Frequenz vom Timer eingestellt. Diese beeinflusst die\u00a0Aufl\u00f6sung und die minimale Frequenz die gemessen werden kann.<\/p>\n<p><em>Hinweis : die Funktion zum auslesen der Frequenz \u00fcbergibt nur den Timerwert der Periodendauer. Das umrechnen in eine Frequenz muss, wenn notwendig, extra gemacht werden. Falls kein Signal anliegt (oder die Messung noch nicht fertig ist) ist der R\u00fcckgabewert = 0. Damit kann ein fehlendes Signal erkannt werden.<\/em><\/p>\n<p><strong>Bild :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/07\/pwm_in.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2168\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/07\/pwm_in-300x118.jpg\" alt=\"pwm_in\" width=\"300\" height=\"118\" \/><\/a><\/p>\n<p><strong>Voraussetzungen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">Benutzte Module der CooCox-IDE : GPIO, TIM, MISC\r\nBenutzte Librarys : keine<\/pre>\n<p><strong>Funktionen (<strong>f\u00fcr PWM mit TIM2<\/strong>) :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">void UB_ICPWM_TIM2_Init(void);         \/\/ um die PWM-Messung mit TIM2 zu initialisieren\r\nuint16_t UB_ICPWM_TIM2_ReadFRQ(void);  \/\/ zum auslesen der gemessenen Frequenz\r\nuint16_t UB_ICPWM_TIM2_ReadDUTY(void); \/\/ zum auslesen vom gemessenen Dutycycle<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 20.07.2013\r\n\/\/ Version  : 1.0\r\n\/\/ Autor    : UB\r\n\/\/ EMail    : mc-4u(@)t-online.de\r\n\/\/ Web      : www.mikrocontroller-4u.de\r\n\/\/ CPU      : STM32F4\r\n\/\/ IDE      : CooCox CoIDE 1.7.0\r\n\/\/ Module   : CMSIS_BOOT, M4_CMSIS_CORE\r\n\/\/ Funktion : Demo der InputCapture PWM-Library\r\n\/\/ Hinweis  : Diese zwei Files muessen auf 8MHz stehen\r\n\/\/              \"cmsis_boot\/stm32f4xx.h\"\r\n\/\/              \"cmsis_boot\/system_stm32f4xx.c\"\r\n\/\/--------------------------------------------------------------\r\n\r\n#include \"main.h\"\r\n#include \"stm32_ub_icpwm_tim2.h\"\r\n\r\nint main(void)\r\n{\r\n  uint32_t messwert=0,freuqenz=0,impuls=0;\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ Init vom Timer2 zur PWM-Messung\r\n  UB_ICPWM_TIM2_Init();\r\n\r\n  while(1)\r\n  {\r\n    \/\/ gemessene FRQ an PA1 auslesen\r\n    messwert=UB_ICPWM_TIM2_ReadFRQ();\r\n    if(messwert&gt;0) {\r\n      \/\/ wenn Messwert gueltig\r\n      \/\/ frequenz ausrechnen\r\n      freuqenz=(1000000\/messwert);\r\n      \/\/ impuls auslesen\r\n      impuls=UB_ICPWM_TIM2_ReadDUTY();\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/07\/ub_stm32f4_ic_pwm_v100.zip\">ub_stm32f4_ic_pwm_v100<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/07\/Demo_51_PWM_IN.zip\">Demo_51_PWM_IN<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um die Frequenz und den Tastgrad (Dutycycle) von einem PWM-Signal messen zu k\u00f6nnen, habe ich diese Librarys erstellt. (es gibt auch noch eine extra LIB wenn nur die Frq gemessen werden soll) Es gibt f\u00fcr die Timer \u201cTIM2, TIM3, TIM4, &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/51-inputcapture_pwm-library-stm32f4\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":144,"menu_order":51,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[199,9,57,7],"class_list":["post-432","page","type-page","status-publish","hentry","category-stm32f4","tag-dutycycle","tag-library","tag-pwm","tag-stm32f4"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/comments?post=432"}],"version-history":[{"count":3,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/432\/revisions"}],"predecessor-version":[{"id":1590,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/432\/revisions\/1590"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/144"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/media?parent=432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/categories?post=432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/tags?post=432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}