<?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 Re: FTM PWM - no output in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FTM-PWM-no-output/m-p/398392#M22035</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, I think your code has something wrong, anyway, the FTM0_C3V register value should be less than the FTM0_MOD so that PWM can output a low-high interleaved signal, unfortunately, you set both FTM0_C3V and FTM0_MOD as 0xFFFF; that is why you get the constant logic on the FTM channel.&lt;/P&gt;&lt;P&gt;Pls update the code as:&lt;/P&gt;&lt;P&gt;FTM0_C3SC = 0x28; //MSB:MSA=10, ESB:ESA=10,high low&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM0_MOD = FTM_MOD_MOD(0xFFFF);&lt;/P&gt;&lt;P&gt;FTM0_C3V = 0x7FFF; // when the CNT reaches this value -&amp;gt; FTM does what CnSC tells (clear)&lt;/P&gt;&lt;P&gt;pls have a try.&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;XiangJun Rong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 05 May 2015 02:32:48 GMT</pubDate>
    <dc:creator>xiangjun_rong</dc:creator>
    <dc:date>2015-05-05T02:32:48Z</dc:date>
    <item>
      <title>FTM PWM - no output</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FTM-PWM-no-output/m-p/398390#M22033</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello everone,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'am using MK60N512VMD100 on custom board, with CW v10.6.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm having problems with FTM PWM output. At this stage I'm just trying to figure out what will work for me and how to set everything properly. With the code given below I'm not getting any output on expected pin. I've just hooked it up to LED with resistor just to see if it outputs ANYTHING - and it doesn't. At this moment I'm in school measuring the output and it seems to be the same for any combination of MOD, CnV and PS:&lt;/P&gt;&lt;TABLE border="1" class="jiveBorder" style="border: 1px solid rgb(0, 0, 0); width: 100%;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;" valign="middle"&gt;MOD&lt;/TH&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;" valign="middle"&gt;CnV&lt;/TH&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;" valign="middle"&gt;PS&lt;/TH&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;" valign="middle"&gt;period&lt;/TH&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;" valign="middle"&gt;pulse width&lt;/TH&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;FFFF&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;FFFF&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;0&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;20 ms&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;10 ms&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;FFFF&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;F&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;0&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;20 ms&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;10 ms&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;FFFF&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;F&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;7&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;20 ms&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;10 ms&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;And so on. My conclusion is that the PWM signal is not getting through. Can you see where the problem might be ? What have I forgot ? :smileygrin:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Tom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK; // enable clock for PTA&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;SIM_SCGC6 |= SIM_SCGC6_FTM0_MASK; // enable clock for FTM0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;//Edit registers when no clock is fed to timer so the MOD value, gets pushed in immediately&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;FTM0_SC = 0; // Make sure its Off!&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;PORTA_PCR6 |= PORT_PCR_MUX(3); // FTM0 CH3 minerva 25&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;GPIOA_PDDR |= (1 &amp;lt;&amp;lt; 6); // set as output&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;FTM0_MODE |= FTM_MODE_WPDIS_MASK; // disable write protection&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;FTM0_MODE |= FTM_MODE_FTMEN_MASK; // FTM0 enable&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;FTM0_CNT = 0; // counter initialization&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;FTM0_MOD = FTM_MOD_MOD(0xFFFF);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;FTM0_CNTIN = 0;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;FTM0_C3SC = 0x20; // edge aligned PWM MSB = 1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;FTM0_C3V = 0xFFFF; // when the CNT reaches this value -&amp;gt; FTM does what CnSC tells (clear)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;FTM0_CONF |= FTM_CONF_BDMMODE(3); // run in debug mode&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;FTM0_SC |= FTM_SC_CLKS(0x01); // Select the system clock =&amp;gt; turn on the FTM&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 May 2015 11:08:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FTM-PWM-no-output/m-p/398390#M22033</guid>
      <dc:creator>tomášpilný</dc:creator>
      <dc:date>2015-05-04T11:08:28Z</dc:date>
    </item>
    <item>
      <title>Re: FTM PWM - no output</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FTM-PWM-no-output/m-p/398391#M22034</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Tom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below is code showing how to set up a PWM signal on the output that you are interested in.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is API code:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_14307414205818528" jivemacro_uid="_14307414205818528"&gt;
&lt;P&gt;PWM_INTERRUPT_SETUP pwm_setup;&lt;/P&gt;
&lt;P&gt;pwm_setup.int_type = PWM_INTERRUPT;&lt;/P&gt;
&lt;P&gt;pwm_setup.pwm_mode = (PWM_SYS_CLK | PWM_PRESCALER_16); // clock PWM timer from the system clock with /16 pre-scaler&lt;/P&gt;
&lt;P&gt;pwm_setup.pwm_reference = (_TIMER_0 | 3); // timer module 0, channel 3&lt;/P&gt;
&lt;P&gt;pwm_setup.pwm_frequency = PWM_TIMER_US_DELAY(TIMER_FREQUENCY_VALUE(1000), 16);// generate 1000Hz on PWM output&lt;/P&gt;
&lt;P&gt;pwm_setup.pwm_value&amp;nbsp;&amp;nbsp; = _PWM_PERCENT(20, pwm_setup.pwm_frequency); // 20% PWM (high/low)&lt;/P&gt;
&lt;P&gt;fnConfigureInterrupt((void *)&amp;amp;pwm_setup); // enter configuration for PWM test&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and this is the low level code that performs the actual work (I have also noted the HEX values that are actually written to the FTM registers)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_14307414715599459" jivemacro_uid="_14307414715599459"&gt;
&lt;P&gt;POWER_UP(6, SIM_SCGC6_FTM0); // ensure that the FlexTimer module is powered up&lt;/P&gt;
&lt;P&gt;_CONFIG_PERIPHERAL(A, 6, (PA_6_FTM0_CH3 | PORT_SRE_FAST | PORT_DSE_HIGH)); // FTM0_CH3 on PA.6 (alt. function 3)&lt;/P&gt;
&lt;P&gt;ptrFlexTimer-&amp;gt;FTM_channel[ucChannel].FTM_CSC = FTM_CSC_MS_ELS_PWM_HIGH_TRUE_PULSES; // FTM0_C3SC = 0x28&lt;/P&gt;
&lt;P&gt;ptrFlexTimer-&amp;gt;FTM_CNTIN = 0;&lt;/P&gt;
&lt;P&gt;ptrFlexTimer-&amp;gt;FTM_MOD = (ptrPWM_settings-&amp;gt;pwm_frequency - 1); // set the PWM period - valid for all channels [0xc34]&lt;/P&gt;
&lt;P&gt;ptrFlexTimer-&amp;gt;FTM_channel[ucChannel].FTM_CV = ptrPWM_settings-&amp;gt;pwm_value; // set the duty cycle for the particular channel [0x271]&lt;/P&gt;
&lt;P&gt;ptrFlexTimer-&amp;gt;FTM_SC = (ptrPWM_settings-&amp;gt;pwm_mode &amp;amp; PWM_MODE_SETTINGS_MASK); // note that the mode is shared by all channels in the flex timer [0x0c]&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Finally here is screen shot of the FTM registers after the configuration so that you can compare with yours and seen if there is something missing or different:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="pastedImage_2.png"&gt;&lt;IMG alt="pastedImage_2.png" src="https://community.nxp.com/t5/image/serverpage/image-id/49100i1E833ECD56A93880/image-size/large?v=v2&amp;amp;px=999" title="pastedImage_2.png" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kinetis: &lt;A href="http://www.utasker.com/kinetis.html" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank" title="http://www.utasker.com/kinetis.html"&gt;µTasker Kinetis support&lt;/A&gt;&lt;/P&gt;&lt;P&gt;K60: &lt;A href="http://www.utasker.com/kinetis/TWR-K60N512.html" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank" title="http://www.utasker.com/kinetis/TWR-K60N512.html"&gt;µTasker Kinetis TWR-K60N512 support&lt;/A&gt; / &lt;A href="http://www.utasker.com/kinetis/TWR-K60D100M.html" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank" title="http://www.utasker.com/kinetis/TWR-K60D100M.html"&gt;µTasker Kinetis TWR-K60D100M support&lt;/A&gt; / &lt;A href="http://www.utasker.com/kinetis/TWR-K60F120M.html" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank" title="http://www.utasker.com/kinetis/TWR-K60F120M.html"&gt;µTasker Kinetis TWR-K60F120M support&lt;/A&gt;&lt;/P&gt;&lt;P&gt;PWM: &lt;A href="http://www.utasker.com/docs/uTasker/uTaskerHWTimers.PDF" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank" title="http://www.utasker.com/docs/uTasker/uTaskerHWTimers.PDF"&gt;http://www.utasker.com/docs/uTasker/uTaskerHWTimers.PDF&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;For the complete "out-of-the-box" Kinetis experience and faster time to market&lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Nov 2020 13:16:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FTM-PWM-no-output/m-p/398391#M22034</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2020-11-02T13:16:48Z</dc:date>
    </item>
    <item>
      <title>Re: FTM PWM - no output</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FTM-PWM-no-output/m-p/398392#M22035</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, I think your code has something wrong, anyway, the FTM0_C3V register value should be less than the FTM0_MOD so that PWM can output a low-high interleaved signal, unfortunately, you set both FTM0_C3V and FTM0_MOD as 0xFFFF; that is why you get the constant logic on the FTM channel.&lt;/P&gt;&lt;P&gt;Pls update the code as:&lt;/P&gt;&lt;P&gt;FTM0_C3SC = 0x28; //MSB:MSA=10, ESB:ESA=10,high low&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM0_MOD = FTM_MOD_MOD(0xFFFF);&lt;/P&gt;&lt;P&gt;FTM0_C3V = 0x7FFF; // when the CNT reaches this value -&amp;gt; FTM does what CnSC tells (clear)&lt;/P&gt;&lt;P&gt;pls have a try.&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;XiangJun Rong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 05 May 2015 02:32:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FTM-PWM-no-output/m-p/398392#M22035</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2015-05-05T02:32:48Z</dc:date>
    </item>
  </channel>
</rss>

