<?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 K60 FlexTimer (PWM) Example Code? in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60-FlexTimer-PWM-Example-Code/m-p/168028#M1045</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I just downloaded example projects for the K60N512 TWR evaluation board, but there doesn't appear to be an example project for the FlexTimer module.&amp;nbsp; Does example code exist anywhere for download (preferably for CW)?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 19 Sep 2011 21:23:12 GMT</pubDate>
    <dc:creator>nba916</dc:creator>
    <dc:date>2011-09-19T21:23:12Z</dc:date>
    <item>
      <title>K60 FlexTimer (PWM) Example Code?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60-FlexTimer-PWM-Example-Code/m-p/168028#M1045</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I just downloaded example projects for the K60N512 TWR evaluation board, but there doesn't appear to be an example project for the FlexTimer module.&amp;nbsp; Does example code exist anywhere for download (preferably for CW)?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 19 Sep 2011 21:23:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60-FlexTimer-PWM-Example-Code/m-p/168028#M1045</guid>
      <dc:creator>nba916</dc:creator>
      <dc:date>2011-09-19T21:23:12Z</dc:date>
    </item>
    <item>
      <title>Re: K60 FlexTimer (PWM) Example Code?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60-FlexTimer-PWM-Example-Code/m-p/168029#M1046</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-1026"&gt;https://community.freescale.com/docs/DOC-1026&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: JMc&#xD;
Updated link location.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Sep 2011 16:41:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60-FlexTimer-PWM-Example-Code/m-p/168029#M1046</guid>
      <dc:creator>JJChiang</dc:creator>
      <dc:date>2011-09-20T16:41:02Z</dc:date>
    </item>
    <item>
      <title>Re: K60 FlexTimer (PWM) Example Code?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60-FlexTimer-PWM-Example-Code/m-p/168030#M1047</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;After some struggle the following seems to work:&lt;/P&gt;&lt;P&gt;/*&lt;BR /&gt;&amp;nbsp;* pwm.c&lt;BR /&gt;&amp;nbsp;*&lt;BR /&gt;&amp;nbsp;*&amp;nbsp; Created on: 11 Nov 2011&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Author: Charles&lt;BR /&gt;&amp;nbsp;*/&lt;BR /&gt;#include "derivative.h" /* include peripheral declarations */&lt;BR /&gt;#include "drivers.h"&lt;BR /&gt;#include "pwm.h"&lt;BR /&gt;#include "Clock.h"&lt;BR /&gt;&lt;BR /&gt;#define FTM0_CLK_PRESCALE 1&lt;BR /&gt;#define FTM0_OVERFLOW_FREQUENCY (32000)&lt;BR /&gt;&lt;BR /&gt;void InitPWM(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;//Enable the Clock to the FTM0 Module&lt;BR /&gt;SIM_SCGC6 |= SIM_SCGC6_FTM0_MASK; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;//Pin control Register (MUX allowing user to route the desired signal to the pin. &amp;nbsp;&lt;BR /&gt;PORTC_PCR1&amp;nbsp;&amp;nbsp; = PORT_PCR_MUX(0x4); &amp;nbsp;&lt;BR /&gt;PORTC_PCR2&amp;nbsp;&amp;nbsp; = PORT_PCR_MUX(0x4); &amp;nbsp;&lt;BR /&gt;PORTC_PCR3&amp;nbsp;&amp;nbsp; = PORT_PCR_MUX(0x4); &amp;nbsp;&lt;BR /&gt;PORTC_PCR4&amp;nbsp;&amp;nbsp; = PORT_PCR_MUX(0x4); &amp;nbsp;&lt;BR /&gt;PORTD_PCR4&amp;nbsp;&amp;nbsp; = PORT_PCR_MUX(0x4); &amp;nbsp;&lt;BR /&gt;PORTD_PCR5&amp;nbsp;&amp;nbsp; = PORT_PCR_MUX(0x4);&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;//FTM0_MODE[WPDIS] = 1; //Disable Write Protection - enables changes to QUADEN, DECAPEN, etc. &amp;nbsp;&lt;BR /&gt;FTM0_MODE |= FTM_MODE_WPDIS_MASK;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;//FTMEN is bit 0, need to set to zero so DECAPEN can be set to 0&lt;BR /&gt;FTM0_MODE |= FTM_MODE_FTMEN_MASK;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;//Set Edge Aligned PWM&lt;BR /&gt;FTM0_QDCTRL &amp;amp;=~FTM_QDCTRL_QUADEN_MASK; &amp;nbsp;&lt;BR /&gt;//QUADEN is Bit 1, Set Quadrature Decoder Mode (QUADEN) Enable to 0,&amp;nbsp;&amp;nbsp; (disabled)&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;// Also need to setup the FTM0C0SC channel control register&lt;BR /&gt;FTM0_CNT = 0x0; //FTM Counter Value - reset counter to zero&lt;BR /&gt;FTM0_MOD = (PERIPHERAL_BUS_CLOCK/(1&amp;lt;&amp;lt;FTM0_CLK_PRESCALE))/FTM0_OVERFLOW_FREQUENCY ;&amp;nbsp; //Set the overflow rate&lt;BR /&gt;FTM0_CNTIN = 0; //Set the Counter Initial Value to 0&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;// FTMx_CnSC - contains the channel-interrupt status flag control bits&lt;BR /&gt;FTM0_C0SC |= FTM_CnSC_ELSB_MASK; //Edge or level select&lt;BR /&gt;FTM0_C0SC &amp;amp;= ~FTM_CnSC_ELSA_MASK; //Edge or level Select&lt;BR /&gt;FTM0_C0SC |= FTM_CnSC_MSB_MASK; //Channel Mode select&lt;BR /&gt;&lt;BR /&gt;// FTMx_CnSC - contains the channel-interrupt status flag control bits&lt;BR /&gt;FTM0_C1SC |= FTM_CnSC_ELSB_MASK; //Edge or level select&lt;BR /&gt;FTM0_C1SC &amp;amp;= ~FTM_CnSC_ELSA_MASK; //Edge or level Select&lt;BR /&gt;FTM0_C1SC |= FTM_CnSC_MSB_MASK; //Channel Mode select&lt;BR /&gt;&lt;BR /&gt;// FTMx_CnSC - contains the channel-interrupt status flag control bits&lt;BR /&gt;FTM0_C2SC |= FTM_CnSC_ELSB_MASK; //Edge or level select&lt;BR /&gt;FTM0_C2SC &amp;amp;= ~FTM_CnSC_ELSA_MASK; //Edge or level Select&lt;BR /&gt;FTM0_C2SC |= FTM_CnSC_MSB_MASK; //Channel Mode select&lt;BR /&gt;&lt;BR /&gt;// FTMx_CnSC - contains the channel-interrupt status flag control bits&lt;BR /&gt;FTM0_C3SC |= FTM_CnSC_ELSB_MASK; //Edge or level select&lt;BR /&gt;FTM0_C3SC &amp;amp;= ~FTM_CnSC_ELSA_MASK; //Edge or level Select&lt;BR /&gt;FTM0_C3SC |= FTM_CnSC_MSB_MASK; //Channel Mode select&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;// FTMx_CnSC - contains the channel-interrupt status flag control bits&lt;BR /&gt;FTM0_C4SC |= FTM_CnSC_ELSB_MASK; //Edge or level select&lt;BR /&gt;FTM0_C4SC &amp;amp;= ~FTM_CnSC_ELSA_MASK; //Edge or level Select&lt;BR /&gt;FTM0_C4SC |= FTM_CnSC_MSB_MASK; //Channel Mode select&lt;BR /&gt;&lt;BR /&gt;// FTMx_CnSC - contains the channel-interrupt status flag control bits&lt;BR /&gt;FTM0_C5SC |= FTM_CnSC_ELSB_MASK; //Edge or level select&lt;BR /&gt;FTM0_C5SC &amp;amp;= ~FTM_CnSC_ELSA_MASK; //Edge or level Select&lt;BR /&gt;FTM0_C5SC |= FTM_CnSC_MSB_MASK; //Channel Mode select&lt;BR /&gt;&lt;BR /&gt;//Edit registers when no clock is fed to timer so the MOD value, gets pushed in immediately&lt;BR /&gt;FTM0_SC = 0; //Make sure its Off!&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;//FTMx_CnV contains the captured FTM counter value, this value determines the pulse width&lt;BR /&gt;FTM0_C0V = FTM0_MOD/2;&lt;BR /&gt;FTM0_C1V = FTM0_MOD/2;&lt;BR /&gt;FTM0_C2V = FTM0_MOD/2;&lt;BR /&gt;FTM0_C3V = FTM0_MOD/2;&lt;BR /&gt;FTM0_C4V = FTM0_MOD/2;&lt;BR /&gt;FTM0_C5V = FTM0_MOD/2;&lt;BR /&gt;FTM0_COMBINE = FTM_COMBINE_COMBINE1_MASK;&lt;BR /&gt;FTM0_COMBINE = FTM_COMBINE_COMBINE0_MASK|FTM_COMBINE_COMP0_MASK|/*FTM_COMBINE_DECAPEN0_MASK|FTM_COMBINE_DECAP0_MASK|*/&lt;BR /&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; FTM_COMBINE_DTEN0_MASK|FTM_COMBINE_SYNCEN0_MASK|&lt;BR /&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; FTM_COMBINE_COMBINE1_MASK|FTM_COMBINE_COMP1_MASK|/*FTM_COMBINE_DECAPEN0_MASK|FTM_COMBINE_DECAP0_MASK|*/&lt;BR /&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; FTM_COMBINE_DTEN1_MASK|FTM_COMBINE_SYNCEN1_MASK|&lt;BR /&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; FTM_COMBINE_COMBINE2_MASK|FTM_COMBINE_COMP2_MASK|/*FTM_COMBINE_DECAPEN0_MASK|FTM_COMBINE_DECAP0_MASK|*/&lt;BR /&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; FTM_COMBINE_DTEN2_MASK|FTM_COMBINE_SYNCEN2_MASK;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;FTM0_DEADTIME = FTM_DEADTIME_DTVAL(50); //About 5usec&lt;BR /&gt;/* SWOCTRL Bit Fields */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; //FTM0_SWOCTRL|= FTM_SWOCTRL_CH0OC_MASK|FTM_SWOCTRL_CH1OC_MASK|FTM_SWOCTRL_CH2OC_MASK|FTM_SWOCTRL_CH3OC_MASK|FTM_SWOCTRL_CH4OC_MASK|FTM_SWOCTRL_CH5OC_MASK;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;//Status and Control bits&lt;BR /&gt;FTM0_SC =&amp;nbsp; FTM_SC_CLKS(1); // Selects Clock source to be "system clock" or (01)&lt;BR /&gt;//sets pre-scale value see details below&lt;BR /&gt;FTM0_SC |= FTM_SC_PS(FTM0_CLK_PRESCALE);&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;/******begin FTM_SC_PS details ****************************&lt;BR /&gt;* Sets the Prescale value for the Flex Timer Module which divides the&lt;BR /&gt;* Peripheral bus clock -&amp;gt; 48Mhz by the set amount&lt;BR /&gt;* Peripheral bus clock set up in clock.h&lt;BR /&gt;* &amp;nbsp;&lt;BR /&gt;* The value of the prescaler is selected by the PS[2:0] bits. &amp;nbsp;&lt;BR /&gt;* (FTMx_SC field bits 0-2 are Prescale bits -&amp;nbsp; set above in FTM_SC Setting)&lt;BR /&gt;* &amp;nbsp;&lt;BR /&gt;*&amp;nbsp; 000 - 0 - No divide&lt;BR /&gt;*&amp;nbsp; 001 - 1 - Divide by 2&lt;BR /&gt;*&amp;nbsp; 010 - 2 - Divide by 4&lt;BR /&gt;*&amp;nbsp; 011 - 3 - Divide by 8&lt;BR /&gt;*&amp;nbsp; 100 - 4 - Divide by 16&lt;BR /&gt;*&amp;nbsp; 101 - 5 - Divide by 32&lt;BR /&gt;*&amp;nbsp; 110 - 6 - Divide by 64 -&lt;BR /&gt;*&amp;nbsp; 111 - 7 - Divide by 128&lt;BR /&gt;*&amp;nbsp; ******end FTM_SC_PS details*****************************/&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;// Interrupts&lt;BR /&gt;//FTM0_SC |= FTM_SC_TOIE_MASK; //Enable the interrupt mask.&amp;nbsp; timer overflow interrupt.. enables interrupt signal to come out of the module itself...&amp;nbsp; (have to enable 2x, one in the peripheral and once in the NVIC&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;void UpdatePWM(unsigned short pwm1,unsigned short pwm2,unsigned short pwm3)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;unsigned mod = FTM0_MOD/2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;FTM0_C0V = mod-pwm1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;FTM0_C1V = mod+pwm1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;FTM0_C2V = mod-pwm2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;FTM0_C3V = mod+pwm2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;FTM0_C4V = mod-pwm3;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;FTM0_C5V = mod+pwm3;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;FTM0_PWMLOAD |= FTM_PWMLOAD_LDOK_MASK;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Nov 2011 17:56:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60-FlexTimer-PWM-Example-Code/m-p/168030#M1047</guid>
      <dc:creator>Charlie2000</dc:creator>
      <dc:date>2011-11-17T17:56:35Z</dc:date>
    </item>
    <item>
      <title>Re: K60 FlexTimer (PWM) Example Code?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60-FlexTimer-PWM-Example-Code/m-p/168031#M1048</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the Code Charlie. &amp;nbsp;I was having a sorting through the registers based on needed functionality. &amp;nbsp;Your code was quite helpful. &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Note I did find 1 problem:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;//FTMEN is bit 0, need to set to zero so DECAPEN can be set to 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;FTM0_MODE |= FTM_MODE_FTMEN_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Should be:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;FTM0_MODE &amp;amp;= &amp;nbsp;~FTM_MODE_FTMEN_MASK;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I was having problems updating my duty cycle and found that this was why. &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Cheers.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Aug 2012 07:22:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60-FlexTimer-PWM-Example-Code/m-p/168031#M1048</guid>
      <dc:creator>mjg8t</dc:creator>
      <dc:date>2012-08-16T07:22:55Z</dc:date>
    </item>
  </channel>
</rss>

