<?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: lpc1343 Capture Concern :( in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589555#M28678</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ex-Zero on Sun Jul 08 03:11:19 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Interrupt priority :confused:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;See: &lt;/SPAN&gt;&lt;A href="http://"&gt;http://knowledgebase.nxp.com/showthread.php?t=2876&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 16 Jun 2016 02:45:23 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-16T02:45:23Z</dc:date>
    <item>
      <title>lpc1343 Capture Concern :(</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589554#M28677</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ub3r on Sun Jul 08 03:06:28 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Greetings,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Ive set up the capture on the 1343 like so:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= (1&amp;lt;&amp;lt;7);//enable clock CT16B0
//init io CT16B0_CAP0
LPC_IOCON-&amp;gt;PIO0_2 = (1&amp;lt;&amp;lt;1)|(2&amp;lt;&amp;lt;3);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //CT16B0_CAP0 &amp;amp; pullup

LPC_TMR16B0-&amp;gt;CTCR = 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; //use timer mode
LPC_TMR16B0-&amp;gt;CCR&amp;nbsp; = (1&amp;lt;&amp;lt;2)|(1&amp;lt;&amp;lt;0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //rising, interrupt
RISING = 1;

LPC_TMR16B0-&amp;gt;PR&amp;nbsp; = 71;&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; //prescaler 71
NVIC_EnableIRQ(TIMER_16_0_IRQn);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //enable interrupt
LPC_TMR16B0-&amp;gt;TCR&amp;nbsp; = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Basically i want to read the input pulse width. Ranges from 1000us to 2000us.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My capture interrupt is below:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
//read width
void TIMER16_0_IRQHandler(void)
{
if(LPC_TMR16B0-&amp;gt;IR &amp;amp; (1&amp;lt;&amp;lt;4))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //capture interrupt?
{
LPC_TMR16B0-&amp;gt;IR |= (1&amp;lt;&amp;lt;4);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //reset capture interrupt

if(RISING)//Rising Edge
{
LPC_TMR16B0-&amp;gt;TC = 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;&amp;nbsp; //reset timer
LED_ON;

LPC_TMR16B0-&amp;gt;CCR&amp;nbsp; = (1&amp;lt;&amp;lt;2)|(1&amp;lt;&amp;lt;1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //falling
RISING = 0;
}

else//Falling Edge
{
P_WIDTH = LPC_TMR16B0-&amp;gt;CR0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //read time
LED_OFF;

LPC_TMR16B0-&amp;gt;CCR&amp;nbsp; = (1&amp;lt;&amp;lt;2)|(1&amp;lt;&amp;lt;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; //rising
RISING = 1;
}
}&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; //end capture interrupt
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Basically, on the rising interrupt im clearing the timer, and on the falling interrupt I'm capturing the timer value in P_WIDTH. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My only concern is if the interrupt is delayed due to some other interrupt, TC wont be cleared exactly on the rising edge, and I will have a slight inaccuracy, which i don't want.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;How can i overcome this??&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:45:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589554#M28677</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:45:22Z</dc:date>
    </item>
    <item>
      <title>Re: lpc1343 Capture Concern :(</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589555#M28678</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ex-Zero on Sun Jul 08 03:11:19 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Interrupt priority :confused:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;See: &lt;/SPAN&gt;&lt;A href="http://"&gt;http://knowledgebase.nxp.com/showthread.php?t=2876&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:45:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589555#M28678</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:45:23Z</dc:date>
    </item>
    <item>
      <title>Re: lpc1343 Capture Concern :(</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589556#M28679</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ub3r on Sun Jul 08 03:23:50 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;My understanding is that we still have to wait (even when we set a high priority) until the CPU exits the current ISR... Which can cause a slight delay depending on the size of the current ISR.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Or am i wrong??&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:45:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589556#M28679</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:45:23Z</dc:date>
    </item>
    <item>
      <title>Re: lpc1343 Capture Concern :(</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589557#M28680</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ex-Zero on Sun Jul 08 04:14:49 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: ub3r&lt;/STRONG&gt;&lt;BR /&gt;My understanding is that we still have to wait (even when we set a high priority) until the CPU exits the current ISR... Which can cause a slight delay depending on the size of the current ISR.&amp;nbsp; &lt;BR /&gt;&lt;BR /&gt;Or am i wrong??&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;High priority interrupts interrupt low priority interrupts :rolleyes:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Also mechanisms like "Late Arriving Interrupt" are reducing your interrupt latency :)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;There are several pictures at arm.com showing this NVIC features.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;See also &lt;/SPAN&gt;&lt;A href="http://"&gt;http://support.code-red-tech.com/CodeRedWiki/ArmCpuInfo&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:45:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589557#M28680</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:45:24Z</dc:date>
    </item>
    <item>
      <title>Re: lpc1343 Capture Concern :(</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589558#M28681</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ub3r on Sun Jul 08 04:22:23 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Zero your my Hero :D :D.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thx for the confirmation.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:45:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589558#M28681</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:45:24Z</dc:date>
    </item>
    <item>
      <title>Re: lpc1343 Capture Concern :(</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589559#M28682</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by frame on Mon Jul 09 06:24:06 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;From my understanding, you still have a 12 clock cycle jitter.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If your high-priority Timer16 interrupt arrives during another interrupt of lower priority, the context is not saved again, 'skipping' this 12 clock cycles you usually need when interrupting normal user code.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Am I correct ?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:45:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589559#M28682</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:45:25Z</dc:date>
    </item>
    <item>
      <title>Re: lpc1343 Capture Concern :(</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589560#M28683</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by elef on Tue Jul 10 16:50:58 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;ub3r, i had the same problem. I'm used to having more advanced timers on my MCU's where you can also clear the timer on capture.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Anyways, easy solution, but it uses more memory (a tiny bit of ram and flash, but i assume you have heaps spare): &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[B]Don't clear the timer.[/B] Each time you enter the interrupt, subtract the previous interrupt value from the new one. Then save the new one to overwrite the old one before you exit the interrupt.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Then you might need to take care when it wraps around, but if you use "unsigned short int" (size needs to match your timer size, so unsigned int for 32 bit timer) you should be ok...&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:45:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589560#M28683</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:45:26Z</dc:date>
    </item>
    <item>
      <title>Re: lpc1343 Capture Concern :(</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589561#M28684</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ub3r on Wed Jul 11 21:34:50 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: elef&lt;/STRONG&gt;&lt;BR /&gt;ub3r, i had the same problem. I'm used to having more advanced timers on my MCU's where you can also clear the timer on capture.&lt;BR /&gt;Anyways, easy solution, but it uses more memory (a tiny bit of ram and flash, but i assume you have heaps spare): &lt;BR /&gt;[B]Don't clear the timer.[/B] Each time you enter the interrupt, subtract the previous interrupt value from the new one. Then save the new one to overwrite the old one before you exit the interrupt.&lt;BR /&gt;Then you might need to take care when it wraps around, but if you use "unsigned short int" (size needs to match your timer size, so unsigned int for 32 bit timer) you should be ok...&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Very good idea. Ill try implement it in the next few days and let you know how i go. :)&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:45:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/lpc1343-Capture-Concern/m-p/589561#M28684</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:45:26Z</dc:date>
    </item>
  </channel>
</rss>

