<?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: LPC1768 - CAN interrupt in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1768-CAN-interrupt/m-p/534794#M4285</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 Thu Feb 16 03:30:16 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm not sure what you are trying to do :eek:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What's that?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt; if ( (LPC_CAN2-&amp;gt;ICR) [B][COLOR=Red]&amp;amp;&amp;amp;[/COLOR][/B] ([B][COLOR=DarkOrange]0x08[/COLOR][/B]))&amp;nbsp;&amp;nbsp;&amp;nbsp; // IDIE&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;SPAN&gt;Are you trying to read DOI or IDI?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt; if (LPC_CAN2-&amp;gt;ICR &amp;amp; (1&amp;lt;&amp;lt;8))&amp;nbsp;&amp;nbsp;&amp;nbsp; //read IDI&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;SPAN&gt;User manual:&lt;/SPAN&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;16.7.4 CAN Interrupt and Capture Register (CAN1ICR - 0x4004 400C, CAN2ICR - 0x4004 800C)&lt;BR /&gt;Bits in this register indicate information about events on the CAN bus. This register is&lt;BR /&gt;read-only.&lt;BR /&gt;&lt;BR /&gt;The Interrupt flags of the Interrupt and Capture Register allow the identification of an&lt;BR /&gt;interrupt source. When one or more bits are set, a CAN interrupt will be indicated to the&lt;BR /&gt;CPU. [COLOR=Red]After this register is read from the CPU all interrupt bits are reset[/COLOR] except of the&lt;BR /&gt;Receive Interrupt bit. The Interrupt Register appears to the CPU as a read-only memory.&lt;BR /&gt;Bits 1 through 10 clear when they are read.&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 16 Jun 2016 02:58:34 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-16T02:58:34Z</dc:date>
    <item>
      <title>LPC1768 - CAN interrupt</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1768-CAN-interrupt/m-p/534793#M4284</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 Thu Feb 16 02:31:48 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello everyone,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have CAN interrupt as folllows:&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;

NVIC_EnableIRQ (CAN_IRQn);
...
void CAN_IRQHandler ()
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( (LPC_CAN2-&amp;gt;ICR) &amp;amp;&amp;amp; (0x08))&amp;nbsp;&amp;nbsp;&amp;nbsp; // IDIE
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO1-&amp;gt;FIOSET |= (1&amp;lt;&amp;lt;28);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay (150);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO1-&amp;gt;FIOCLR |= (1&amp;lt;&amp;lt;28);
&amp;nbsp;&amp;nbsp;&amp;nbsp; delay (150);
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It generaly works but how to stop this interrupt. The ICR register is read only so I can't do "(LPC_CAN2-&amp;gt;ICR &amp;amp;=~(1&amp;lt;&amp;lt;8);" to go out of the IRQ loop.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:58:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1768-CAN-interrupt/m-p/534793#M4284</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:58:34Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1768 - CAN interrupt</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1768-CAN-interrupt/m-p/534794#M4285</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 Thu Feb 16 03:30:16 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm not sure what you are trying to do :eek:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What's that?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt; if ( (LPC_CAN2-&amp;gt;ICR) [B][COLOR=Red]&amp;amp;&amp;amp;[/COLOR][/B] ([B][COLOR=DarkOrange]0x08[/COLOR][/B]))&amp;nbsp;&amp;nbsp;&amp;nbsp; // IDIE&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;SPAN&gt;Are you trying to read DOI or IDI?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt; if (LPC_CAN2-&amp;gt;ICR &amp;amp; (1&amp;lt;&amp;lt;8))&amp;nbsp;&amp;nbsp;&amp;nbsp; //read IDI&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;SPAN&gt;User manual:&lt;/SPAN&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;16.7.4 CAN Interrupt and Capture Register (CAN1ICR - 0x4004 400C, CAN2ICR - 0x4004 800C)&lt;BR /&gt;Bits in this register indicate information about events on the CAN bus. This register is&lt;BR /&gt;read-only.&lt;BR /&gt;&lt;BR /&gt;The Interrupt flags of the Interrupt and Capture Register allow the identification of an&lt;BR /&gt;interrupt source. When one or more bits are set, a CAN interrupt will be indicated to the&lt;BR /&gt;CPU. [COLOR=Red]After this register is read from the CPU all interrupt bits are reset[/COLOR] except of the&lt;BR /&gt;Receive Interrupt bit. The Interrupt Register appears to the CPU as a read-only memory.&lt;BR /&gt;Bits 1 through 10 clear when they are read.&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:58:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1768-CAN-interrupt/m-p/534794#M4285</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:58:34Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1768 - CAN interrupt</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1768-CAN-interrupt/m-p/534795#M4286</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 Fri Feb 17 00:52:12 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I wrote this part of code as follows:&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;
...
int main (void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1_Init ();
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1_Bitrate (115200);
&amp;nbsp;&amp;nbsp;&amp;nbsp; CAN2_Init ();
&amp;nbsp;&amp;nbsp;&amp;nbsp; CAN2_Bitrate (125000);
&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ (CAN_IRQn);&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CAN2-&amp;gt;IER |= (1&amp;lt;&amp;lt;8);
&amp;nbsp;&amp;nbsp;&amp;nbsp; ...
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (;;) {}
&amp;nbsp; 
&amp;nbsp;&amp;nbsp; return (0);
}
void CAN_IRQHandler ()
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t temp = 0;

&amp;nbsp;&amp;nbsp;&amp;nbsp; if (LPC_CAN2-&amp;gt;ICR &amp;amp; (1&amp;lt;&amp;lt;8))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //read IDI
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO1-&amp;gt;FIOSET |= (1&amp;lt;&amp;lt;28);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((LPC_CAN2-&amp;gt;RID) == 182)
&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; temp = (((LPC_CAN2-&amp;gt;RDB) &amp;amp; (0x00FF0000)) &amp;gt;&amp;gt; 16);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;THR = temp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CAN2-&amp;gt;CMR |= (1&amp;lt;&amp;lt;2);
&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; LPC_GPIO1-&amp;gt;FIOCLR |= (1&amp;lt;&amp;lt;28);
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;and it works quite good but there is one strange behavior.There is some byte shift between CAN Transmitter and UART Receiver. I write an example:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;CAN Transmitter: 00 00 00 04&amp;nbsp; 05 06 07 08 (bytes values)&lt;BR /&gt;UART Receiver:&amp;nbsp; 00 00 00 00 04 05 06 07 08 (bytes values) -&amp;gt; first byte is always 00 (it doesn't matter whtat was sent from CAN) &lt;/SPAN&gt;&lt;HR /&gt;&lt;SPAN&gt;I send CAN messages from CAN King KVASER from my PC and I receive UART bytes on the Termite or RealTerm (RS-232 terminal) on my PC.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It isn't a big problem but why it happens?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:58:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1768-CAN-interrupt/m-p/534795#M4286</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:58:35Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1768 - CAN interrupt</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1768-CAN-interrupt/m-p/534796#M4287</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 Fri Feb 17 03:03:14 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Just a few notes :rolleyes:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Note#1: It's not necessary to read FIOSET / FIOCLR register, so:[INDENT] &lt;/SPAN&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
LPC_GPIO1-&amp;gt;FIOSET = (1&amp;lt;&amp;lt;28);
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;[/INDENT]is doing the same job (faster) &lt;SPAN class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;&lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Note#2: Could be helpful to Release Receive Buffer even if your RID isn't received:[INDENT] &lt;/SPAN&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
LPC_CAN2-&amp;gt;CMR = 0x01 &amp;lt;&amp;lt; 2; /* release receive buffer */
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;[/INDENT]Note#3: CMR is WO register, so it's useless to read it &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;BR /&gt;&lt;SPAN&gt;Note#4: Could be useful to read Transmitter Holding Register Empty (THRE) before writing to UART to avoid strange behaviour.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Note#5: Usually a complete message is stored and a flag is set to avoid timing problems in ISR.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Note#6: There are working samples available &lt;SPAN class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;&lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt; They show how to work with CAN interrupt. Example: can.c of CAN project (NXP_LPCXpresso1769_MCB1700_2011-02-11.zip)&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;
/******************************************************************************
** Function name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CAN_ISR_Rx1
**
** Descriptions:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CAN Rx1 interrupt handler
**
** parameters:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None
** Returned value:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None
** 
******************************************************************************/
void CAN_ISR_Rx1( void )
{
&amp;nbsp; uint32_t * pDest;

&amp;nbsp; /* initialize destination pointer&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; pDest = (uint32_t *)&amp;amp;MsgBuf_RX1;
&amp;nbsp; *pDest = LPC_CAN1-&amp;gt;RFS;&amp;nbsp; /* Frame&amp;nbsp;&amp;nbsp;&amp;nbsp; */

&amp;nbsp; pDest++;
&amp;nbsp; *pDest = LPC_CAN1-&amp;gt;RID; /* ID&amp;nbsp;&amp;nbsp;&amp;nbsp; */

&amp;nbsp; pDest++;
&amp;nbsp; *pDest = LPC_CAN1-&amp;gt;RDA; /* Data A */

&amp;nbsp; pDest++;
&amp;nbsp; *pDest = LPC_CAN1-&amp;gt;RDB; /* Data B&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; CAN1RxDone = TRUE;
&amp;nbsp; LPC_CAN1-&amp;gt;CMR = 0x01 &amp;lt;&amp;lt; 2; /* release receive buffer */
&amp;nbsp; return;
}

/******************************************************************************
** Function name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CAN_ISR_Rx2
**
** Descriptions:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CAN Rx2 interrupt handler
**
** parameters:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None
** Returned value:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None
** 
******************************************************************************/
void CAN_ISR_Rx2( void )
{
&amp;nbsp; uint32_t *pDest;

&amp;nbsp; /* initialize destination pointer&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; pDest = (uint32_t *)&amp;amp;MsgBuf_RX2;
&amp;nbsp; *pDest = LPC_CAN2-&amp;gt;RFS;&amp;nbsp; /* Frame&amp;nbsp;&amp;nbsp;&amp;nbsp; */

&amp;nbsp; pDest++;
&amp;nbsp; *pDest = LPC_CAN2-&amp;gt;RID; /* ID&amp;nbsp;&amp;nbsp;&amp;nbsp; */

&amp;nbsp; pDest++;
&amp;nbsp; *pDest = LPC_CAN2-&amp;gt;RDA; /* Data A&amp;nbsp;&amp;nbsp;&amp;nbsp; */

&amp;nbsp; pDest++;
&amp;nbsp; *pDest = LPC_CAN2-&amp;gt;RDB; /* Data B&amp;nbsp;&amp;nbsp;&amp;nbsp; */

&amp;nbsp; CAN2RxDone = TRUE;
&amp;nbsp; LPC_CAN2-&amp;gt;CMR = 0x01 &amp;lt;&amp;lt; 2; /* release receive buffer */
&amp;nbsp; return;
}

/*****************************************************************************
** Function name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CAN_Handler
**
** Descriptions:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CAN interrupt handler
**
** parameters:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None
** Returned value:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None
** 
*****************************************************************************/
void CAN_IRQHandler(void)&amp;nbsp; 
{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; CANStatus = LPC_CANCR-&amp;gt;RxSR;
&amp;nbsp; if ( CANStatus &amp;amp; (1 &amp;lt;&amp;lt; 8) )
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; CAN1RxCount++;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CAN_ISR_Rx1();
&amp;nbsp; }
&amp;nbsp; if ( CANStatus &amp;amp; (1 &amp;lt;&amp;lt; 9) )
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; CAN2RxCount++;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CAN_ISR_Rx2();
&amp;nbsp; }
&amp;nbsp; if ( LPC_CAN1-&amp;gt;GSR &amp;amp; (1 &amp;lt;&amp;lt; 6 ) )
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* The error count includes both TX and RX */
&amp;nbsp;&amp;nbsp;&amp;nbsp; CAN1ErrCount = LPC_CAN1-&amp;gt;GSR &amp;gt;&amp;gt; 16;
&amp;nbsp; }
&amp;nbsp; if ( LPC_CAN2-&amp;gt;GSR &amp;amp; (1 &amp;lt;&amp;lt; 6 ) )
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* The error count includes both TX and RX */
&amp;nbsp;&amp;nbsp;&amp;nbsp; CAN2ErrCount = LPC_CAN2-&amp;gt;GSR &amp;gt;&amp;gt; 16;
&amp;nbsp; }
&amp;nbsp; return;
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:58:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1768-CAN-interrupt/m-p/534796#M4287</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:58:36Z</dc:date>
    </item>
  </channel>
</rss>

