<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>i.MX ProcessorsのトピックRe: FreeRTOS PWM Macro: correct usage</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843189#M129277</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Erik,&lt;/P&gt;&lt;P&gt;I need to do the same thing.&lt;/P&gt;&lt;P&gt;Can you point me to where you found the pwm example for the iMX6UL? &amp;nbsp;Or share the pwm module for m4 if possible?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thank you,&lt;/P&gt;&lt;P&gt;Tomasz&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 10 Aug 2018 20:12:01 GMT</pubDate>
    <dc:creator>tomaszsliwinski</dc:creator>
    <dc:date>2018-08-10T20:12:01Z</dc:date>
    <item>
      <title>FreeRTOS PWM Macro: correct usage</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843186#M129274</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am currently working on an i.MX7s on the M4 side and try power my LED (for testing purpose) via PWM.&lt;/P&gt;&lt;P&gt;If I hardcode the Register everything works fine. But this is kinda dirty I know.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define PWM1_Control&amp;nbsp;&amp;nbsp;0x30660000&lt;BR /&gt;#define PWM1_Sample&amp;nbsp;&amp;nbsp;&amp;nbsp;0x3066000c&lt;BR /&gt;#define PWM1_Period&amp;nbsp;&amp;nbsp;&amp;nbsp;0x30660010&lt;/P&gt;&lt;P&gt;#define READ_PWM1_Control()&amp;nbsp;&amp;nbsp;(*(volatile uint32_t *)PWM1_Control)&lt;/P&gt;&lt;P&gt;#define WRITE_PWM1_Sample(val)&amp;nbsp;&amp;nbsp;((*(volatile uint32_t *)PWM1_Sample) = (val))&lt;/P&gt;&lt;P&gt;#define WRITE_PWM1_Period(val)&amp;nbsp;&amp;nbsp;((*(volatile uint32_t *)PWM1_Period) = (val))&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;#include &amp;lt;stdint.h&amp;gt;&lt;BR /&gt;#include &amp;lt;stdbool.h&amp;gt;&lt;BR /&gt;#include "debug_console_imx.h"&lt;BR /&gt;#include "board.h"&lt;/P&gt;&lt;P&gt;int enable_PWM()&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PRINTF("\nenable PWM\n\n\r");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WRITE_PWM1_Control(0x01c30000);&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WRITE_PWM1_Sample(0x8000);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PRINTF("config Sample \n\r");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WRITE_PWM1_Period(0xf000);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PRINTF("config Period \n\r");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WRITE_PWM1_Control(0x01c30001);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PRINTF("done \n\n\r");&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://github.com/TimesysGit/freertos-imx7/tree/BSP_1.0.1_TS/platform/devices/MCIMX7D/include"&gt;https://github.com/TimesysGit/freertos-imx7/tree/BSP_1.0.1_TS/platform/devices/MCIMX7D/include&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Here (search for "PWM Peripheral Access Layer") are the Makros for the PWM. Can someone give me two or three lines of code so I can try to figure it out how it works? Ref. Manual here: &lt;A data-content-finding="Community" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fwww.nxp.com%2Fdocs%2Fen%2Freference-manual%2FIMX7DRM.pdf" rel="nofollow" target="_blank"&gt;&lt;SPAN style="color: #0066cc; text-decoration: underline;"&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;A href="https://www.nxp.com/docs/en/reference-manual/IMX7DRM.pdf" target="test_blank"&gt;https://www.nxp.com/docs/en/reference-manual/IMX7DRM.pdf&lt;/A&gt;&amp;nbsp;Page4207&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 Jul 2018 14:18:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843186#M129274</guid>
      <dc:creator>erikfriedel</dc:creator>
      <dc:date>2018-07-23T14:18:16Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS PWM Macro: correct usage</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843187#M129275</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Erik,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can go to &lt;A class="jivelink11" href="http://www.nxp.com/imx7d" title="http://www.nxp.com/imx7d"&gt;http://www.nxp.com/imx7d&lt;/A&gt; &amp;gt; SOFTWARE &amp;amp; TOOLS tab &amp;gt;Board Support Packages &amp;gt; &lt;A data-dtmassettype="Download" data-dtmname="FreeRTOS_iMX7D_1.0.1_LINUX" href="https://www.nxp.com/webapp/Download?colCode=FreeRTOS_iMX7D_1.0.1_LINUX&amp;amp;appType=license" target="_blank"&gt;FreeRTOS_iMX7D_1.0.1_LINUX&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This BSP is released by NXP and contain many examples for M4 may be useful for you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;On the other hand you may use PWM with Linux driver such as it is explained here &lt;A class="link-titled" href="https://www.udoo.org/docs/Hardware_&amp;amp;_Accessories/PWM.html" title="https://www.udoo.org/docs/Hardware_&amp;amp;_Accessories/PWM.html"&gt;PWM - UDOO Quad/Dual Docs&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Regards,&lt;BR /&gt;Carlos&lt;BR /&gt;NXP Technical Support&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Jul 2018 21:15:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843187#M129275</guid>
      <dc:creator>Carlos_Musich</dc:creator>
      <dc:date>2018-07-27T21:15:04Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS PWM Macro: correct usage</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843188#M129276</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you for your reply.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I was using the FreeRTOS iMX7D 1.0.1 BSP befor, but it sadly didn't support the PWM Module. At Linux there is a module already made but I want to use it with the M4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I solved this, by taking a look at the pwm example of the iMX6UL. I then wrote my own driver so I could use simple commands in the main program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Erik&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Jul 2018 05:42:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843188#M129276</guid>
      <dc:creator>erikfriedel</dc:creator>
      <dc:date>2018-07-30T05:42:13Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS PWM Macro: correct usage</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843189#M129277</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Erik,&lt;/P&gt;&lt;P&gt;I need to do the same thing.&lt;/P&gt;&lt;P&gt;Can you point me to where you found the pwm example for the iMX6UL? &amp;nbsp;Or share the pwm module for m4 if possible?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thank you,&lt;/P&gt;&lt;P&gt;Tomasz&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Aug 2018 20:12:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843189#M129277</guid>
      <dc:creator>tomaszsliwinski</dc:creator>
      <dc:date>2018-08-10T20:12:01Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS PWM Macro: correct usage</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843190#M129278</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Tomasz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can find the iMX6UL FreeRTOS here: &lt;A href="https://github.com/wangben85/imx6ul_freertos"&gt;https://github.com/wangben85/imx6ul_freertos&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For Driver implementation for the iMX7 you have to do changes to following files: ccm_imx7d.h:&lt;/P&gt;&lt;DIV&gt;--- ccm_imx7d.h&lt;/DIV&gt;&lt;DIV&gt;+++ ccm_imx7d.h&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;@@ -297,6&amp;nbsp;+297,10 @@&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;enum&amp;nbsp;_ccm_ccgr_gate&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ccmCcgrGateGpt2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;(uint32_t)(&amp;amp;CCM_CCGR125),&amp;nbsp;/*!&amp;lt;&amp;nbsp;GPT2&amp;nbsp;Clock&amp;nbsp;Gate.*/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ccmCcgrGateGpt3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;(uint32_t)(&amp;amp;CCM_CCGR126),&amp;nbsp;/*!&amp;lt;&amp;nbsp;GPT3&amp;nbsp;Clock&amp;nbsp;Gate.*/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ccmCcgrGateGpt4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;(uint32_t)(&amp;amp;CCM_CCGR127),&amp;nbsp;/*!&amp;lt;&amp;nbsp;GPT4&amp;nbsp;Clock&amp;nbsp;Gate.*/&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ccmCcgrGatePwm1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;(uint32_t)(&amp;amp;CCM_CCGR132),&amp;nbsp;/*!&amp;lt;&amp;nbsp;PWM1&amp;nbsp;Clock&amp;nbsp;Gate.*/&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ccmCcgrGatePwm2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;(uint32_t)(&amp;amp;CCM_CCGR133),&amp;nbsp;/*!&amp;lt;&amp;nbsp;PWM2&amp;nbsp;Clock&amp;nbsp;Gate.*/&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ccmCcgrGatePwm3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;(uint32_t)(&amp;amp;CCM_CCGR134),&amp;nbsp;/*!&amp;lt;&amp;nbsp;PWM3&amp;nbsp;Clock&amp;nbsp;Gate.*/&lt;/DIV&gt;&lt;DIV&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ccmCcgrGatePwm4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;(uint32_t)(&amp;amp;CCM_CCGR135),&amp;nbsp;/*!&amp;lt;&amp;nbsp;PWM4&amp;nbsp;Clock&amp;nbsp;Gate.*/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ccmCcgrGateI2c1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;(uint32_t)(&amp;amp;CCM_CCGR136),&amp;nbsp;/*!&amp;lt;&amp;nbsp;I2C1&amp;nbsp;Clock&amp;nbsp;Gate.*/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ccmCcgrGateI2c2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;(uint32_t)(&amp;amp;CCM_CCGR137),&amp;nbsp;/*!&amp;lt;&amp;nbsp;I2C2&amp;nbsp;Clock&amp;nbsp;Gate.*/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ccmCcgrGateI2c3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;(uint32_t)(&amp;amp;CCM_CCGR138),&amp;nbsp;/*!&amp;lt;&amp;nbsp;I2C3&amp;nbsp;Clock&amp;nbsp;Gate.*/&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;P&gt;MCIMX7D_M4.h:&lt;/P&gt;&lt;DIV&gt;--- MCIMX7D_M4.h&lt;/DIV&gt;&lt;DIV&gt;+++ MCIMX7D_M4.h&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;@@&amp;nbsp;-33289,16&amp;nbsp;+33289,23 @@&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;typedef&amp;nbsp;struct&amp;nbsp;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_POUTC(x)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(((uint32_t)(((uint32_t)(x))&amp;lt;&amp;lt;PWM_PWMCR_POUTC_SHIFT))&amp;amp;PWM_PWMCR_POUTC_MASK)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_HCTR_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x100000u&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_HCTR_SHIFT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/DIV&gt;&lt;DIV&gt;+#define&amp;nbsp;PWM_PWMCR_HCTR(x)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(((uint32_t)(((uint32_t)(x))&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;PWM_PWMCR_HCTR_SHIFT))&amp;nbsp;&amp;amp;&amp;nbsp;PWM_PWMCR_HCTR_MASK)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_BCTR_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x200000u&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_BCTR_SHIFT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/DIV&gt;&lt;DIV&gt;+#define&amp;nbsp;PWM_PWMCR_BCTR(x)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(((uint32_t)(((uint32_t)(x))&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;PWM_PWMCR_BCTR_SHIFT))&amp;nbsp;&amp;amp;&amp;nbsp;PWM_PWMCR_BCTR_MASK)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_DBGEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x400000u&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_DBGEN_SHIFT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/DIV&gt;&lt;DIV&gt;+#define&amp;nbsp;PWM_PWMCR_DBGEN(x)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(((uint32_t)(((uint32_t)(x))&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;PWM_PWMCR_DBGEN_SHIFT))&amp;nbsp;&amp;amp;&amp;nbsp;PWM_PWMCR_DBGEN_MASK)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_WAITEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x800000u&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_WAITEN_SHIFT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/DIV&gt;&lt;DIV&gt;+#define&amp;nbsp;PWM_PWMCR_WAITEN(x)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(((uint32_t)(((uint32_t)(x))&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;PWM_PWMCR_WAITEN_SHIFT))&amp;nbsp;&amp;amp;&amp;nbsp;PWM_PWMCR_WAITEN_MASK)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_DOZEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x1000000u&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_DOZEN_SHIFT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/DIV&gt;&lt;DIV&gt;+#define&amp;nbsp;PWM_PWMCR_DOZEN(x)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(((uint32_t)(((uint32_t)(x))&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;PWM_PWMCR_DOZEN_SHIFT))&amp;nbsp;&amp;amp;&amp;nbsp;PWM_PWMCR_DOZEN_MASK)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_STOPEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x2000000u&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_STOPEN_SHIFT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/DIV&gt;&lt;DIV&gt;+#define&amp;nbsp;PWM_PWMCR_STOPEN(x)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(((uint32_t)(((uint32_t)(x))&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;PWM_PWMCR_STOPEN_SHIFT))&amp;nbsp;&amp;amp;&amp;nbsp;PWM_PWMCR_STOPEN_MASK)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_FWM_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xC000000u&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_FWM_SHIFT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;#define&amp;nbsp;PWM_PWMCR_FWM(x)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(((uint32_t)(((uint32_t)(x))&amp;lt;&amp;lt;PWM_PWMCR_FWM_SHIFT))&amp;amp;PWM_PWMCR_FWM_MASK)&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;P&gt;and add the&amp;nbsp;drivers in /inc, /src&amp;nbsp;(I think these are the same as in the iMX6UL FreeRTOS but not sure anymore)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can use parts of the main file, but you have to pay attention to the names of the Makros.&lt;/P&gt;&lt;P&gt;in the hardware_init.c file just add&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* In this example, we need to grasp PWM1 module exclusively */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RDC_SetPdapAccess(RDC, BOARD_PWM1_RDC_PDAP, 3 &amp;lt;&amp;lt; (BOARD_DOMAIN_ID * 2), false, false);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable PWM1 clock */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CCM_ControlGate(CCM, BOARD_PWM1_CCM_CCGR, ccmClockNeededRunWait);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have any other questions please let me know.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Erik&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Aug 2018 06:01:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843190#M129278</guid>
      <dc:creator>erikfriedel</dc:creator>
      <dc:date>2018-08-13T06:01:00Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS PWM Macro: correct usage</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843191#M129279</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks a lot Erik. &amp;nbsp;Will reach out if I have more trouble.&lt;/P&gt;&lt;P&gt;thanks again!&lt;/P&gt;&lt;P&gt;Tomasz&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Aug 2018 00:19:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843191#M129279</guid>
      <dc:creator>tomaszsliwinski</dc:creator>
      <dc:date>2018-08-15T00:19:30Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS PWM Macro: correct usage</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843192#M129280</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You can also examine my NXP PWM generator source on Github&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://github.com/solaraeng/NXP_M4_PWM"&gt;https://github.com/solaraeng/NXP_M4_PWM&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is the .pdf description :&lt;A href="https://github.com/solaraeng/NXP_M4_PWM/blob/master/Readme_PWM.pdf"&gt;Readme_PWM.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;An Youtube of it in action is here :&amp;nbsp;&lt;A class="link-titled" href="https://youtu.be/PrF3W6B69Ww" title="https://youtu.be/PrF3W6B69Ww"&gt;NXP FreeRTOS PWM modulator/LED current driver on NXP imx7 via GPT on Toradex ASTER - YouTube&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;(I wrote it for Toradex Colibri on ASTER) but I will also port it for NXP Sabre, it uses a technique, which is much simpler and uses the NXP GPT Timer to generate PWM by alternating phases...It takes a little bit of intuition to use, but it only requires you enter your timing characteristics and number of steps inside each phase. I might use this to create a better driver for motor control. The code goes as follows :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;BR /&gt; * Copyright (c) 2015, Freescale Semiconductor, Inc.&lt;BR /&gt; * All rights reserved.&lt;BR /&gt; ***************************************************************************************&lt;BR /&gt; * Project - mx7_colibri_m4_PWM_imx_demo (PWM Modulator)&lt;BR /&gt; * Created by : Mario Ghecea&lt;BR /&gt; * Solara Engineering (solaraeng@gmail.com)&lt;BR /&gt; * 6/29/2019&lt;BR /&gt; * Purpose - To facilitate a scalable and programmable PWM algorithm within FreeRTOS&lt;BR /&gt; * utilizing any number of dividing steps (1-n) for smoothness and PWM resolution&lt;BR /&gt; * Only one generic timer (GPT) is used as counter for each alternating phase step...&lt;BR /&gt; * This could be used as a generic LED driver, contrast for a display and perhaps&lt;BR /&gt; * motor control through expansion.&lt;BR /&gt; * If you reuse or distribute for your purpose please keep this header...&lt;BR /&gt; *****************************************************************************************&lt;BR /&gt; * Redistribution and use in source and binary forms, with or without modification,&lt;BR /&gt; * are permitted provided that the following conditions are met:&lt;BR /&gt; *&lt;BR /&gt; * o Redistributions of source code must retain the above copyright notice, this list&lt;BR /&gt; * of conditions and the following disclaimer.&lt;BR /&gt; *&lt;BR /&gt; * o Redistributions in binary form must reproduce the above copyright notice, this&lt;BR /&gt; * list of conditions and the following disclaimer in the documentation and/or&lt;BR /&gt; * other materials provided with the distribution.&lt;BR /&gt; *&lt;BR /&gt; * o Neither the name of Freescale Semiconductor, Inc. nor the names of its&lt;BR /&gt; * contributors may be used to endorse or promote products derived from this&lt;BR /&gt; * software without specific prior written permission.&lt;BR /&gt; *&lt;BR /&gt; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND&lt;BR /&gt; * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED&lt;BR /&gt; * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE&lt;BR /&gt; * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR&lt;BR /&gt; * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES&lt;BR /&gt; * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;&lt;BR /&gt; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON&lt;BR /&gt; * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&lt;BR /&gt; * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;BR /&gt; * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;BR /&gt; */&lt;/P&gt;&lt;P&gt;#include "FreeRTOS.h"&lt;BR /&gt;#include "task.h"&lt;BR /&gt;#include "board.h"&lt;BR /&gt;#include "debug_console_imx.h"&lt;BR /&gt;#include "gpio_ctrl.h"&lt;BR /&gt;#include "hw_timer.h"&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;#define PWM_MIN (0.1f) // Lets assume 10% phase increases&lt;BR /&gt;#define PWM_MAX (1.0f) // Lets assume your phase max at 100%&lt;BR /&gt;#define PWM_FREQ_DIVIDER 1 // Your PWM period frequency divider in milliseconds (1/PWM_FREQ_DIVIDER) - LED Bink Interval&lt;BR /&gt;#define PWM_STEPS_PER_PHASE 20 // Increment PWM_STEPS_PER_PHASE for a higher resolution (Above 20 it suddenly glitches)&lt;BR /&gt;#define PWM_RESOLUTION_COUNTER (1000/(PWM_FREQ_DIVIDER * PWM_STEPS_PER_PHASE)) // Value in ms per phase&lt;/P&gt;&lt;P&gt;static volatile uint32_t blinkingIntervalHigh = PWM_RESOLUTION_COUNTER;&lt;BR /&gt;static volatile uint32_t blinkingIntervalLow = PWM_RESOLUTION_COUNTER;&lt;BR /&gt;static volatile float pwm = PWM_MIN;&lt;BR /&gt;static volatile bool start = true;&lt;/P&gt;&lt;P&gt;void SyncPWM();&lt;BR /&gt;void Resync();&lt;/P&gt;&lt;P&gt;/******************************************************************************&lt;BR /&gt;*&lt;BR /&gt;* Function Name: ToggleTask&lt;BR /&gt;* Comments: this task is used to turn toggle on/off LED.&lt;BR /&gt;* This task has the effect of staring on cue so it will sync the phases&lt;BR /&gt;* correctly based on start signal from Phase Synchronizer (SwitchTask).&lt;BR /&gt;*&lt;BR /&gt;******************************************************************************/&lt;BR /&gt;void ToggleTask(void *pvParameters)&lt;BR /&gt;{&lt;BR /&gt; while (true)&lt;BR /&gt; {&lt;BR /&gt; if (blinkingIntervalHigh != 0 &amp;amp;&amp;amp; start == true)&lt;BR /&gt; {&lt;BR /&gt; // If we have been signaled to start, lets sync the PWM phase&lt;BR /&gt; SyncPWM();&lt;BR /&gt; // Process PWM Phase High&lt;BR /&gt; GPIO_Ctrl_ToggleLed(true);&lt;BR /&gt; /* Use Hardware timer to get accurate delay */&lt;BR /&gt; Hw_Timer_Delay(blinkingIntervalHigh);&lt;BR /&gt; // Process PWM Phase Low&lt;BR /&gt; GPIO_Ctrl_ToggleLed(false);&lt;BR /&gt; Hw_Timer_Delay(blinkingIntervalLow);&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;// Sync PWM Block - Phase Increment&lt;BR /&gt;void SyncPWM()&lt;BR /&gt;{&lt;BR /&gt; blinkingIntervalHigh = PWM_RESOLUTION_COUNTER * pwm ;&lt;BR /&gt; blinkingIntervalLow = PWM_RESOLUTION_COUNTER * (1.0f - pwm);&lt;/P&gt;&lt;P&gt;pwm += (0.5f / PWM_STEPS_PER_PHASE);&lt;/P&gt;&lt;P&gt;Resync();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void Resync()&lt;BR /&gt;{&lt;BR /&gt; if (pwm &amp;gt;= PWM_MAX)&lt;BR /&gt; {&lt;BR /&gt; pwm = PWM_MIN;&lt;BR /&gt; }&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/******************************************************************************&lt;BR /&gt;*&lt;BR /&gt;* Function Name: main&lt;BR /&gt;* Comments: main function, toggle LED and switch the blinking frequency by key.&lt;BR /&gt;*&lt;BR /&gt;******************************************************************************/&lt;BR /&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt; /* Initialize board specified hardware. */&lt;BR /&gt; hardware_init();&lt;/P&gt;&lt;P&gt;Hw_Timer_Init();&lt;BR /&gt; GPIO_Ctrl_Init();&lt;/P&gt;&lt;P&gt;PRINTF("\n\r================= PWM Blinking Demo ==================\n\r");&lt;/P&gt;&lt;P&gt;/* Create a the APP main task. */&lt;BR /&gt; xTaskCreate(ToggleTask, "Toggle Task", configMINIMAL_STACK_SIZE,&lt;BR /&gt; NULL, tskIDLE_PRIORITY+1, NULL);&lt;/P&gt;&lt;P&gt;/* Start FreeRTOS scheduler. */&lt;BR /&gt; vTaskStartScheduler();&lt;/P&gt;&lt;P&gt;/* should never reach this point. */&lt;BR /&gt; while (true);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt; * EOF&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 30 Jun 2019 00:28:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843192#M129280</guid>
      <dc:creator>solaraeng</dc:creator>
      <dc:date>2019-06-30T00:28:04Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS PWM Macro: correct usage</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843193#M129281</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Even Better, I have wrote the PWM Generator using the NXP PWM Peripheral which yields greater accuracy and Brightness response for an hypothetical LED Modulator/Integrator.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://github.com/solaraeng/NXP_M4_PWM/blob/master/freertos-solara/examples/imx7_colibri_m4/demo_apps/pwm2_imx_demo/PWM_Peripheral_Readme.pdf"&gt;https://github.com/solaraeng/NXP_M4_PWM/blob/master/freertos-solara/examples/imx7_colibri_m4/demo_apps/pwm2_imx_demo/PWM_Peripheral_Readme.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The code is on my github or just read my document above.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://github.com/solaraeng/NXP_M4_PWM/tree/master/freertos-solara/examples/imx7_colibri_m4/demo_apps/pwm2_imx_demo"&gt;https://github.com/solaraeng/NXP_M4_PWM/tree/master/freertos-solara/examples/imx7_colibri_m4/demo_apps/pwm2_imx_demo&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The video on youtube is here :&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.youtube.com/watch?v=mzYZhHR7xvc"&gt;https://www.youtube.com/watch?v=mzYZhHR7xvc&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Jul 2019 07:30:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/FreeRTOS-PWM-Macro-correct-usage/m-p/843193#M129281</guid>
      <dc:creator>solaraeng</dc:creator>
      <dc:date>2019-07-04T07:30:41Z</dc:date>
    </item>
  </channel>
</rss>

