<?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のトピックSteps for setting an UART interrupt</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Steps-for-setting-an-UART-interrupt/m-p/524444#M7080</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Lazar92 on Tue Apr 21 02:34:46 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Steps that I went through during setup of UART interrupt are:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1) Initialize UART2 peripheral and required pins &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2) Clear DLAB bit in LCR register &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3) Enable RBRIE and THREIE interrupt bits (flag bits) in IER register &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4) Enable interrupt for UART2 with NVIC_EnableIRQ(UART2_IRQn)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;5) Masked 2 bits RDR and THRE in IIR register and checking them all the time if they are set, if RDA is set go to receive function, if THRE is set go to send function and thats it. Are there steps that I forgot and that may be the reason it wont work?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there something in code I forgot, bcs when i follow this steps interrupt won't work?&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;
#define&amp;nbsp;&amp;nbsp; SMR_485TRANSMIT LPC_GPIO5-&amp;gt;SET |=&amp;nbsp; (1&amp;lt;&amp;lt;0)&amp;nbsp; //CHANGE DATA FLOW TO TRANSMIT
#define&amp;nbsp;&amp;nbsp; SMR_485RECEIVE&amp;nbsp; LPC_GPIO5-&amp;gt;CLR |=&amp;nbsp; (1&amp;lt;&amp;lt;0)&amp;nbsp; //CHANGE DATA FLOW TO RECEIVE

int main(void) {

uart2();
NVIC_EnableIRQ(UART2_IRQn);
while(1) {
}
}

void receive(void) {

SMR_485RECEIVE;
delay_10_micro();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; receive_byte = LPC_UART2-&amp;gt;RBR;

&amp;nbsp;&amp;nbsp;&amp;nbsp; }

void send(void) {

SMR_485TRANSMIT; 
delay_1_ms();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART2-&amp;gt;THR = receive_byte;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }

void UART2_IRQHandler(void) {

BYTE maska = LPC_UART2-&amp;gt;IIR &amp;amp; 0x04;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(maska == 0x04){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; receive();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay_10_micro();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; send();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay_10_micro();
&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;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
void uart2(void){

LPC_SC-&amp;gt;PCONP |= (1&amp;lt;&amp;lt;24);&amp;nbsp; // power to the uart2 peripheral 

LPC_UART2-&amp;gt;LCR = 0x83; // 8 bits, parity none, stopbit 1, DLAB ENABLED

LPC_UART2-&amp;gt;FCR = 7; // FIFO enable, Rx FIFO reset, Tx FIFO reset
LPC_UART2-&amp;gt;FCR = 1; // reset fifo

/* Then reset DLAB bit */
LPC_UART2-&amp;gt;LCR = 0x03; // disable DLAB so that interrupts are enabled

LPC_UART2-&amp;gt;IER = 0x03; 

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //pinsel for UART2
 LPC_IOCON-&amp;gt;P0_10 = 1; // UART2 TXD
 LPC_IOCON-&amp;gt;P0_11 = 1; // UART2 RXD
 LPC_IOCON-&amp;gt;P5_0 =&amp;nbsp; 0; // SMR_485 

 LPC_GPIO5-&amp;gt;DIR |= (1&amp;lt;&amp;lt;0);

}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 18:10:17 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T18:10:17Z</dc:date>
    <item>
      <title>Steps for setting an UART interrupt</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Steps-for-setting-an-UART-interrupt/m-p/524444#M7080</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Lazar92 on Tue Apr 21 02:34:46 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Steps that I went through during setup of UART interrupt are:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1) Initialize UART2 peripheral and required pins &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2) Clear DLAB bit in LCR register &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3) Enable RBRIE and THREIE interrupt bits (flag bits) in IER register &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4) Enable interrupt for UART2 with NVIC_EnableIRQ(UART2_IRQn)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;5) Masked 2 bits RDR and THRE in IIR register and checking them all the time if they are set, if RDA is set go to receive function, if THRE is set go to send function and thats it. Are there steps that I forgot and that may be the reason it wont work?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there something in code I forgot, bcs when i follow this steps interrupt won't work?&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;
#define&amp;nbsp;&amp;nbsp; SMR_485TRANSMIT LPC_GPIO5-&amp;gt;SET |=&amp;nbsp; (1&amp;lt;&amp;lt;0)&amp;nbsp; //CHANGE DATA FLOW TO TRANSMIT
#define&amp;nbsp;&amp;nbsp; SMR_485RECEIVE&amp;nbsp; LPC_GPIO5-&amp;gt;CLR |=&amp;nbsp; (1&amp;lt;&amp;lt;0)&amp;nbsp; //CHANGE DATA FLOW TO RECEIVE

int main(void) {

uart2();
NVIC_EnableIRQ(UART2_IRQn);
while(1) {
}
}

void receive(void) {

SMR_485RECEIVE;
delay_10_micro();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; receive_byte = LPC_UART2-&amp;gt;RBR;

&amp;nbsp;&amp;nbsp;&amp;nbsp; }

void send(void) {

SMR_485TRANSMIT; 
delay_1_ms();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART2-&amp;gt;THR = receive_byte;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }

void UART2_IRQHandler(void) {

BYTE maska = LPC_UART2-&amp;gt;IIR &amp;amp; 0x04;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(maska == 0x04){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; receive();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay_10_micro();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; send();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay_10_micro();
&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;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
void uart2(void){

LPC_SC-&amp;gt;PCONP |= (1&amp;lt;&amp;lt;24);&amp;nbsp; // power to the uart2 peripheral 

LPC_UART2-&amp;gt;LCR = 0x83; // 8 bits, parity none, stopbit 1, DLAB ENABLED

LPC_UART2-&amp;gt;FCR = 7; // FIFO enable, Rx FIFO reset, Tx FIFO reset
LPC_UART2-&amp;gt;FCR = 1; // reset fifo

/* Then reset DLAB bit */
LPC_UART2-&amp;gt;LCR = 0x03; // disable DLAB so that interrupts are enabled

LPC_UART2-&amp;gt;IER = 0x03; 

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //pinsel for UART2
 LPC_IOCON-&amp;gt;P0_10 = 1; // UART2 TXD
 LPC_IOCON-&amp;gt;P0_11 = 1; // UART2 RXD
 LPC_IOCON-&amp;gt;P5_0 =&amp;nbsp; 0; // SMR_485 

 LPC_GPIO5-&amp;gt;DIR |= (1&amp;lt;&amp;lt;0);

}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:10:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Steps-for-setting-an-UART-interrupt/m-p/524444#M7080</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:10:17Z</dc:date>
    </item>
    <item>
      <title>Re: Steps for setting an UART interrupt</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Steps-for-setting-an-UART-interrupt/m-p/524445#M7081</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by nerd herd on Wed Apr 22 07:48:08 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi Lazar92,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Have you checked our LPCOpen software platform for a UART example?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fcontent%2Fnxpfile%2Flpcopen-software-development-platform-lpc17xx-packages" rel="nofollow" target="_blank"&gt;http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc17xx-packages&lt;/A&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:10:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Steps-for-setting-an-UART-interrupt/m-p/524445#M7081</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:10:18Z</dc:date>
    </item>
  </channel>
</rss>

