<?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>LPC MicrocontrollersのトピックRe: LPC1768 frequency counter</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-frequency-counter/m-p/524003#M6639</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by amadeusz665 on Tue Mar 11 07:08:10 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Great thank you for your answer ;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I forgotten add line "LPC_TIM1-&amp;gt;TCR = 1; " in my Timer handler. Now it's fine, but the number of counts is too small. I think when I move&amp;nbsp; my lcd function inside while() the result will be better.&amp;nbsp; &lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 18:06:59 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T18:06:59Z</dc:date>
    <item>
      <title>LPC1768 frequency counter</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-frequency-counter/m-p/524001#M6637</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by amadeusz665 on Fri Mar 07 07:14:54 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a problem with lpc1768 program. I'm&amp;nbsp; writing in C my frequency counter. Below is code witch i done:&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;

volatile uint32_t inputFreq, inputFreq2;
 char Variablestr [10]; //when the variable is between 0 and 1024 make sure this number is 4 or higher!
 char Variablestr2 [10];

void EnableCounter(void)
{

LPC_SC-&amp;gt;PCONP |= 1 &amp;lt;&amp;lt; 2; //Power up TimerCounter1

LPC_TIM1-&amp;gt;TCR |= 1 &amp;lt;&amp;lt; 0; // Counter mode
LPC_TIM1-&amp;gt;CTCR |= 3; // Count on both edges
LPC_TIM1-&amp;gt;CTCR |= 1 &amp;lt;&amp;lt; 2; // CAP1.1 is the input pin for which the input signal needs to be connected.
LPC_PINCON-&amp;gt;PINSEL3 |= ((1 &amp;lt;&amp;lt; 7)| (1 &amp;lt;&amp;lt; 6)); // Make P1.19 as CAP1.1


LPC_TIM1-&amp;gt;TCR = 0x1; // Enable counter

}
void EnableTimer(void)
{
LPC_SC-&amp;gt;PCONP |= 1 &amp;lt; 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //timer0 power on
LPC_TIM0-&amp;gt;MR0 = 12499999;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //1sec
LPC_TIM0-&amp;gt;MCR = 3;&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; //interrupt and reset control
&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; //3 = Interrupt &amp;amp; reset timer0 on match
&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; //1 = Interrupt only, no reset of timer0
NVIC_EnableIRQ(TIMER0_IRQn);&amp;nbsp;&amp;nbsp;&amp;nbsp; //enable timer0 interrupt
LPC_TIM0-&amp;gt;TCR = 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; //enable Timer0
lcdDrawText(20,60,"start_timer",LCDRed);

}

void TIMER0_IRQHandler (void)
{

if((LPC_TIM0-&amp;gt;IR &amp;amp; 0x01) == 0x01) // if MR0 interrupt
{

LPC_TIM0-&amp;gt;IR |= 1 &amp;lt;&amp;lt; 0; // Clear MR0 interrupt flag

inputFreq = LPC_TIM1-&amp;gt;TC; // Read the counter value
inputFreq2 = LPC_TIM0-&amp;gt;TC;
lcdClear(LCDBlack);
snprintf(Variablestr, 10,"%d",inputFreq);
lcdDrawText(100,250,Variablestr,LCDWhite);


snprintf(Variablestr2, 10,"%d",inputFreq2);
lcdDrawText(100,200,Variablestr2,LCDYellow);


LPC_TIM1-&amp;gt;TCR |= 1 &amp;lt;&amp;lt; 1 ; // Reset the counter

}

}

int main (void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnableCounter();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnableTimer();
&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; while (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; }

}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I want to read frequency from waveform generator continuosly. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;When I run the program on my lcd I see only first frequency and after next interrupts I only see "0". &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;First frequency is ok. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I noticed, that comment line : "LPC_TIM1-&amp;gt;TCR |= 1 &amp;lt;&amp;lt; 1 ; // Reset the counter" the counter works better - he adds another frequency even when i change frequency on generator. But the number is total number of counts.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you for any directions and help. &lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:06:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-frequency-counter/m-p/524001#M6637</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:06:57Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1768 frequency counter</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-frequency-counter/m-p/524002#M6638</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Pacman on Tue Mar 11 06:13:42 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;repeat(forever) { never call subroutines from inside an interrupt }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;*printf, lcdDrawText, fopen/fread/fwrite/fclose, malloc/free, any debug-output via UART... it all belongs in task-time.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;task-time=your 'main loop'.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Try cleaning up the interrupt and move your information inside your while(1){ ... }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;-Perhaps it would be a great idea to...&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;while(1)
{
asm("wfi");/* wait until any interrupt occurred, in some cases the above mentioned timer */
...
/* your lcd code here */
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Now this might not fix your problem, but there's a good chance that you will get it fixed faster. &lt;SPAN class="lia-unicode-emoji" title=":winking_face:"&gt;&lt;LI-EMOJI id="lia_winking-face" title=":winking_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:06:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-frequency-counter/m-p/524002#M6638</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:06:58Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1768 frequency counter</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-frequency-counter/m-p/524003#M6639</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by amadeusz665 on Tue Mar 11 07:08:10 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Great thank you for your answer ;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I forgotten add line "LPC_TIM1-&amp;gt;TCR = 1; " in my Timer handler. Now it's fine, but the number of counts is too small. I think when I move&amp;nbsp; my lcd function inside while() the result will be better.&amp;nbsp; &lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:06:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-frequency-counter/m-p/524003#M6639</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:06:59Z</dc:date>
    </item>
  </channel>
</rss>

