<?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>topic FRDM-K22F  PIT TOGGLE  Output Frequency in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/571413#M34129</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Hi there,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;I'm interested about the output frequency of PIT(pit_frdmk22f). I run the project pit_frdmk22f, which is a frdmk22f board driving example. The pit_source_clock is at 40MHz, and the PIT_LDVAL0 is 100000U, and using digital oscilloscope read from port PTA1, shows the frequency is 10Hz.&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;When i set PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, USEC_TO_COUNT(10000U, PIT_SOURCE_CLOCK)), the digital oscilloscope shows 100Hz.&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;When i set PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, USEC_TO_COUNT(1000U, PIT_SOURCE_CLOCK)), the digital oscilloscope shows 250Hz.&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;When i set PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, USEC_TO_COUNT(100U, PIT_SOURCE_CLOCK)), the digital oscilloscope shows 300Hz.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;is the frequency&amp;nbsp; calculated by this &lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;PIT_SOURCE_CLOCK / &lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;PIT_LDVAL0&lt;/SPAN&gt;?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="TERATERM.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/37063i3D3996D19C0955A9/image-size/large?v=v2&amp;amp;px=999" role="button" title="TERATERM.png" alt="TERATERM.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;#define PIT_SOURCE_CLOCK CLOCK_GetFreq(kCLOCK_BusClk)&lt;/P&gt;&lt;P&gt;#define PIT_CORE_CLOCK CLOCK_GetFreq(kCLOCK_CoreSysClk)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRINTF("\r\n PIT_SOURCE_CLOCK is: %d", PIT_SOURCE_CLOCK);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRINTF("\r\n PIT_CORE_CLOCK is: %d", PIT_CORE_CLOCK);&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Also, what settings are needed to be set to achieve the right frequency?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Thanks in advance!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;- Jack&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 14 Jul 2016 06:25:54 GMT</pubDate>
    <dc:creator>jackxu</dc:creator>
    <dc:date>2016-07-14T06:25:54Z</dc:date>
    <item>
      <title>FRDM-K22F  PIT TOGGLE  Output Frequency</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/571413#M34129</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Hi there,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;I'm interested about the output frequency of PIT(pit_frdmk22f). I run the project pit_frdmk22f, which is a frdmk22f board driving example. The pit_source_clock is at 40MHz, and the PIT_LDVAL0 is 100000U, and using digital oscilloscope read from port PTA1, shows the frequency is 10Hz.&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;When i set PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, USEC_TO_COUNT(10000U, PIT_SOURCE_CLOCK)), the digital oscilloscope shows 100Hz.&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;When i set PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, USEC_TO_COUNT(1000U, PIT_SOURCE_CLOCK)), the digital oscilloscope shows 250Hz.&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;When i set PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, USEC_TO_COUNT(100U, PIT_SOURCE_CLOCK)), the digital oscilloscope shows 300Hz.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;is the frequency&amp;nbsp; calculated by this &lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;PIT_SOURCE_CLOCK / &lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;PIT_LDVAL0&lt;/SPAN&gt;?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="TERATERM.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/37063i3D3996D19C0955A9/image-size/large?v=v2&amp;amp;px=999" role="button" title="TERATERM.png" alt="TERATERM.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;#define PIT_SOURCE_CLOCK CLOCK_GetFreq(kCLOCK_BusClk)&lt;/P&gt;&lt;P&gt;#define PIT_CORE_CLOCK CLOCK_GetFreq(kCLOCK_CoreSysClk)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRINTF("\r\n PIT_SOURCE_CLOCK is: %d", PIT_SOURCE_CLOCK);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRINTF("\r\n PIT_CORE_CLOCK is: %d", PIT_CORE_CLOCK);&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Also, what settings are needed to be set to achieve the right frequency?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Thanks in advance!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;- Jack&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jul 2016 06:25:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/571413#M34129</guid>
      <dc:creator>jackxu</dc:creator>
      <dc:date>2016-07-14T06:25:54Z</dc:date>
    </item>
    <item>
      <title>Re: FRDM-K22F  PIT TOGGLE  Output Frequency</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/571414#M34130</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Hi Jack,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;After doing a little digging, this is what I found:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit;"&gt;USEC_TO_COUNT(10000U, PIT_SOURCE_CLOCK)) is defined in the fsl_common.h file.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit;"&gt;I am using a different board, with a core speed of 120 MHz and a bus speed of 60 MHz, but I think the logic will be the same.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit;"&gt;In this example the PIT is clocked from the BusCLK, so my Pit source clock is 60 MHz.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit;"&gt;Here is what the macro looks like in my fsl_common.h:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;/*! Macro to convert a microsecond period to raw count value */&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;#define USEC_TO_COUNT(us, clockFreqInHz) (uint64_t)((uint64_t)&lt;SPAN style="font-weight: bold; font-style: inherit; font-family: inherit;"&gt;us&lt;/SPAN&gt; * clockFreqInHz / 1000000U)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;In essence this macro multiplies the number I enter for &lt;SPAN style="font-weight: bold; font-style: inherit; font-family: inherit;"&gt;us&lt;/SPAN&gt; by 60.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;For example, if I enter "100000U" for my value,&amp;nbsp; USEC_TO_COUNT converts it to "6000000" which becomes the LDVAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;With a PIT clock speed of 60 MHz and a LDVAL counter value of 6,000,000, the resulting frequency is 10 Hz.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;I just did a test @ 68 Hz.&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;1/68 = 1.470588E-2 seconds = 14705.88 uS. Rounding to 14706, and passing that argument to USEC_TO_COUNT, I did indeed acheive a frequency of 68 Hz measured on my scope.&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;An easy shortcut to get this number is just to take 1000000/(your desired frequency) and pass that number to &lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;USEC_TO_COUNT.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;I hope this helps!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Warm Regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Eric&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jul 2016 16:48:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/571414#M34130</guid>
      <dc:creator>ericfoote1</dc:creator>
      <dc:date>2016-07-14T16:48:33Z</dc:date>
    </item>
    <item>
      <title>Re: FRDM-K22F  PIT TOGGLE  Output Frequency</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/571415#M34131</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jack,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Additionally, it is worth mentioning that in the pit example there is a printf statement:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (true == pitIsrFlag)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRINTF("\r\n Channel No.0 interrupt is occured !");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LED_TOGGLE();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pitIsrFlag = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When the print statement is running, it limits the speed at which the GPIO can toggle. If you want to acheive higher speeds, it will be necessary to comment out or remove the print statement in this if statement. This should clear up your problem.&lt;/P&gt;&lt;P&gt;Best,&lt;/P&gt;&lt;P&gt;Eric&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jul 2016 17:31:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/571415#M34131</guid>
      <dc:creator>ericfoote1</dc:creator>
      <dc:date>2016-07-14T17:31:05Z</dc:date>
    </item>
    <item>
      <title>Re: FRDM-K22F  PIT TOGGLE  Output Frequency</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/571416#M34132</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Eric,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks, and i'll try some more follow your suggestion.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards' Jack&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 16 Jul 2016 11:55:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/571416#M34132</guid>
      <dc:creator>jackxu</dc:creator>
      <dc:date>2016-07-16T11:55:02Z</dc:date>
    </item>
    <item>
      <title>Re: FRDM-K22F  PIT TOGGLE  Output Frequency</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/571417#M34133</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Eric,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When i disable the print statement, the toggle frequency is much more higher.&lt;/P&gt;&lt;P&gt;But there is some more question about the macro&lt;/P&gt;&lt;P&gt;/*! @name Timer utilities */&lt;/P&gt;&lt;P&gt;/* @{ */&lt;/P&gt;&lt;P&gt;/*! Macro to convert a microsecond period to raw count value */&lt;/P&gt;&lt;P&gt;#define USEC_TO_COUNT(us, clockFreqInHz) (uint64_t)((uint64_t)us * clockFreqInHz / 1000000U)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm confuse about the &lt;STRONG&gt;us&lt;/STRONG&gt;, the &lt;STRONG&gt;us&lt;/STRONG&gt; changes @ different frequency?&lt;/P&gt;&lt;P&gt;when i set the core frequency @ 80MHz, bus speed @ 40MHz&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; font-size: 14px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I enter "10U" for my value,&amp;nbsp; measured @ 100kHz , then the &lt;STRONG&gt;us&lt;/STRONG&gt; is 40?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; font-size: 14px;"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I enter "100U" for my value,&amp;nbsp; measured @ 10kHz , then the &lt;/SPAN&gt;&lt;STRONG&gt;us&lt;/STRONG&gt;&lt;SPAN&gt; is 40?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; font-size: 14px;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;when i set the core frequency @ 96MHz, bus speed @ 48MHz&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; font-size: 14px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I enter "10U" for my value,&amp;nbsp; measured @ 100kHz , then the &lt;STRONG&gt;us&lt;/STRONG&gt; is 48?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; font-size: 14px;"&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; font-size: 14px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I enter "100U" for my value,&amp;nbsp; measured @ 10kHz , then the &lt;/SPAN&gt;&lt;STRONG style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; font-size: 14px;"&gt;us&lt;/STRONG&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; font-size: 14px;"&gt; is 48?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;when i set the core frequency @ 100MHz, bus speed @ 50MHz&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; font-size: 14px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I enter "10U" for my value,&amp;nbsp; measured @ 100kHz , then the &lt;STRONG&gt;us&lt;/STRONG&gt; is 50?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; font-size: 14px;"&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; font-size: 14px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I enter "100U" for my value,&amp;nbsp; measured @ 10kHz , then the &lt;/SPAN&gt;&lt;STRONG style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; font-size: 14px;"&gt;us&lt;/STRONG&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; font-size: 14px;"&gt; is 50?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-size: 14px; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;Thanks in advance,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-size: 14px; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;Jack&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 18 Jul 2016 03:53:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/571417#M34133</guid>
      <dc:creator>jackxu</dc:creator>
      <dc:date>2016-07-18T03:53:18Z</dc:date>
    </item>
    <item>
      <title>Re: FRDM-K22F  PIT TOGGLE  Output Frequency</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/571418#M34134</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jack,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The argument you pass to the Marco is constant. It is the number of microseconds you want your period to be. What changes relative to the bus speed is the "count".&amp;nbsp; Here is how it works. It first takes the argument you pass to it, in your example, "10U" or "100U". This value gets passed to the Macro and becomes &lt;STRONG&gt;us. &lt;/STRONG&gt;The other value it uses is the PIT_SOURCE_CLOCK, which becomes &lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;clockFreqInHz, which is defined as the bus clock for this example.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;This macro converts time in units of micro seconds, into a total count number, or LDVAL. I'll use your example of 40 MHz to illustrate. Let's say we want the period to be half a second, which is 500,000 us. My function call would look something like this:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt; PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, USEC_TO_COUNT(500000U, PIT_SOURCE_CLOCK));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;Now, assuming the bus speed is 40 MHz, the macro would would take the bus speed and divide it by 1000000. This gives a value of &lt;STRONG&gt;40&lt;/STRONG&gt;, which is how many cycles the bus clock goes through in one microsecond. Thus, in order for the PIT to have a period of half a second, or 500000 us, the LDVAL would have to be (40 clock cycles/microsecond)(500000 microseconds) or 20,000,000 clock cycles. Convert to hex and you get 0x1312D00 as your LDVAL. As you adjust your bus speed, the only thing that really changes is the number of cycles per unit time, and thus your count and LDVAL values.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;So, for this case:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;"when i set the core frequency @ 100MHz, bus speed @ 50MHz&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 14px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I enter "10U" for my value,&amp;nbsp; measured @ 100kHz , then the &lt;SPAN style="font-weight: bold; font-style: inherit; font-family: inherit;"&gt;us&lt;/SPAN&gt; is 50?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 14px;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I enter "100U" for my value,&amp;nbsp; measured @ 10kHz , then the &lt;/SPAN&gt;&lt;SPAN style="font-weight: bold; font-style: inherit;"&gt;us&lt;/SPAN&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit;"&gt; is 50?"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;STRONG style=": ; font-size: 14px; font-style: inherit;"&gt;us &lt;/STRONG&gt;&lt;SPAN style="font-size: 14px; font-style: inherit;"&gt;is "10U" and "100U" respectively. You have the right idea though, &lt;STRONG&gt;50&lt;/STRONG&gt; is the number of &lt;STRONG&gt;clock cycles per microsecond.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;I hope this helps.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;Best,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;Eric&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Jul 2016 14:24:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/571418#M34134</guid>
      <dc:creator>ericfoote1</dc:creator>
      <dc:date>2016-07-19T14:24:54Z</dc:date>
    </item>
    <item>
      <title>Re: FRDM-K22F  PIT TOGGLE  Output Frequency</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/571419#M34135</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Eric,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Recently i'm trying to write some routine with PIT control GPIOs, but it runs in disorder. Part of PIT0_IRQHandler routine as follow:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/****************************PIT0_IRQHandler***********************************************/&lt;/P&gt;&lt;P&gt;cnt1 = (cnt1 + 1) &amp;amp; 0xff;&lt;/P&gt;&lt;P&gt;const1 = 500;&lt;/P&gt;&lt;P&gt;/**********************************************************************************************/&lt;/P&gt;&lt;P&gt;if (const1 &amp;gt;500)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(cnt1 &amp;lt; 64)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO_ClearPinsOutput(BOARD_PIN1_GPIO, 1U &amp;lt;&amp;lt; BOARD_PIN1_GPIO_PIN);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (cnt1 &amp;lt; 128)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO_SetPinsOutput(BOARD_PIN1_GPIO, 1U &amp;lt;&amp;lt; BOARD_PIN1_GPIO_PIN);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO_ClearPinsOutput(BOARD_PIN1_GPIO, 1U &amp;lt;&amp;lt; BOARD_PIN1_GPIO_PIN);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;else&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO_ClearPinsOutput(BOARD_PIN1_GPIO, 1U &amp;lt;&amp;lt; BOARD_PIN1_GPIO_PIN);&lt;/P&gt;&lt;P&gt;/***************************************************************************************************/&lt;/P&gt;&lt;P&gt;if (cnt1 &amp;lt; 128)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO_ClearPinsOutput(BOARD_PIN2_GPIO, 1U &amp;lt;&amp;lt; BOARD_PIN2_GPIO_PIN);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;else if(cnt1 &amp;lt; 192)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO_SetPinsOutput(BOARD_PIN2_GPIO, 1U &amp;lt;&amp;lt; BOARD_PIN2_GPIO_PIN);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;else&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO_ClearPinsOutput(BOARD_PIN2_GPIO, 1U &amp;lt;&amp;lt; BOARD_PIN2_GPIO_PIN);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;/*****************************************************************************************************/&lt;/P&gt;&lt;P&gt;if(cnt1 &amp;gt; 256)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt1 = 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;/*****************************************************************************************************/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/********************************Main****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, 2000);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and set my bus clock @ 50MHz, then the PIN1's frequency should @50MHz/2000/256=97.66Hz&lt;/P&gt;&lt;P&gt;But read from my scope is @195Hz&lt;/P&gt;&lt;P&gt;also the PIN2's frequency is the same as the PIN1&lt;/P&gt;&lt;P&gt;also the timing of @64 @128 @192 is wrong.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;&lt;P&gt;-Jack&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Jul 2016 01:24:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/571419#M34135</guid>
      <dc:creator>jackxu</dc:creator>
      <dc:date>2016-07-29T01:24:02Z</dc:date>
    </item>
    <item>
      <title>Re: in IRQ handler the semaphore is not releasing, and task is not running</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/1775846#M65801</link>
      <description>&lt;P&gt;hi&lt;/P&gt;&lt;P&gt;iam new to this freertos iam facing issue in PIT iam sharing my code once check&amp;nbsp;&lt;/P&gt;&lt;P&gt;issue:-i am raising interrupt but the semaphore is not relesing and task is not working&amp;nbsp;&lt;/P&gt;&lt;P&gt;code:&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;P&gt;&lt;SPAN&gt;#include&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;stdio.h&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* Kernel includes. */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#include&lt;/SPAN&gt; &lt;SPAN&gt;"FreeRTOS.h"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#include&lt;/SPAN&gt; &lt;SPAN&gt;"task.h"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#include&lt;/SPAN&gt; &lt;SPAN&gt;"timers.h"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#include&lt;/SPAN&gt; &lt;SPAN&gt;"fsl_pit.h"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* &lt;/SPAN&gt;&lt;SPAN&gt;Freescale&lt;/SPAN&gt;&lt;SPAN&gt; includes. */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#include&lt;/SPAN&gt; &lt;SPAN&gt;"fsl_device_registers.h"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#include&lt;/SPAN&gt; &lt;SPAN&gt;"fsl_debug_console.h"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#include&lt;/SPAN&gt; &lt;SPAN&gt;"board.h"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#include&lt;/SPAN&gt; &lt;SPAN&gt;"pin_mux.h"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#include&lt;/SPAN&gt; &lt;SPAN&gt;"clock_config.h"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#include&lt;/SPAN&gt; &lt;SPAN&gt;"semphr.h"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;SemaphoreHandle_t&lt;/SPAN&gt;&lt;SPAN&gt; xSemaphore = NULL;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;TaskHandle_t&lt;/SPAN&gt;&lt;SPAN&gt; myTaskHandle = NULL;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#define&lt;/SPAN&gt;&lt;SPAN&gt; PIT_IRQ_ID PIT_IRQn&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* Get source clock for PIT driver */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#define&lt;/SPAN&gt;&lt;SPAN&gt; PIT_SOURCE_CLOCK CLOCK_GetFreq(kCLOCK_OscClk)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;volatile&lt;/SPAN&gt;&lt;SPAN&gt; bool pitIsrFlag = false;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;void&lt;/SPAN&gt; &lt;SPAN&gt;PIT_IRQHandler&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;// Clear the interrupt flag&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PIT_ClearStatusFlags(PIT, &lt;/SPAN&gt;&lt;SPAN&gt;kPIT_Chnl_0&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;kPIT_TimerFlag&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;pitIsrFlag = true;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;// Notify the RTOS that an interrupt occurred&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;BaseType_t&lt;/SPAN&gt;&lt;SPAN&gt; xHigherPriorityTaskWoken = pdFALSE;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PRINTF(&lt;/SPAN&gt;&lt;SPAN&gt;"In IRQ_HANDLER\r\n"&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;xSemaphoreGiveFromISR( xSemaphore, &amp;amp;xHigherPriorityTaskWoken );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;//vTaskNotifyGiveFromISR(myTaskHandle, &amp;amp;xHigherPriorityTaskWoken);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;portYIELD_FROM_ISR(xHigherPriorityTaskWoken);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;void&lt;/SPAN&gt; &lt;SPAN&gt;PIT_Task&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt; *pvParameters)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PRINTF(&lt;/SPAN&gt;&lt;SPAN&gt;" IN PIT TAsk\r\n"&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;while&lt;/SPAN&gt;&lt;SPAN&gt; (1)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;// Wait for the PIT interrupt notification&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt;( xSemaphoreTake( xSemaphore, portMAX_DELAY ) == pdTRUE )&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;// ulTaskNotifyTake(pdTRUE, portMAX_DELAY);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;// Handle the PIT interrupt&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;printf(&lt;/SPAN&gt;&lt;SPAN&gt;"PIT interrupt occurred\n"&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;int&lt;/SPAN&gt; &lt;SPAN&gt;main&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* Structure of initialize PIT */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;pit_config_t&lt;/SPAN&gt;&lt;SPAN&gt; pitConfig;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* Board pin, clock, debug console &lt;/SPAN&gt;&lt;SPAN&gt;init&lt;/SPAN&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;BOARD_ConfigMPU();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;BOARD_InitPins();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;BOARD_BootClockRUN();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;BOARD_InitDebugConsole();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;xSemaphore = xSemaphoreCreateBinary();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt;(xSemaphore != NULL)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PRINTF(&lt;/SPAN&gt;&lt;SPAN&gt;"semaphore created\r\n"&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* Enable clock gate for GPIO1 */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;CLOCK_EnableClock(&lt;/SPAN&gt;&lt;SPAN&gt;kCLOCK_Gpio1&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* Set PERCLK_CLK source to OSC_CLK*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;CLOCK_SetMux(&lt;/SPAN&gt;&lt;SPAN&gt;kCLOCK_PerclkMux&lt;/SPAN&gt;&lt;SPAN&gt;, 1U);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* Set PERCLK_CLK divider to 1 */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;CLOCK_SetDiv(&lt;/SPAN&gt;&lt;SPAN&gt;kCLOCK_PerclkDiv&lt;/SPAN&gt;&lt;SPAN&gt;, 0U);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;* pitConfig.enableRunInDebug = false;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PIT_GetDefaultConfig(&amp;amp;pitConfig);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* &lt;/SPAN&gt;&lt;SPAN&gt;Init&lt;/SPAN&gt;&lt;SPAN&gt; pit module */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PIT_Init(PIT, &amp;amp;pitConfig);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* Set timer period for channel 0 */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;// PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, USEC_TO_COUNT(1000000, PIT_SOURCE_CLOCK));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PIT_SetTimerPeriod(PIT, &lt;/SPAN&gt;&lt;SPAN&gt;kPIT_Chnl_0&lt;/SPAN&gt;&lt;SPAN&gt;, USEC_TO_COUNT(10000U, PIT_SOURCE_CLOCK));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* Enable timer interrupts for channel 0 */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PIT_EnableInterrupts(PIT, &lt;/SPAN&gt;&lt;SPAN&gt;kPIT_Chnl_0&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;kPIT_TimerInterruptEnable&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* Enable at the NVIC */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;EnableIRQ(PIT_IRQ_ID);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* Start channel 0 */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PRINTF(&lt;/SPAN&gt;&lt;SPAN&gt;"\r\nStarting channel No.0 ...\r\n"&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PIT_StartTimer(PIT, &lt;/SPAN&gt;&lt;SPAN&gt;kPIT_Chnl_0&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;xTaskCreate(PIT_Task, &lt;/SPAN&gt;&lt;SPAN&gt;"PIT_Task"&lt;/SPAN&gt;&lt;SPAN&gt;, configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, &amp;amp;myTaskHandle);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;vTaskStartScheduler();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;for&lt;/SPAN&gt;&lt;SPAN&gt;(;;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Sat, 16 Dec 2023 10:03:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K22F-PIT-TOGGLE-Output-Frequency/m-p/1775846#M65801</guid>
      <dc:creator>shaq</dc:creator>
      <dc:date>2023-12-16T10:03:06Z</dc:date>
    </item>
  </channel>
</rss>

