<?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: Need help setting up PWM on FTM2_CH0 for output to PortB, bit 18.</title>
    <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Need-help-setting-up-PWM-on-FTM2-CH0-for-output-to-PortB-bit-18/m-p/401700#M1502</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I changed the line from:&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetClockSource(FTM2, kClock_source_FTM_None);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;to:&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetClockSource(FTM2, kClock_source_FTM_SystemClk);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;and now at least the output goes high when I execute the code. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Some progress, but still no PWM.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 10 Jul 2015 20:05:28 GMT</pubDate>
    <dc:creator>davepfaltzgraff</dc:creator>
    <dc:date>2015-07-10T20:05:28Z</dc:date>
    <item>
      <title>Need help setting up PWM on FTM2_CH0 for output to PortB, bit 18.</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Need-help-setting-up-PWM-on-FTM2-CH0-for-output-to-PortB-bit-18/m-p/401699#M1501</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am trying to set up a FRDM-K22F board so that Port b, bit 18 is a PWM signal out. (This is connected to the header J1, pin 12.)&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My code is as follows:&lt;/P&gt;&lt;P&gt;=====&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;ftm_pwm_param_t PWM_Param = {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kFtmEdgeAlignedPWM,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kFtmHighTrue,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20000,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Frequency&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 50,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Duty cycle (0 - 100!!)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;};&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;....&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;// Set up the PWM hardware for FTM2_CH0 on Port B, bit 18&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORT_HAL_SetMuxMode(PORTB, 18u, kPortMuxAlt3);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO_HAL_SetPinDir(PTB, 18u, kGpioDigitalOutput);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORT_HAL_SetDriveStrengthMode(PORTB, 18u, kPortLowDriveStrength);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORT_HAL_SetSlewRateMode(PORTB, 18u, kPortSlowSlewRate);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_HAL_EnableClock(SIM, kSimClockGateFtm2);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_Init(FTM2);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetClockSource(FTM2, kClock_source_FTM_None);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetClockPs(FTM2, kFtmDividedBy2);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetMod(FTM2, 0xFFFE);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_EnablePwmMode(FTM2, &amp;amp;PWM_Param, CHAN0_IDX);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetBdmMode(FTM2, kFtmBdmMode_11);&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;=====&lt;/P&gt;&lt;P&gt;What am I missing that prevents the PWM signal from appearing on the pin?&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I Know that Port B, pin 18 is the right one as I was able to replace the kPortMuxAlt3 in the first line with a kPortMusAsGpio and before the SIM_HAL line insert an infinite loop toggling the bit and it shows up on the scope.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To answer the anticipated question of why I wouldn't use the FTM_DRV series of routines: These routines limit the output resolution to a range of 0 to 100. For my application I need much higher resolution and plan to use the full 16-bit capability.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for any pointers.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Jul 2015 18:45:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Need-help-setting-up-PWM-on-FTM2-CH0-for-output-to-PortB-bit-18/m-p/401699#M1501</guid>
      <dc:creator>davepfaltzgraff</dc:creator>
      <dc:date>2015-07-10T18:45:13Z</dc:date>
    </item>
    <item>
      <title>Re: Need help setting up PWM on FTM2_CH0 for output to PortB, bit 18.</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Need-help-setting-up-PWM-on-FTM2-CH0-for-output-to-PortB-bit-18/m-p/401700#M1502</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I changed the line from:&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetClockSource(FTM2, kClock_source_FTM_None);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;to:&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetClockSource(FTM2, kClock_source_FTM_SystemClk);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;and now at least the output goes high when I execute the code. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Some progress, but still no PWM.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Jul 2015 20:05:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Need-help-setting-up-PWM-on-FTM2-CH0-for-output-to-PortB-bit-18/m-p/401700#M1502</guid>
      <dc:creator>davepfaltzgraff</dc:creator>
      <dc:date>2015-07-10T20:05:28Z</dc:date>
    </item>
    <item>
      <title>Re: Need help setting up PWM on FTM2_CH0 for output to PortB, bit 18.</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Need-help-setting-up-PWM-on-FTM2-CH0-for-output-to-PortB-bit-18/m-p/401701#M1503</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello David:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By checking your code the first thing I notice is that you are not setting the Channel count value using &lt;STRONG&gt;FTM_HAL_SetChnCountVal&lt;/STRONG&gt;&lt;STRONG&gt;()&lt;/STRONG&gt;. The channel value should be set for the output to be cleared on match in this case.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, please notice that if not using the FTM driver, then the frequency and duty cycle you define in your &lt;STRONG&gt;PWM_Param&lt;/STRONG&gt; structure will not be used directly, so you need to use the HAL to adjust the prescaler, modulo and channel value to obtain the required frequency and duty.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you require a higher resolution than 0-100 maybe you can instead adapt the driver and rebuild the KSDK platform library. It is just the function &lt;STRONG&gt;FTM_DRV_PwmStart()&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards!&lt;/P&gt;&lt;P&gt;Jorge Gonzalez&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Jul 2015 19:14:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Need-help-setting-up-PWM-on-FTM2-CH0-for-output-to-PortB-bit-18/m-p/401701#M1503</guid>
      <dc:creator>Jorge_Gonzalez</dc:creator>
      <dc:date>2015-07-13T19:14:27Z</dc:date>
    </item>
    <item>
      <title>Re: Need help setting up PWM on FTM2_CH0 for output to PortB, bit 18.</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Need-help-setting-up-PWM-on-FTM2-CH0-for-output-to-PortB-bit-18/m-p/401702#M1504</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello David,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Try with the next code. You can compare and see how it is almost the same as the driver, with the difference of calculating modulo and channel value with a duty cycle resolution of 0-1000, setting the duty to 475/1000.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_14368170448562311 jive_macro_code jive_text_macro" data-renderedposition="113_8_1050_704" jivemacro_uid="_14368170448562311" modifiedtitle="true"&gt;&lt;P&gt;int main(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t uFTMhz;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint16_t uMod, uCnv;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t clkPs;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ftm_pwm_param_t PWM_Param =&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 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; kFtmHighTrue,&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; 20000,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Frequency&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; 475,&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; // Duty cycle (0 - 1000!!)&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; 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLOCK_SYS_EnablePortClock(PORTB_IDX);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORT_HAL_SetMuxMode(PORTB,18u,kPortMuxAlt3);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_HAL_EnableClock(SIM, kSimClockGateFtm2);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_Init(FTM2);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetClockPs(FTM2, kFtmDividedBy1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_EnablePwmMode(FTM2, &amp;amp;PWM_Param, CHAN0_IDX);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; clkPs = (1 &amp;lt;&amp;lt; FTM_HAL_GetClockPs(FTM2));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uFTMhz = CLOCK_SYS_GetFtmSystemClockFreq(FTM2_IDX) / clkPs;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetCounterInitVal(FTM2, 0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uMod = uFTMhz / (PWM_Param.uFrequencyHZ) - 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uCnv = uMod * PWM_Param.uDutyCyclePercent / 1000;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetMod(FTM2, uMod);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetChnCountVal(FTM2, CHAN0_IDX, uCnv);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetClockSource(FTM2, kClock_source_FTM_SystemClk);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (;;){ }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Never leave main */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards!&lt;/P&gt;&lt;P&gt;Jorge Gonzalez&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Jul 2015 19:51:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Need-help-setting-up-PWM-on-FTM2-CH0-for-output-to-PortB-bit-18/m-p/401702#M1504</guid>
      <dc:creator>Jorge_Gonzalez</dc:creator>
      <dc:date>2015-07-13T19:51:19Z</dc:date>
    </item>
    <item>
      <title>Re: Need help setting up PWM on FTM2_CH0 for output to PortB, bit 18.</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Need-help-setting-up-PWM-on-FTM2-CH0-for-output-to-PortB-bit-18/m-p/401703#M1505</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jorge,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the code example. I was missing both setting the initial value as well as the count value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, it seems as though there may be something that is order dependent as well. It didn't work for me until I put my code in the same order.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now at least I have a PWM output and I can tweak the parameters from there.&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, 13 Jul 2015 20:36:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Need-help-setting-up-PWM-on-FTM2-CH0-for-output-to-PortB-bit-18/m-p/401703#M1505</guid>
      <dc:creator>davepfaltzgraff</dc:creator>
      <dc:date>2015-07-13T20:36:07Z</dc:date>
    </item>
  </channel>
</rss>

