<?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 MicrocontrollersのトピックRe: TPM FRDMK25</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TPM-FRDMK25/m-p/354132#M17618</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Claudio&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The TMPs have one period that is valid for all of its channels.&lt;/P&gt;&lt;P&gt;You can therefore have one 1kHz clock on one channel (50% PWM) and 3 other different PWM values (eg. 5%, 25% and 78%) on other channels (still at 1kHz base rate).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you need different PWM outputs with different base frequences you need to use chanels on different TMPs for them so that each can have a different base period.&lt;/P&gt;&lt;P&gt;It is not possible to have different base periods on different channels of a single TPM.&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;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 16 Dec 2014 18:02:27 GMT</pubDate>
    <dc:creator>mjbcswitzerland</dc:creator>
    <dc:date>2014-12-16T18:02:27Z</dc:date>
    <item>
      <title>TPM FRDMK25</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TPM-FRDMK25/m-p/354131#M17617</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Good morning to everyone.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm new to kinetis microcontroller&amp;nbsp; and I don't understand about TPM module.&lt;/P&gt;&lt;P&gt;I have just programmed my frdm k25 to use the TPM module. In particular I'd like to obtain&lt;/P&gt;&lt;P&gt;a very simple square wawe on the TPM0 ch0 (1 khz).&lt;/P&gt;&lt;P&gt;Till here I didn't find any problems.&lt;/P&gt;&lt;P&gt;This my code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;// Calls to init module&lt;/STRONG&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;// FTM0 - channel 0 -&amp;gt; 1 Khz square wave&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;TPM_TmInit(TPM_TIM0, MCGFLL_PLL, TPM_PRSC_001, 12000);&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; PORTD_PCR0 = PORT_PCR_MUX(4);&lt;/P&gt;&lt;P&gt;TPM_ChInit(TPM_TIM0, TPM_CH0, OC_TOG_ON_MATCH, 0, CHIE_DISABLE);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;// FTM0 - channel 2&amp;nbsp; -&amp;gt; pwm&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTD_PCR2 = PORT_PCR_MUX(4);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_ChInit(TPM_TIM0, TPM_CH2, PWM_CENTER_HI, 2400, INT_TPM0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;On the second channel I'd like to have a pwm signal. And it works but I want a 20ms period.&lt;/P&gt;&lt;P&gt;If I want this ( I tried) I have to change the module and the prescale values if I want to obtain this.&lt;/P&gt;&lt;P&gt;But I don't have more the square wave. &lt;/P&gt;&lt;P&gt;So, how it's possible to have a square wawe of 1Kz and a pwm signal with 20 ms period on the same TPM moule ?&lt;/P&gt;&lt;P&gt;The module value affects all channel ?&lt;/P&gt;&lt;P&gt;Could be I have (just for example) for output compare, using the same TPM and different channel naturally but different frequency.&lt;/P&gt;&lt;P&gt;I dont'understand something ? What's wrong in my code ?&lt;/P&gt;&lt;P&gt;Thanks in advance.&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;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;// SUPPORT INIT FUNCIONS&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;// init TMP module&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;void TPM_TmInit(uint8 tpmtimer, uint8 tpmsrc, uint8 tpmprescaler, uint16 module)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_Type&amp;nbsp;&amp;nbsp;&amp;nbsp; *tpm[] = { TPM0, TPM1, TPM2 };&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mask[] = { SIM_SCGC6_TPM0_MASK, SIM_SCGC6_TPM1_MASK, SIM_SCGC6_TPM2_MASK };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(tpmtimer &amp;gt; 2)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM-&amp;gt;SCGC6 |= mask[tpmtimer];&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;&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TPM clock gating&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM-&amp;gt;SOPT2 |= SIM_SOPT2_TPMSRC(tpmsrc);&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TPM clock source&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tpm[tpmtimer]-&amp;gt;SC |= TPM_SC_CMOD(0x01) | TPM_SC_PS(tpmprescaler);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TPM always up counting, prescaler clock&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tpm[tpmtimer]-&amp;gt;MOD = module;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;// init TMP channel&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;void TPM_ChInit(uint8 tpmtimer, uint8 channel, uint8 chmode, uint16 cnvalue, uint8 chie)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_Type&amp;nbsp;&amp;nbsp;&amp;nbsp; *tpm[] = { TPM0, TPM1, TPM2 };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if((tpmtimer &amp;gt; 2) || (channel &amp;gt; 5))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tpm[tpmtimer]-&amp;gt;CONTROLS[channel].CnV&amp;nbsp;&amp;nbsp; = cnvalue;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tpm[tpmtimer]-&amp;gt;CONTROLS[channel].CnSC = chmode;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(chie != 0)&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; tpm[tpmtimer]-&amp;gt;CONTROLS[channel].CnSC |= TPM_CnSC_CHIE_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ConnectInterruptToCortex(chie);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Dec 2014 10:38:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TPM-FRDMK25/m-p/354131#M17617</guid>
      <dc:creator>ciful</dc:creator>
      <dc:date>2014-12-16T10:38:13Z</dc:date>
    </item>
    <item>
      <title>Re: TPM FRDMK25</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TPM-FRDMK25/m-p/354132#M17618</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Claudio&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The TMPs have one period that is valid for all of its channels.&lt;/P&gt;&lt;P&gt;You can therefore have one 1kHz clock on one channel (50% PWM) and 3 other different PWM values (eg. 5%, 25% and 78%) on other channels (still at 1kHz base rate).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you need different PWM outputs with different base frequences you need to use chanels on different TMPs for them so that each can have a different base period.&lt;/P&gt;&lt;P&gt;It is not possible to have different base periods on different channels of a single TPM.&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;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Dec 2014 18:02:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TPM-FRDMK25/m-p/354132#M17618</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2014-12-16T18:02:27Z</dc:date>
    </item>
    <item>
      <title>Re: TPM FRDMK25</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TPM-FRDMK25/m-p/354133#M17619</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Mark thank you for your answer.&lt;/P&gt;&lt;P&gt;I tried a lot of combination in interrupt but you are right I have just understand.&lt;/P&gt;&lt;P&gt;In the past I didn't use this module.&lt;/P&gt;&lt;P&gt;I can manage my pwm by other TPM module.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Claudio&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Dec 2014 22:52:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TPM-FRDMK25/m-p/354133#M17619</guid>
      <dc:creator>ciful</dc:creator>
      <dc:date>2014-12-16T22:52:35Z</dc:date>
    </item>
  </channel>
</rss>

