<?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: Timer 0 32b LPC 1114 - wrong RC5 code</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timer-0-32b-LPC-1114-wrong-RC5-code/m-p/538681#M11716</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by teslabox on Mon Apr 28 23:29:51 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello everyone,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I changed pin from PIO 0.4 to PIO 1.9.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Everything works well.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The PIO 0.4 is a bit broken down.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Jacob&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 19:39:07 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T19:39:07Z</dc:date>
    <item>
      <title>Timer 0 32b LPC 1114 - wrong RC5 code</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timer-0-32b-LPC-1114-wrong-RC5-code/m-p/538679#M11714</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by teslabox on Sun Apr 27 08:22:09 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi everyone!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I need to do remonte control driver (using RC-5 code).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;First I wrote a C code for my LPCXpresso LPC1769 (M3) because I have a lof of my own libraries for peripherals.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The external interrupt (on the falling egde) on one pin and a timer inside it and reading pin state.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Then colecting bits in MSB and LSB bytes and sengind them thru UART to the PC.&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;void EINT0_IRQHandler (void)
{
uint8_t&amp;nbsp; NumberOfBit = 0;
uint16_t RC5_Byte = 0;
uint8_t&amp;nbsp; MSB, LSB = 0;

Timer0_MicroSeconds (444);

for (NumberOfBit = 0; NumberOfBit &amp;lt;= 13; NumberOfBit++)
{
RC5_Byte |= ((LPC_GPIO2-&amp;gt;FIOPIN &amp;amp; (1&amp;lt;&amp;lt;10)) &amp;gt;&amp;gt; NumberOfBit);
Timer0_MicroSeconds (889);
}
MSB = (RC5_Byte &amp;amp; 0xFF00) &amp;gt;&amp;gt; 8;
LSB = (RC5_Byte &amp;amp; 0x00FF) &amp;gt;&amp;gt; 0;

// Clear interrupt
LPC_SC-&amp;gt;EXTINT = (1&amp;lt;&amp;lt;0);

UART0_SendByte (MSB);
UART0_SendByte (LSB);

}

int main (void)
{
UART0_Init ();
UART0_Bitrate (115200);

Timer0_Init (1);// value "1" just for init
EINT0_init ();

LPC_GPIO0-&amp;gt;FIODIR |= (1&amp;lt;&amp;lt;22);
LPC_GPIO0-&amp;gt;FIOSET |= (1&amp;lt;&amp;lt;22);

for (;;)
{
LPC_GPIO0-&amp;gt;FIOPIN ^= (1&amp;lt;&amp;lt;22);
Timer0_MicroSeconds (500);

}
return (0);
}&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;Everything goes well.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Next I do the same on LPC1114 - the smaller version (M0) of ARM uC but given values are different than at LPC1769.&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;// main programm
int main (void)
{
Timer32b_0_Init ();// Set clock to the Timer 32-bit No. 0
UART_Init (115200);// Set UART bitrate as 115200 bps

LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= (1&amp;lt;&amp;lt;6);

LPC_GPIO0-&amp;gt;DIR|= (1&amp;lt;&amp;lt;1);
LPC_GPIO0-&amp;gt;DATA|= (1&amp;lt;&amp;lt;1);

LPC_GPIO0-&amp;gt;DIR &amp;amp;=~(1&amp;lt;&amp;lt;4);// PIO 0.4 as input
LPC_GPIO0-&amp;gt;DATA |= (1&amp;lt;&amp;lt;4);// PIO 0.4 with pull-up
LPC_GPIO0-&amp;gt;IS &amp;amp;=~(1&amp;lt;&amp;lt;4);// Interrupt sensitive on edge change (not on level)
LPC_GPIO0-&amp;gt;IBE &amp;amp;=~(1&amp;lt;&amp;lt;4);// Interrupt on pin PIO 0.4 is controlled through register GPIO0IEV
LPC_GPIO0-&amp;gt;IEV&amp;amp;=~(1&amp;lt;&amp;lt;4);// falling egde on pin PIO 0.4 triggers an interrupt
LPC_GPIO0-&amp;gt;IE |= (1&amp;lt;&amp;lt;4);// GPIO at PIO 0.4 Interrupt Enable

NVIC_EnableIRQ (EINT0_IRQn);// 31 PIO_0 GPIO interrupt status of port 0

for (;;)
{
Timer32b_0_ms (500);
LPC_GPIO0-&amp;gt;DATA^= (1&amp;lt;&amp;lt;1);// toggle the LED on pin PIO 0.1 
}
 return (0);
}


void Timer32b_0_Init (void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= (1&amp;lt;&amp;lt;9);
}

void Timer32b_0_us (uint32_t Microseconds)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR32B0-&amp;gt;TCR = 0x02;/* reset timer */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR32B0-&amp;gt;PR&amp;nbsp; = 0x00;/* set prescaler to zero */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR32B0-&amp;gt;MR0 = Microseconds * ((SystemCoreClock/(LPC_TMR32B0-&amp;gt;PR+1))/1000000);
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR32B0-&amp;gt;IR&amp;nbsp; = 0xff;/* reset all interrrupts */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR32B0-&amp;gt;MCR = 0x04;/* stop timer on match */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_TMR32B0-&amp;gt;TCR = 0x01;/* start timer */

&amp;nbsp;&amp;nbsp;&amp;nbsp; /* wait until delay time has elapsed */
&amp;nbsp;&amp;nbsp;&amp;nbsp; while (LPC_TMR32B0-&amp;gt;TCR &amp;amp; 0x01);
}

void PIOINT0_IRQHandler (void)
{
uint8_t&amp;nbsp; NumberOfBit = 0;
uint16_t RC5_Byte = 0;
uint8_t&amp;nbsp; MSB, LSB = 0;

if (LPC_GPIO0-&amp;gt;MIS &amp;amp; (1&amp;lt;&amp;lt;4))// If set the interrupt at PIO 0.4
{

Timer32b_0_us (444);

for (NumberOfBit = 0; NumberOfBit &amp;lt;= 13; NumberOfBit++)
{
RC5_Byte |= ((LPC_GPIO0-&amp;gt;DATA &amp;amp; (1&amp;lt;&amp;lt;4)) &amp;gt;&amp;gt; NumberOfBit);
Timer32b_0_us (889);
}

MSB = (RC5_Byte &amp;amp; 0xFF00) &amp;gt;&amp;gt; 8;
LSB = (RC5_Byte &amp;amp; 0x00FF) &amp;gt;&amp;gt; 0;

LPC_GPIO0-&amp;gt;IC |= (1&amp;lt;&amp;lt;4);// Clear interrupt at PIO 0.4

asm ("nop");
asm ("nop");

UART_SendByte (MSB);
UART_SendByte (LSB);
}

return;
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In both cases I get the toogle bit and 2 bytes... so it looks almost OK but the values are different.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;My system core clock for LPC 1114 is 48 MHz so the Timer calculation for microseconds delay look also OK.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I don't know what's wrong with this.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'll be very grateful for help in this case ;).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(If any data or information is missing I will write it down if you need.) &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:39:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timer-0-32b-LPC-1114-wrong-RC5-code/m-p/538679#M11714</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:39:06Z</dc:date>
    </item>
    <item>
      <title>Re: Timer 0 32b LPC 1114 - wrong RC5 code</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timer-0-32b-LPC-1114-wrong-RC5-code/m-p/538680#M11715</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by R2D2 on Sun Apr 27 09:03:26 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: teslabox&lt;/STRONG&gt;&lt;BR /&gt;I don't know what's wrong with this.&lt;BR /&gt;I'll be very grateful for help in this case ;).&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;With delays and (slow) UART function calls in ISR you are not really asking for help, aren't you?&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:39:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timer-0-32b-LPC-1114-wrong-RC5-code/m-p/538680#M11715</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:39:07Z</dc:date>
    </item>
    <item>
      <title>Re: Timer 0 32b LPC 1114 - wrong RC5 code</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timer-0-32b-LPC-1114-wrong-RC5-code/m-p/538681#M11716</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by teslabox on Mon Apr 28 23:29:51 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello everyone,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I changed pin from PIO 0.4 to PIO 1.9.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Everything works well.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The PIO 0.4 is a bit broken down.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Jacob&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:39:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timer-0-32b-LPC-1114-wrong-RC5-code/m-p/538681#M11716</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:39:07Z</dc:date>
    </item>
  </channel>
</rss>

