<?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: FRDM-KL03Z: Need help with interrupts in TPM module!</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL03Z-Need-help-with-interrupts-in-TPM-module/m-p/615824#M36634</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;References:&lt;BR /&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FFRDM-KL03Z.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/FRDM-KL03Z.html&lt;/A&gt;&lt;BR /&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fdocs%2FuTasker%2FuTaskerHWTimers.PDF" rel="nofollow" target="_blank"&gt;http://www.utasker.com/docs/uTasker/uTaskerHWTimers.PDF&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To clear the interrupt you need to write the 0x80 flag in the control and status register - however ensure to preserve the other bits since they define its operation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Attached is the FlexTimer/TPM driver for the uTasker project as reference and the simulation below - D4 is a RGB LED so it is normal that it is green if the green element is lit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To save time use the uTasker open source KL03 project since it includes everything you need, is documented and allows you to develop, test and debug much easier and faster in its KL03 simulator.&lt;BR /&gt;&lt;SPAN&gt;Full opens source code at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fforum%2Findex.php%3Ftopic%3D1721.msg7086%23msg7086" rel="nofollow" target="_blank"&gt;http://www.utasker.com/forum/index.php?topic=1721.msg7086#msg7086&lt;/A&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;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/15108i4F28387CD74AC480/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 02 Mar 2017 21:42:41 GMT</pubDate>
    <dc:creator>mjbcswitzerland</dc:creator>
    <dc:date>2017-03-02T21:42:41Z</dc:date>
    <item>
      <title>FRDM-KL03Z: Need help with interrupts in TPM module!</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL03Z-Need-help-with-interrupts-in-TPM-module/m-p/615823#M36633</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have the following code set-up to trigger an interrupt when the timer on channel 0 overflows. I have written an interrupt handler, but the various items in the routine are not being implemented. Also, when I try to reset the interrupt flags by writing a "1" to the appropriate registers, they appear to stay set and not get cleared. My code is below.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm also confused by the LED color since LED3 is supposed to be blue but I see green.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;stdio.h&amp;gt;&lt;BR /&gt;#include &amp;lt;string.h&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// SDK Included Files&lt;BR /&gt;#include "fsl_tpm_driver.h"&lt;BR /&gt;#include "board.h"&lt;BR /&gt;#include "fsl_debug_console.h"&lt;BR /&gt;#include "fsl_interrupt_manager.h"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;//Code to use the TPM interrupt&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;int main(void)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint16_t uMod, uCnV;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t freq, instance, clockps,port;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t channel, value;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;hardware_init();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; instance=BOARD_TPM_INSTANCE;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; channel= BOARD_TPM_CHANNEL;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLOCK_SYS_EnableTpmClock(instance);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_Type *tpmbase=g_tpmBase[instance];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Set Port (Ports are already set in the pins_mux.c file)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; // PORT_WR_PCR_MUX(PORTB, 11, 010); //Set the Alt2 muxing on Port B, pin 11&lt;BR /&gt;&amp;nbsp;&amp;nbsp; // GPIO_WR_PCOR(gpioBase, 0u);//Clear the output port&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//GPIO_WR_PDDR(portBase, 1u); //Set Port as output&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Set up the Timer&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TPM_BWR_SC_PS(tpmbase, 1u); //Set the prescaler value to divide by 2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_BWR_SC_CMOD(tpmbase, 00); //Disable the counter until the MOD is set&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TPM_BWR_SC_CPWMS(tpmbase, 0u); //Set the counting mode to up only&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TPM_BWR_CNT_COUNT(tpmbase,35u); //Set the count value, writing any value clears the register&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;clockps=(1&amp;lt;&amp;lt;TPM_BRD_SC_PS(tpmbase));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;freq=CLOCK_SYS_GetTpmFreq(instance)/clockps; //System clock=48MHz&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//uMod=freq / 120000u -1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uMod=50;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TPM_BWR_MOD_MOD(tpmbase, uMod); //Sets the TPM peripheral timer modulo value&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Setting up for Toggle output on Match on CS0SC&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//value=0x14u; //00010100 binary for Toggle Output on match where order of bits is: CHF CHIE MSB MSA ELSB ELSA 0 0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;value=0x28u; //00101000 binary for Edge-Aligned PWM where order of bits is: CHF CHIE MSB MSA ELSB ELSA 0 0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TPM_WR_CnSC(tpmbase,0,value); //The CnSC register needs to be written all at once!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Set the Timer Channel Count Value for PWM&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uCnV=uMod * 50/100; //sets the count value to be the PWM duty cycle...x/100 is the duty cycle&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TPM_BWR_CnV_VAL(tpmbase, channel, uCnV); //Sets the TPM peripheral timer channel counter value&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Set the Configuration registers&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TPM_BWR_CONF_TRGSEL(tpmbase, 1000);//Trigger Select for TPM0 overflow&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_BWR_CONF_CROT(tpmbase, 0); //Counter reload on trigger rising edge, 1=enabled&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_BWR_CONF_CSOO(tpmbase,0); //Counter stop on overflow, 1=enabled&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TPM_BWR_CONF_CSOT(tpmbase, 0); //Counter start immediately once enabled&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_BWR_CONF_GTBEEN(tpmbase, 0); //Global time base enable, 0=all channels use internal TPM counter as timebase&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_BWR_CONF_DBGMODE(tpmbase, 00); //Debug mode, set to have counter continue working in debug mode&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TPM_BWR_CnSC_CHIE(tpmbase,0,1); //Enable interrupts&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TPM_BWR_SC_TOIE(tpmbase, 1); //Enable the Timer overflow interrupt&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TPM_BWR_SC_TOF(tpmbase, 1);//Clear the TOF field (timer overflow)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_BWR_SC_CMOD(tpmbase, 01); //Start the counter. Set the TPM counter clock mode to increment on every TPM counter clock&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Interrupt stuff&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_ClearPendingIRQ(g_tpmIrqId[instance]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //INT_SYS_InstallHandler ( TPM0_IRQn, *TPM0_IRQHandler );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; INT_SYS_EnableIRQ(TPM0_IRQn);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; // INT_SYS_EnableIRQGlobal;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1){}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void TPM0_IRQHandler(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TPM_Type *tpmbase=g_tpmBase[BOARD_TPM_INSTANCE];&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LED3_EN;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LED3_ON;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LED3_OFF;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LED3_DIS;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;PRINTF("\r\nRunning the SaraTMRINT project: This is the interrupt\r\n");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TPM_WR_STATUS(tpmbase, 1); //Clear the entire interrupt flags&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Mar 2017 19:29:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL03Z-Need-help-with-interrupts-in-TPM-module/m-p/615823#M36633</guid>
      <dc:creator>sarastout-grand</dc:creator>
      <dc:date>2017-03-02T19:29:46Z</dc:date>
    </item>
    <item>
      <title>Re: FRDM-KL03Z: Need help with interrupts in TPM module!</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL03Z-Need-help-with-interrupts-in-TPM-module/m-p/615824#M36634</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;References:&lt;BR /&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FFRDM-KL03Z.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/FRDM-KL03Z.html&lt;/A&gt;&lt;BR /&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fdocs%2FuTasker%2FuTaskerHWTimers.PDF" rel="nofollow" target="_blank"&gt;http://www.utasker.com/docs/uTasker/uTaskerHWTimers.PDF&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To clear the interrupt you need to write the 0x80 flag in the control and status register - however ensure to preserve the other bits since they define its operation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Attached is the FlexTimer/TPM driver for the uTasker project as reference and the simulation below - D4 is a RGB LED so it is normal that it is green if the green element is lit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To save time use the uTasker open source KL03 project since it includes everything you need, is documented and allows you to develop, test and debug much easier and faster in its KL03 simulator.&lt;BR /&gt;&lt;SPAN&gt;Full opens source code at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fforum%2Findex.php%3Ftopic%3D1721.msg7086%23msg7086" rel="nofollow" target="_blank"&gt;http://www.utasker.com/forum/index.php?topic=1721.msg7086#msg7086&lt;/A&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;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/15108i4F28387CD74AC480/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Mar 2017 21:42:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL03Z-Need-help-with-interrupts-in-TPM-module/m-p/615824#M36634</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-03-02T21:42:41Z</dc:date>
    </item>
    <item>
      <title>Re: FRDM-KL03Z: Need help with interrupts in TPM module!</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL03Z-Need-help-with-interrupts-in-TPM-module/m-p/615825#M36635</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mark,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks, but I’ve invested time in learning the KDS and KDSK environments and don’t want to learn a new one right now.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you have any TPM interrupt documentation for KDSK? An example of would be great. Specifically, I want to see the interrupt subroutine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sara&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sara Stout-Grandy, M.Eng., Ph.D., P.Eng.&lt;/P&gt;&lt;P&gt;Senior Hardware Designer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;20 Angus Morton Dr., Bedford,&lt;/P&gt;&lt;P&gt;NS, Canada, B4B 0L9&lt;/P&gt;&lt;P&gt;902-450-1700, x278&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Mar 2017 13:54:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL03Z-Need-help-with-interrupts-in-TPM-module/m-p/615825#M36635</guid>
      <dc:creator>sarastout-grand</dc:creator>
      <dc:date>2017-03-03T13:54:01Z</dc:date>
    </item>
    <item>
      <title>Re: FRDM-KL03Z: Need help with interrupts in TPM module!</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL03Z-Need-help-with-interrupts-in-TPM-module/m-p/615826#M36636</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I attached an interrupt handling example to the previous post.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here it a copy of what you are probably most interest in (FlexTimer and TPU are compatible here so don't get worried about the names):&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;// Generic interrupt handling&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;//&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;static void fnHandleFlexTimer(FLEX_TIMER_MODULE *ptrFlexTimer, int iFlexTimerReference)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((ptrFlexTimer-&amp;gt;FTM_SC &amp;amp; FTM_SC_TOF) != 0) { // flag will always be set but it has to be read at '1' before it can be reset&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (usFlexTimerMode[iFlexTimerReference] &amp;amp; FLEX_TIMER_PERIODIC) {// if the timer is being used in periodic mode&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrFlexTimer-&amp;gt;FTM_SC = (usFlexTimerMode[iFlexTimerReference] &amp;amp; FTM_SC_USED_MASK); // reset interrupt and allow the FlexTimer to continue running for periodic interrupts&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrFlexTimer-&amp;gt;FTM_SC = FTM_SC_TOF; // stop further activity (single-shot mode)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (iFlexTimerReference) { // power down the FlexTimer after single-shot use&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&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; POWER_DOWN(6, SIM_SCGC6_FTM0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&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; break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 1:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&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; POWER_DOWN(6, SIM_SCGC6_FTM1);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&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; break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_flexTimerHandler[iFlexTimerReference] != 0) {&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; // if there is a user handler&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uDisable_Interrupt();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _flexTimerHandler[iFlexTimerReference]();&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; // call user handler&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uEnable_Interrupt();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 12px;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif; font-size: 13px;"&gt;Even if you need to stick with the solution you now use you can still simply run the open source uTasker KL03 project in KDS (which you already know) or in VisualStudio (massively more efficient for professional developers) to solve the present issues. It allows KL03 simulation so you can test and debug the operation most efficiently.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif; font-size: 13px;"&gt;Half a day learning the uTasker basics would probably allow you to cut your further development time in half quite easily but it is up to you to decide whether this would be of any advantage for your work or whether you are already satisfied with the speed of project developments.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif; font-size: 13px;"&gt;Regards&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif; font-size: 13px;"&gt;Mark&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Mar 2017 22:55:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-KL03Z-Need-help-with-interrupts-in-TPM-module/m-p/615826#M36636</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-03-03T22:55:21Z</dc:date>
    </item>
  </channel>
</rss>

