<?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>MPC5xxxのトピックRe: About 5748G UART interrupt</title>
    <link>https://community.nxp.com/t5/MPC5xxx/About-5748G-UART-interrupt/m-p/501614#M2872</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In the Freescale examples (AN4830) all IRQs have default handlers for projects, demonstrating IRQ usage. I guess that &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/xinweichang" rel="nofollow noopener noreferrer" target="_blank"&gt;xinweichang&lt;/A&gt; missed INTC initialization or something else. Enabling of IRQ through LINFlex configuration is not sufficient to get interrupt working. In addition, I don't see in the message above which core is in use. If core used is not Core0, then interrupt handling should be also directed to the right core...&lt;/P&gt;&lt;P&gt;I'm attaching one example (based on Freescale example, published some time ago). This one uses PIT interrupt, so controller is configured to handle IRQs properly.&lt;/P&gt;&lt;P&gt;&lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/xinweichang" rel="nofollow noopener noreferrer" target="_blank"&gt;xinweichang&lt;/A&gt;​, code below configures LINFlex to use interrupts. It is directly taken from the OS driver I wrote, but you'll get the idea:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_1458804419940263 jive_macro_code jive_text_macro" data-renderedposition="164_8_1192_352" jivemacro_uid="_1458804419940263"&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;static void mpc57xx_linflex_init(SerialDriver *sdp, const SerialConfig *config) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t div;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; volatile struct LINFlexD_tag *linflexp = sdp-&amp;gt;linflexp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;errNoise = sdp-&amp;gt;errParity = sdp-&amp;gt;errOverRun = sdp-&amp;gt;errFraming = sdp-&amp;gt;errBreak = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enters the configuration mode.*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;LINCR1.B.INIT&amp;nbsp; = 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; /* Put LIN in INIT mode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;LINCR1.B.SLEEP = 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; /* No sleep&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;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Configures the LINFlex in UART mode with all the required parameters.*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;UARTCR.B.UART&amp;nbsp; = 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; /* Switch first to UART&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;UARTCR.R&amp;nbsp; = MPC57XX_UARTCR_UART | MPC57XX_UARTCR_RXEN | MPC57XX_UARTCR_RFBM | config-&amp;gt;mode;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; div = sdp-&amp;gt;clock / config-&amp;gt;speed;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;LINIBRR.R = (uint16_t)(div &amp;gt;&amp;gt; 4); /* Integer divider.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;LINFBRR.R = (uint16_t)(div &amp;amp; 15); /* Fractional divider.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;UARTSR.R&amp;nbsp; = 0xFFFF;&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; /* Clearing UARTSR register.*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;LINIER.R&amp;nbsp; = MPC57XX_LINIER_DTIE | MPC57XX_LINIER_DRIE |&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&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; MPC57XX_LINIER_BOIE | MPC57XX_LINIER_FEIE |&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&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; MPC57XX_LINIER_SZIE;&amp;nbsp; /* Interrupts enabled.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Leaves the configuration mode.*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;LINCR1.R&amp;nbsp; = 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; /* Put LIN in NORM mode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is the receive interrupt routine:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_14588044556254881 jive_macro_code jive_text_macro" data-renderedposition="568_8_1192_384" jivemacro_uid="_14588044556254881"&gt;&lt;P&gt;static void mpc57xxxx_serve_rxi_interrupt(SerialDriver *sdp) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; flagsmask_t sts = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint16_t sr = sdp-&amp;gt;linflexp-&amp;gt;UARTSR.R;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;linflexp-&amp;gt;UARTSR.R = MPC57XX_UARTSR_NF | MPC57XX_UARTSR_DRF |&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MPC57XX_UARTSR_PE0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sr &amp;amp; MPC57XX_UARTSR_NF) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sts |= SD_NOISE_ERROR;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;errNoise++;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sr &amp;amp; MPC57XX_UARTSR_PE0) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sts |= SD_PARITY_ERROR;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;errParity++;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DISABLE_INTERRUPTS();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sts)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chnAddFlagsI(sdp, sts);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sr &amp;amp; MPC57XX_UARTSR_DRF) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdIncomingDataI(sdp, sdp-&amp;gt;linflexp-&amp;gt;BDRM.B.DATA4);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;linflexp-&amp;gt;UARTSR.R = MPC57XX_UARTSR_RMB;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENABLE_INTERRUPTS();&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is the transmit interrupt routine:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14588046495472294 jive_text_macro" data-renderedposition="1004_8_1192_240" jivemacro_uid="_14588046495472294"&gt;&lt;P&gt;static void mpc57xxxx_serve_txi_interrupt(SerialDriver *sdp) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; msg_t b;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;linflexp-&amp;gt;UARTSR.R = MPC57XX_UARTSR_DTF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DISABLE_INTERRUPTS();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = chOQGetI(&amp;amp;sdp-&amp;gt;oqueue);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (b &amp;lt; Q_OK) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chnAddFlagsI(sdp, CHN_OUTPUT_EMPTY);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;linflexp-&amp;gt;UARTCR.B.TxEn = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;linflexp-&amp;gt;BDRL.B.DATA0 = b;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENABLE_INTERRUPTS();&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Don't forget that you have to handle error interrupt as well. In addition to all initialization done here, you have to set IRQ priority for the core which will handle the IRQ like this:&lt;/P&gt;&lt;P&gt;INTC.&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14588047974506610 jive_text_macro" data-renderedposition="1322_8_1192_32" jivemacro_uid="_14588047974506610"&gt;&lt;P&gt;INTC.PSR[vector].B.PRC_SELN&amp;lt;core&amp;gt; = 1;&lt;/P&gt;&lt;P&gt;INTC.PSR[vector].B.PRIN = &amp;lt;priority&amp;gt;;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 24 Mar 2016 07:34:54 GMT</pubDate>
    <dc:creator>alexvinchev</dc:creator>
    <dc:date>2016-03-24T07:34:54Z</dc:date>
    <item>
      <title>About 5748G UART interrupt</title>
      <link>https://community.nxp.com/t5/MPC5xxx/About-5748G-UART-interrupt/m-p/501612#M2870</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have written a uart polling receive demo on 5748G, and now want to use receive interrupt.&lt;/P&gt;&lt;P&gt;Previously in the main function there is:&lt;/P&gt;&lt;P&gt;&lt;EM&gt;if(checkLINFlexD_2())&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; d[0]=rxLINFlexD_2();&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; txLINFlexD_2(d[0]);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; GPIO_toggle();&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;The demo works well on PC,&amp;nbsp; if I send 5748G a byte, I can receive it back.&lt;/P&gt;&lt;P&gt;Then I and this to the initialize function:&lt;/P&gt;&lt;P&gt;&lt;EM&gt;LINFlexD_2.LINIER.B.DTIE = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable UART2 TX Interrupt */&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;LINFlexD_2.LINIER.B.DRIE=1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable UART2 RX Interrupt*/&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;It is said that this will enable an interrupt when uart2 receives message. &lt;STRONG&gt;If I don't add a interrupt function, the chip will enter a while(1) loop when interrupt occurs, right?&lt;/STRONG&gt; But this is not the case since the polling function still works, and I can still receive a message when I send it on PC.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Mar 2016 00:27:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/About-5748G-UART-interrupt/m-p/501612#M2870</guid>
      <dc:creator>xinweichang</dc:creator>
      <dc:date>2016-03-24T00:27:01Z</dc:date>
    </item>
    <item>
      <title>Re: About 5748G UART interrupt</title>
      <link>https://community.nxp.com/t5/MPC5xxx/About-5748G-UART-interrupt/m-p/501613#M2871</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if you enable interrupt and do not implement interrupt handler, micro does not respond to interrupt flag and continue with the actual task.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example, if micro executes some function and interrupt occurs, micro continues with executing the function. There is no reaction to the interrupt.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Martin&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Mar 2016 06:36:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/About-5748G-UART-interrupt/m-p/501613#M2871</guid>
      <dc:creator>martin_kovar</dc:creator>
      <dc:date>2016-03-24T06:36:31Z</dc:date>
    </item>
    <item>
      <title>Re: About 5748G UART interrupt</title>
      <link>https://community.nxp.com/t5/MPC5xxx/About-5748G-UART-interrupt/m-p/501614#M2872</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In the Freescale examples (AN4830) all IRQs have default handlers for projects, demonstrating IRQ usage. I guess that &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/xinweichang" rel="nofollow noopener noreferrer" target="_blank"&gt;xinweichang&lt;/A&gt; missed INTC initialization or something else. Enabling of IRQ through LINFlex configuration is not sufficient to get interrupt working. In addition, I don't see in the message above which core is in use. If core used is not Core0, then interrupt handling should be also directed to the right core...&lt;/P&gt;&lt;P&gt;I'm attaching one example (based on Freescale example, published some time ago). This one uses PIT interrupt, so controller is configured to handle IRQs properly.&lt;/P&gt;&lt;P&gt;&lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/xinweichang" rel="nofollow noopener noreferrer" target="_blank"&gt;xinweichang&lt;/A&gt;​, code below configures LINFlex to use interrupts. It is directly taken from the OS driver I wrote, but you'll get the idea:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_1458804419940263 jive_macro_code jive_text_macro" data-renderedposition="164_8_1192_352" jivemacro_uid="_1458804419940263"&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;static void mpc57xx_linflex_init(SerialDriver *sdp, const SerialConfig *config) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t div;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; volatile struct LINFlexD_tag *linflexp = sdp-&amp;gt;linflexp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;errNoise = sdp-&amp;gt;errParity = sdp-&amp;gt;errOverRun = sdp-&amp;gt;errFraming = sdp-&amp;gt;errBreak = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enters the configuration mode.*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;LINCR1.B.INIT&amp;nbsp; = 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; /* Put LIN in INIT mode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;LINCR1.B.SLEEP = 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; /* No sleep&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;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Configures the LINFlex in UART mode with all the required parameters.*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;UARTCR.B.UART&amp;nbsp; = 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; /* Switch first to UART&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;UARTCR.R&amp;nbsp; = MPC57XX_UARTCR_UART | MPC57XX_UARTCR_RXEN | MPC57XX_UARTCR_RFBM | config-&amp;gt;mode;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; div = sdp-&amp;gt;clock / config-&amp;gt;speed;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;LINIBRR.R = (uint16_t)(div &amp;gt;&amp;gt; 4); /* Integer divider.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;LINFBRR.R = (uint16_t)(div &amp;amp; 15); /* Fractional divider.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;UARTSR.R&amp;nbsp; = 0xFFFF;&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; /* Clearing UARTSR register.*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;LINIER.R&amp;nbsp; = MPC57XX_LINIER_DTIE | MPC57XX_LINIER_DRIE |&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&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; MPC57XX_LINIER_BOIE | MPC57XX_LINIER_FEIE |&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&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; MPC57XX_LINIER_SZIE;&amp;nbsp; /* Interrupts enabled.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Leaves the configuration mode.*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; linflexp-&amp;gt;LINCR1.R&amp;nbsp; = 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; /* Put LIN in NORM mode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is the receive interrupt routine:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_14588044556254881 jive_macro_code jive_text_macro" data-renderedposition="568_8_1192_384" jivemacro_uid="_14588044556254881"&gt;&lt;P&gt;static void mpc57xxxx_serve_rxi_interrupt(SerialDriver *sdp) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; flagsmask_t sts = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint16_t sr = sdp-&amp;gt;linflexp-&amp;gt;UARTSR.R;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;linflexp-&amp;gt;UARTSR.R = MPC57XX_UARTSR_NF | MPC57XX_UARTSR_DRF |&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MPC57XX_UARTSR_PE0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sr &amp;amp; MPC57XX_UARTSR_NF) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sts |= SD_NOISE_ERROR;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;errNoise++;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sr &amp;amp; MPC57XX_UARTSR_PE0) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sts |= SD_PARITY_ERROR;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;errParity++;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DISABLE_INTERRUPTS();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sts)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chnAddFlagsI(sdp, sts);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sr &amp;amp; MPC57XX_UARTSR_DRF) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdIncomingDataI(sdp, sdp-&amp;gt;linflexp-&amp;gt;BDRM.B.DATA4);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;linflexp-&amp;gt;UARTSR.R = MPC57XX_UARTSR_RMB;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENABLE_INTERRUPTS();&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is the transmit interrupt routine:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14588046495472294 jive_text_macro" data-renderedposition="1004_8_1192_240" jivemacro_uid="_14588046495472294"&gt;&lt;P&gt;static void mpc57xxxx_serve_txi_interrupt(SerialDriver *sdp) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; msg_t b;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;linflexp-&amp;gt;UARTSR.R = MPC57XX_UARTSR_DTF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DISABLE_INTERRUPTS();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = chOQGetI(&amp;amp;sdp-&amp;gt;oqueue);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (b &amp;lt; Q_OK) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chnAddFlagsI(sdp, CHN_OUTPUT_EMPTY);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;linflexp-&amp;gt;UARTCR.B.TxEn = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sdp-&amp;gt;linflexp-&amp;gt;BDRL.B.DATA0 = b;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENABLE_INTERRUPTS();&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Don't forget that you have to handle error interrupt as well. In addition to all initialization done here, you have to set IRQ priority for the core which will handle the IRQ like this:&lt;/P&gt;&lt;P&gt;INTC.&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14588047974506610 jive_text_macro" data-renderedposition="1322_8_1192_32" jivemacro_uid="_14588047974506610"&gt;&lt;P&gt;INTC.PSR[vector].B.PRC_SELN&amp;lt;core&amp;gt; = 1;&lt;/P&gt;&lt;P&gt;INTC.PSR[vector].B.PRIN = &amp;lt;priority&amp;gt;;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Mar 2016 07:34:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/About-5748G-UART-interrupt/m-p/501614#M2872</guid>
      <dc:creator>alexvinchev</dc:creator>
      <dc:date>2016-03-24T07:34:54Z</dc:date>
    </item>
    <item>
      <title>Re: About 5748G UART interrupt</title>
      <link>https://community.nxp.com/t5/MPC5xxx/About-5748G-UART-interrupt/m-p/501615#M2873</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you very much for giving me so much details:smileyhappy:.&lt;/P&gt;&lt;P&gt;I am using core0 with other core closed, and have done the following:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt; 1. add a interrupt function to intc_SW_mode_isr_vectors_MPC5748G.C:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;(uint32_t) &amp;amp;uart2_rx_interrupt, /* Vector # 382 LinFlex2_0 LinFlex_2_RXI */&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;STRONG&gt;2. enable rx interrupt in the initLINFlexD functioin:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;LINFlexD_2.LINIER.B.DRIE=1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable UART2 RX Interrupt*/&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; &lt;/EM&gt; &lt;STRONG&gt; 3. call the xcptn_xmpl() function in main():&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt; int i,j;&lt;BR /&gt; unsigned char d[100];&lt;BR /&gt; MC_ME.RUN_PC[0].R = 0x000000fe;&lt;BR /&gt; system160mhz();&lt;BR /&gt; InitMCU();&lt;BR /&gt; initGPIO();&lt;BR /&gt; initLINFlexD_2(80, 115200);&lt;BR /&gt; xcptn_xmpl ();&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; /* Configure and Enable Interrupts */&lt;BR /&gt; for(;;) {&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; if(checkLINFlexD_2()){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; d[0]=rxLINFlexD_2();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; txLINFlexD_2(d[0]);&lt;BR /&gt;&amp;nbsp; }&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt; return 0;&lt;BR /&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Is there something I still missed?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 25 Mar 2016 00:36:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/About-5748G-UART-interrupt/m-p/501615#M2873</guid>
      <dc:creator>xinweichang</dc:creator>
      <dc:date>2016-03-25T00:36:15Z</dc:date>
    </item>
    <item>
      <title>Re: About 5748G UART interrupt</title>
      <link>https://community.nxp.com/t5/MPC5xxx/About-5748G-UART-interrupt/m-p/501616#M2874</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I don't know what is in the &lt;STRONG&gt;xcptn_xmpl()&lt;/STRONG&gt; function, but would be nice to have somewhere:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14588897119196143 jive_text_macro" data-renderedposition="34_8_1192_96" jivemacro_uid="_14588897119196143" modifiedtitle="true"&gt;&lt;P&gt;INTC.PSR[382].B.PRC_SELN0 = 1; INTC.PSR[382].B.PRC_SELN1 = 0; INTC.PSR[382].B.PRC_SELN2 = 0;&lt;/P&gt;&lt;P&gt;INTC.PSR[383].B.PRC_SELN0 = 1; INTC.PSR[383].B.PRC_SELN1 = 0; INTC.PSR[383].B.PRC_SELN2 = 0;&lt;/P&gt;&lt;P&gt;INTC.PSR[384].B.PRC_SELN0 = 1; INTC.PSR[384].B.PRC_SELN1 = 0; INTC.PSR[384].B.PRC_SELN2 = 0;&lt;/P&gt;&lt;P&gt;INTC.PSR[382].B.PRIN = 8;&lt;/P&gt;&lt;P&gt;INTC.PSR[383].B.PRIN = 8;&lt;/P&gt;&lt;P&gt;INTC.PSR[384].B.PRIN = 8;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;Let me know if this helps.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 25 Mar 2016 07:09:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/About-5748G-UART-interrupt/m-p/501616#M2874</guid>
      <dc:creator>alexvinchev</dc:creator>
      <dc:date>2016-03-25T07:09:31Z</dc:date>
    </item>
    <item>
      <title>Re: About 5748G UART interrupt</title>
      <link>https://community.nxp.com/t5/MPC5xxx/About-5748G-UART-interrupt/m-p/501617#M2875</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Finally I found the problem is I forgot to set interrupt priority, which you mentioned at first time:smileyconfused:. On mc9s12xep100 the interrupt setting is rather simple, so I take it for granted that there is a default interrupt priority. Thank you for spending so much time on my question!:smileyhappy:&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 26 Mar 2016 14:02:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/About-5748G-UART-interrupt/m-p/501617#M2875</guid>
      <dc:creator>xinweichang</dc:creator>
      <dc:date>2016-03-26T14:02:02Z</dc:date>
    </item>
    <item>
      <title>Re: About 5748G UART interrupt</title>
      <link>https://community.nxp.com/t5/MPC5xxx/About-5748G-UART-interrupt/m-p/1868591#M25507</link>
      <description>&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;&lt;SPAN&gt;I'm trying to test out the UART peripheral on MPC5748G, but I’m stuck at where I’m trying to read data from the LINFlexD_7.BDRM.B.DATA4 data buffer.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;My requirement: Try to transmit and receive 9 bytes of hex values as shown below.&lt;BR /&gt;TxBuffer[9] = {0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I am attempting to read all 9 bytes using the above Rx ISR, but I am only receiving the first byte repeatedly, which is 0x11.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;Expected Output:&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;TxBuffer[9] = {0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19};&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;RxBuffer[9] = {0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19};&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Actual Output:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;TxBuffer[9] = {0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19};&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;RxBuffer[9] = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11};&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Could you please suggest what the issue is in the RxISR routine?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Please provide the correct&amp;nbsp;Uart7_Rx_Isr routine to read valid 9 bytes and Uart7_Tx_Isr and Transmit function as well.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;P&gt;Please review my&amp;nbsp;Uart7_Rx_Isr code below:&lt;/P&gt;&lt;DIV&gt;void Uart7_Rx_Isr (void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; unsigned char Channel = 7U;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; unsigned char Data;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; if (1 == LINFlexD_7.UARTSR.B.DRFRFE)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Data = LINFlexD_7.BDRM.B.DATA4;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LINFlexD_7.UARTSR.R &amp;amp;= UART_DRFRFE;&amp;nbsp; &amp;nbsp; &amp;nbsp; /* Clear data reception flag W1C */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/*Save received data*/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (BufferTxdisplay_index &amp;lt; UART_7_TX_MAX_LENGTH)&amp;nbsp; &amp;nbsp;//0 &amp;lt;12&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;BufferTxdisplay[BufferTxdisplay_index] = Data;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;BufferTxdisplay_index++;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;if( (BufferTxdisplay_index &amp;gt;= 9) )&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BufferTxdisplay_index = 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 20 May 2024 06:06:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/About-5748G-UART-interrupt/m-p/1868591#M25507</guid>
      <dc:creator>Anilpatil_SasvaAuto</dc:creator>
      <dc:date>2024-05-20T06:06:51Z</dc:date>
    </item>
  </channel>
</rss>

