<?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>Kinetis Software Development KitのトピックRe: FTM Frequency not being set appropriately</title>
    <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/FTM-Frequency-not-being-set-appropriately/m-p/393248#M1197</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I actually figured out the problem.&amp;nbsp; There is a bug in your driver.&amp;nbsp; In &lt;EM&gt;ftm_status_t FTM_DRV_PwmStart(uint32_t instance, ftm_pwm_param_t *param, uint8_t channel) &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;uint32_t uFTMhz;&lt;/P&gt;&lt;P&gt;uint16_t uMod, uCnv, uCnvFirstEdge = 0;&lt;/P&gt;&lt;P&gt;uFTMhz = FTM_DRV_GetClock(instance);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch(param-&amp;gt;mode)&lt;/P&gt;&lt;P&gt;&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; case kFtmEdgeAlignedPWM:&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; uMod = uFTMhz / (param-&amp;gt;uFrequencyHZ) - 1;&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; uCnv = uMod * param-&amp;gt;uDutyCyclePercent / 100;&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; /* For 100% duty cycle */&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; if(uCnv &amp;gt;= uMod)&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; {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uCnv = uMod + 1;&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; }&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; FTM_HAL_SetMod(ftmBase, uMod);&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; FTM_HAL_SetChnCountVal(ftmBase, channel, uCnv);&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; break;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the block of code above (my part is the KV31, 512 KB Flash, 100 pin package).&amp;nbsp; I run at 120 MHz, my bus clock ends up being 60 MHz.&amp;nbsp; uMod is stored as a unsigned 16 bit variable.&amp;nbsp; Using simple math virtually any value under 900 Hz will overflow.&amp;nbsp; (60,000,000/ 900) - 1 = 66665.&amp;nbsp; As the Bus speed increases we will lose more and more frequency values on the lower end with this bug. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 14 Oct 2015 13:48:59 GMT</pubDate>
    <dc:creator>stevenneves</dc:creator>
    <dc:date>2015-10-14T13:48:59Z</dc:date>
    <item>
      <title>FTM Frequency not being set appropriately</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/FTM-Frequency-not-being-set-appropriately/m-p/393246#M1195</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;ftm_pwm_param_t flexTimer1_ChnConfig0 = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .mode = kFtmEdgeAlignedPWM,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .edgeMode = kFtmLowTrue,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .uFrequencyHZ = 100U,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .uDutyCyclePercent = 50U,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .uFirstEdgeDelayPercent = 0U,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Above is my initial FTM structure (KSDK 1.2 w/MQX).&amp;nbsp; I'm driving a series of stepper motors and BLDC motors that require a fixed duty cycle but a variable frequency (0-1000 Hz).&amp;nbsp; In the above I'm looking to come up driving my motor at 10% speed (the duty cycle is always fixed at 50% as long as I want it on).&amp;nbsp; When I measure the FTM generated signal however the 100 Hz I think I'm sending is actually 1250 Hz.&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Oct 2015 17:15:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/FTM-Frequency-not-being-set-appropriately/m-p/393246#M1195</guid>
      <dc:creator>stevenneves</dc:creator>
      <dc:date>2015-10-13T17:15:46Z</dc:date>
    </item>
    <item>
      <title>Re: FTM Frequency not being set appropriately</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/FTM-Frequency-not-being-set-appropriately/m-p/393247#M1196</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Steven,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you let us know the Kinetis product part number you are using?&lt;/P&gt;&lt;P&gt;I could do a same test on Kinetis related tower board.&lt;/P&gt;&lt;P&gt;Thank you for the attention.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Ma Hui&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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>Wed, 14 Oct 2015 07:07:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/FTM-Frequency-not-being-set-appropriately/m-p/393247#M1196</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2015-10-14T07:07:51Z</dc:date>
    </item>
    <item>
      <title>Re: FTM Frequency not being set appropriately</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/FTM-Frequency-not-being-set-appropriately/m-p/393248#M1197</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I actually figured out the problem.&amp;nbsp; There is a bug in your driver.&amp;nbsp; In &lt;EM&gt;ftm_status_t FTM_DRV_PwmStart(uint32_t instance, ftm_pwm_param_t *param, uint8_t channel) &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;uint32_t uFTMhz;&lt;/P&gt;&lt;P&gt;uint16_t uMod, uCnv, uCnvFirstEdge = 0;&lt;/P&gt;&lt;P&gt;uFTMhz = FTM_DRV_GetClock(instance);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch(param-&amp;gt;mode)&lt;/P&gt;&lt;P&gt;&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; case kFtmEdgeAlignedPWM:&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; uMod = uFTMhz / (param-&amp;gt;uFrequencyHZ) - 1;&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; uCnv = uMod * param-&amp;gt;uDutyCyclePercent / 100;&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; /* For 100% duty cycle */&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; if(uCnv &amp;gt;= uMod)&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; {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uCnv = uMod + 1;&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; }&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; FTM_HAL_SetMod(ftmBase, uMod);&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; FTM_HAL_SetChnCountVal(ftmBase, channel, uCnv);&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; break;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the block of code above (my part is the KV31, 512 KB Flash, 100 pin package).&amp;nbsp; I run at 120 MHz, my bus clock ends up being 60 MHz.&amp;nbsp; uMod is stored as a unsigned 16 bit variable.&amp;nbsp; Using simple math virtually any value under 900 Hz will overflow.&amp;nbsp; (60,000,000/ 900) - 1 = 66665.&amp;nbsp; As the Bus speed increases we will lose more and more frequency values on the lower end with this bug. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 Oct 2015 13:48:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/FTM-Frequency-not-being-set-appropriately/m-p/393248#M1197</guid>
      <dc:creator>stevenneves</dc:creator>
      <dc:date>2015-10-14T13:48:59Z</dc:date>
    </item>
    <item>
      <title>Re: FTM Frequency not being set appropriately</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/FTM-Frequency-not-being-set-appropriately/m-p/393249#M1198</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Steven,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For the FTM module counter is 16bit, the Max. counter value is 65535(65536), while you could change the FTM pre-scaler factor of the clock source with FTM_DRV_SetClock() function.&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;P&gt;FTM_DRV_SetClock(BOARD_FTM3_IDX, kClock_source_FTM_SystemClk, kFtmDividedBy1);&lt;/P&gt;&lt;P&gt;The FTM clock pre-scaler factor is 1, you could change the pre-scaler factor to 2 or 4:&lt;/P&gt;&lt;P&gt;FTM_DRV_SetClock(BOARD_FTM3_IDX, kClock_source_FTM_SystemClk, kFtmDividedBy2);&lt;/P&gt;&lt;P&gt;There doesn't need to change the bus clock, it need to modify the FTM pre-scaler factor value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wish it helps.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Ma Hui&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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>Thu, 15 Oct 2015 01:16:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/FTM-Frequency-not-being-set-appropriately/m-p/393249#M1198</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2015-10-15T01:16:51Z</dc:date>
    </item>
  </channel>
</rss>

