<?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 controlling UART ISR directly with (bypassing) MQX in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/controlling-UART-ISR-directly-with-bypassing-MQX/m-p/171781#M1240</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="MsoNormal"&gt;I'm trying to configure a UART ISR.&lt;/P&gt;&lt;P class="MsoNormal"&gt;I using MQX, but here I want to control the ISR directly.&lt;/P&gt;&lt;P class="MsoNormal"&gt;The ISR doesn’t work when I start writing. (after sending one byte It doesn’t enter to the ISR )&lt;/P&gt;&lt;P class="MsoNormal"&gt;Can You see if there is something missing in my configuration.&lt;/P&gt;&lt;P class="MsoNormal"&gt;Michael David.&lt;/P&gt;&lt;P class="MsoNormal"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="background: yellow; mso-highlight: yellow;"&gt;Here is my UART Configuration:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #7f0055;"&gt;void&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&lt;STRONG&gt;Uart_InitUart&lt;/STRONG&gt;(&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #7f0055;"&gt;void&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;uint_16&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&lt;SPAN style="background: silver; mso-highlight: silver;"&gt;ubd&lt;/SPAN&gt;,temp0,temp1,brfa;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;uint_32&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;sysclk = BSP_SYSTEM_CLOCK, baud0 = 57600;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;//UART configuration&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SCGC4 |= (SIM_SCGC4_UART0_MASK);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR14 = PORT_PCR_MUX(3);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;//TX 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR15 = PORT_PCR_MUX(3);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;//RX 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_C2_REG(UART0_BASE_PTR) &amp;amp;= ~(UART_C2_TE_MASK | UART_C2_RE_MASK);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* Configure the UART for 8-bit mode, no parity */&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* We need all default settings, so entire register is cleared */&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_C1_REG(UART0_BASE_PTR) = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* Calculate baud settings */&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="background: silver; mso-highlight: silver;"&gt;ubd&lt;/SPAN&gt; = (&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;uint_16&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;)((sysclk*1000)/(baud0 * 16));&lt;/SPAN&gt;&lt;SPAN style="color: #000000; font-family: 'Courier New'; font-size: 13px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* Save off the current value of the UARTx_BDH except for the SBR */&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp0 = UART_BDH_REG(UART0_BASE_PTR) &amp;amp; ~(UART_BDH_SBR(0x1F));&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_BDH_REG(UART0_BASE_PTR) = temp0 |&amp;nbsp; UART_BDH_SBR(((&lt;SPAN style="background: silver; mso-highlight: silver;"&gt;ubd&lt;/SPAN&gt; &amp;amp; 0x1F00) &amp;gt;&amp;gt; 8));&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_BDL_REG(UART0_BASE_PTR) = (&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;uint_8&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;)(&lt;SPAN style="background: silver; mso-highlight: silver;"&gt;ubd&lt;/SPAN&gt; &amp;amp; UART_BDL_SBR_MASK);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* Determine if a fractional divider is needed to get closer to the baud rate */&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; brfa = (((sysclk*32000)/(baud0 * 16)) - (&lt;SPAN style="background: silver; mso-highlight: silver;"&gt;ubd&lt;/SPAN&gt; * 32));&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* Save off the current value of the UARTx_C4 register except for the BRFA */&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp0 = UART_C4_REG(UART0_BASE_PTR) &amp;amp; ~(UART_C4_BRFA(0x1F));&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_C4_REG(UART0_BASE_PTR) = temp0 |&amp;nbsp; UART_C4_BRFA(brfa);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* Enable receiver */&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_C2_REG(UART0_BASE_PTR) |= ( UART_C2_RE_MASK | UART_C2_TE_MASK);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;// configure ISR&amp;nbsp; - UART 0 IRQ - 45&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVICICPR1 |= (1&amp;lt;&amp;lt;13);&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;//45 MOD 32&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVICISER1 |= (1&amp;lt;&amp;lt;13);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVICIP45 = 0x30;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;// priority 3. out of 15&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Isr_InitIsr(&lt;/SPAN&gt;&lt;EM&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;INT_UART0_RX_TX&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;, Uart_RxTx0_Isr);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="background: yellow; mso-highlight: yellow;"&gt;Here is the Isr_InitIsr function:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #7f0055;"&gt;void&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&lt;STRONG&gt;Isr_InitIsr&lt;/STRONG&gt;(&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;_mqx_uint&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;isr,&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #7f0055;"&gt;void&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;(_CODE_PTR_ isr_func)(&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;pointer&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;))&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;MY_ISR_STRUCT_PTR&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp; isr_ptr;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isr_ptr = _mem_alloc_zero((&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;_mem_size&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;)&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #7f0055;"&gt;sizeof&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;MY_ISR_STRUCT&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;));&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isr_ptr-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;TICK_COUNT&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp; = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isr_ptr-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;OLD_ISR_DATA&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;=&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #642880;"&gt;_int_get_isr_data&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;(isr);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isr_ptr-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;OLD_ISR&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #642880;"&gt;_int_get_isr&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;(isr);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #642880;"&gt;_int_install_isr&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;(isr, isr_func, isr_ptr);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 04 Oct 2011 22:16:52 GMT</pubDate>
    <dc:creator>MichaelDavid</dc:creator>
    <dc:date>2011-10-04T22:16:52Z</dc:date>
    <item>
      <title>controlling UART ISR directly with (bypassing) MQX</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/controlling-UART-ISR-directly-with-bypassing-MQX/m-p/171781#M1240</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="MsoNormal"&gt;I'm trying to configure a UART ISR.&lt;/P&gt;&lt;P class="MsoNormal"&gt;I using MQX, but here I want to control the ISR directly.&lt;/P&gt;&lt;P class="MsoNormal"&gt;The ISR doesn’t work when I start writing. (after sending one byte It doesn’t enter to the ISR )&lt;/P&gt;&lt;P class="MsoNormal"&gt;Can You see if there is something missing in my configuration.&lt;/P&gt;&lt;P class="MsoNormal"&gt;Michael David.&lt;/P&gt;&lt;P class="MsoNormal"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="background: yellow; mso-highlight: yellow;"&gt;Here is my UART Configuration:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #7f0055;"&gt;void&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&lt;STRONG&gt;Uart_InitUart&lt;/STRONG&gt;(&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #7f0055;"&gt;void&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;uint_16&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&lt;SPAN style="background: silver; mso-highlight: silver;"&gt;ubd&lt;/SPAN&gt;,temp0,temp1,brfa;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;uint_32&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;sysclk = BSP_SYSTEM_CLOCK, baud0 = 57600;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;//UART configuration&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SCGC4 |= (SIM_SCGC4_UART0_MASK);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR14 = PORT_PCR_MUX(3);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;//TX 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR15 = PORT_PCR_MUX(3);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;//RX 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_C2_REG(UART0_BASE_PTR) &amp;amp;= ~(UART_C2_TE_MASK | UART_C2_RE_MASK);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* Configure the UART for 8-bit mode, no parity */&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* We need all default settings, so entire register is cleared */&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_C1_REG(UART0_BASE_PTR) = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* Calculate baud settings */&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="background: silver; mso-highlight: silver;"&gt;ubd&lt;/SPAN&gt; = (&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;uint_16&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;)((sysclk*1000)/(baud0 * 16));&lt;/SPAN&gt;&lt;SPAN style="color: #000000; font-family: 'Courier New'; font-size: 13px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* Save off the current value of the UARTx_BDH except for the SBR */&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp0 = UART_BDH_REG(UART0_BASE_PTR) &amp;amp; ~(UART_BDH_SBR(0x1F));&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_BDH_REG(UART0_BASE_PTR) = temp0 |&amp;nbsp; UART_BDH_SBR(((&lt;SPAN style="background: silver; mso-highlight: silver;"&gt;ubd&lt;/SPAN&gt; &amp;amp; 0x1F00) &amp;gt;&amp;gt; 8));&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_BDL_REG(UART0_BASE_PTR) = (&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;uint_8&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;)(&lt;SPAN style="background: silver; mso-highlight: silver;"&gt;ubd&lt;/SPAN&gt; &amp;amp; UART_BDL_SBR_MASK);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* Determine if a fractional divider is needed to get closer to the baud rate */&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; brfa = (((sysclk*32000)/(baud0 * 16)) - (&lt;SPAN style="background: silver; mso-highlight: silver;"&gt;ubd&lt;/SPAN&gt; * 32));&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* Save off the current value of the UARTx_C4 register except for the BRFA */&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp0 = UART_C4_REG(UART0_BASE_PTR) &amp;amp; ~(UART_C4_BRFA(0x1F));&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_C4_REG(UART0_BASE_PTR) = temp0 |&amp;nbsp; UART_C4_BRFA(brfa);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* Enable receiver */&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_C2_REG(UART0_BASE_PTR) |= ( UART_C2_RE_MASK | UART_C2_TE_MASK);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;// configure ISR&amp;nbsp; - UART 0 IRQ - 45&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVICICPR1 |= (1&amp;lt;&amp;lt;13);&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;//45 MOD 32&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVICISER1 |= (1&amp;lt;&amp;lt;13);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVICIP45 = 0x30;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;// priority 3. out of 15&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Isr_InitIsr(&lt;/SPAN&gt;&lt;EM&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;INT_UART0_RX_TX&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;, Uart_RxTx0_Isr);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="background: yellow; mso-highlight: yellow;"&gt;Here is the Isr_InitIsr function:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #7f0055;"&gt;void&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&lt;STRONG&gt;Isr_InitIsr&lt;/STRONG&gt;(&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;_mqx_uint&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;isr,&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #7f0055;"&gt;void&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;(_CODE_PTR_ isr_func)(&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;pointer&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;))&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;MY_ISR_STRUCT_PTR&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp; isr_ptr;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isr_ptr = _mem_alloc_zero((&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;_mem_size&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;)&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #7f0055;"&gt;sizeof&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #005032;"&gt;MY_ISR_STRUCT&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;));&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isr_ptr-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;TICK_COUNT&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp; = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isr_ptr-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;OLD_ISR_DATA&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;=&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #642880;"&gt;_int_get_isr_data&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;(isr);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isr_ptr-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;OLD_ISR&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #642880;"&gt;_int_get_isr&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;(isr);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: #642880;"&gt;_int_install_isr&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;(isr, isr_func, isr_ptr);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 04 Oct 2011 22:16:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/controlling-UART-ISR-directly-with-bypassing-MQX/m-p/171781#M1240</guid>
      <dc:creator>MichaelDavid</dc:creator>
      <dc:date>2011-10-04T22:16:52Z</dc:date>
    </item>
    <item>
      <title>Re: controlling UART ISR directly with (bypassing) MQX</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/controlling-UART-ISR-directly-with-bypassing-MQX/m-p/171782#M1241</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;here is the solution:&lt;/P&gt;&lt;PRE&gt;void Uart_InitUart(void){ uint_32 ubd0,ubd1,ubd3,temp0,temp1,temp3,brfa; uint_32 sysclk = BSP_SYSTEM_CLOCK,busclk = BSP_BUS_CLOCK,  baud0 = 115200, baud13 = 57600; //UART configuration SIM_SCGC4 |= (SIM_SCGC4_UART0_MASK | SIM_SCGC4_UART1_MASK | SIM_SCGC4_UART3_MASK);  PORTA_PCR14 = PORT_PCR_MUX(3);      //TX 0  PORTA_PCR15 = PORT_PCR_MUX(3);      //RX 0  PORTC_PCR4  = PORT_PCR_MUX(3);      //TX 1  PORTC_PCR3  = PORT_PCR_MUX(3);      //RX 1  PORTB_PCR11 = PORT_PCR_MUX(3);      //TX 3  PORTB_PCR10 = PORT_PCR_MUX(3);      //RX 3  UART_C2_REG(UART0_BASE_PTR) &amp;amp;= ~(UART_C2_TE_MASK | UART_C2_RE_MASK); UART_C2_REG(UART1_BASE_PTR) &amp;amp;= ~(UART_C2_TE_MASK | UART_C2_RE_MASK); UART_C2_REG(UART3_BASE_PTR) &amp;amp;= ~(UART_C2_TE_MASK | UART_C2_RE_MASK); /* Configure the UART for 8-bit mode, no parity */ /* We need all default settings, so entire register is cleared */ UART_C1_REG(UART0_BASE_PTR) = 0; UART_C1_REG(UART1_BASE_PTR) = 0; UART_C1_REG(UART3_BASE_PTR) = 0; /* Calculate baud settings */ //ubd = (uint_32)((sysclk*1000)/(baud0 * 16)); ubd0 = (sysclk + 8 * baud0)/(16 * baud0); ubd1 = (sysclk + 8 * baud13)/(16 * baud13); ubd3 = (busclk + 8 * baud13)/(16 * baud13);   /* Save off the current value of the UARTx_BDH except for the SBR */ temp0 = UART_BDH_REG(UART0_BASE_PTR) &amp;amp; ~(UART_BDH_SBR(0x1F)); temp1 = UART_BDH_REG(UART1_BASE_PTR) &amp;amp; ~(UART_BDH_SBR(0x1F)); temp3 = UART_BDH_REG(UART3_BASE_PTR) &amp;amp; ~(UART_BDH_SBR(0x1F));  UART_BDH_REG(UART0_BASE_PTR) = temp0 |  UART_BDH_SBR(((ubd0 &amp;amp; 0x1F00) &amp;gt;&amp;gt; 8)); UART_BDH_REG(UART1_BASE_PTR) = temp1 |  UART_BDH_SBR(((ubd1 &amp;amp; 0x1F00) &amp;gt;&amp;gt; 8)); UART_BDH_REG(UART3_BASE_PTR) = temp3 |  UART_BDH_SBR(((ubd3 &amp;amp; 0x1F00) &amp;gt;&amp;gt; 8)); UART_BDL_REG(UART0_BASE_PTR) = (uint_8)(ubd0 &amp;amp; UART_BDL_SBR_MASK); UART_BDL_REG(UART1_BASE_PTR) = (uint_8)(ubd1 &amp;amp; UART_BDL_SBR_MASK); UART_BDL_REG(UART3_BASE_PTR) = (uint_8)(ubd3 &amp;amp; UART_BDL_SBR_MASK);  /* Determine if a fractional divider is needed to get closer to the baud rate */ //brfa = (((sysclk*32000)/(baud0 * 16)) - (ubd * 32));  /* Save off the current value of the UARTx_C4 register except for the BRFA */ //temp0 = UART_C4_REG(UART0_BASE_PTR) &amp;amp; ~(UART_C4_BRFA(0x1F)); //temp1 = UART_C4_REG(UART1_BASE_PTR) &amp;amp; ~(UART_C4_BRFA(0x1F));  //UART_C4_REG(UART0_BASE_PTR) = temp0 |  UART_C4_BRFA(brfa); //UART_C4_REG(UART0_BASE_PTR) = temp1 |  UART_C4_BRFA(brfa);  Isr_InitIsr(INT_UART0_RX_TX, Uart_RxTx0_Isr); Isr_InitIsr(INT_UART1_RX_TX, Uart_RxTx1_Isr); Isr_InitIsr(INT_UART3_RX_TX, Uart_RxTx3_Isr);  // configure ISR  - UART 0 IRQ - 45 NVICICPR1 |= (1&amp;lt;&amp;lt;13); //45 MOD 32 NVICISER1 |= (1&amp;lt;&amp;lt;13); NVICIP45 = 0x30;  // priority 3. out of 15  // configure ISR  - UART 1 IRQ - 47 NVICICPR1 |= (1&amp;lt;&amp;lt;15); //47 MOD 32 NVICISER1 |= (1&amp;lt;&amp;lt;15); NVICIP47 = 0x30;  // priority 3. out of 15  // configure ISR  - UART 3 IRQ - 51 NVICICPR1 |= (1&amp;lt;&amp;lt;19); //51 MOD 32 NVICISER1 |= (1&amp;lt;&amp;lt;19); NVICIP51 = 0x30;  // priority 3. out of 15   // clear ISR flags  temp0 = UART_S1_REG(UART0_BASE_PTR); temp1 = UART_S1_REG(UART1_BASE_PTR); temp3 = UART_S1_REG(UART3_BASE_PTR); /* Enable receiver */ UART_C2_REG(UART0_BASE_PTR) |= ( UART_C2_RE_MASK | UART_C2_TE_MASK |   UART_C2_RIE_MASK | UART_C2_TIE_MASK); UART_C2_REG(UART1_BASE_PTR) |= ( UART_C2_RE_MASK | UART_C2_TE_MASK |   UART_C2_RIE_MASK | UART_C2_TIE_MASK); UART_C2_REG(UART3_BASE_PTR) |= ( UART_C2_RE_MASK | UART_C2_TE_MASK |    UART_C2_RIE_MASK | UART_C2_TIE_MASK);  }&lt;/PRE&gt;&lt;PRE&gt;void Isr_InitIsr(_mqx_uint isr, void (_CODE_PTR_ isr_func)(pointer)){ MY_ISR_STRUCT_PTR  isr_ptr;  isr_ptr = _mem_alloc_zero((_mem_size)sizeof(MY_ISR_STRUCT));  isr_ptr-&amp;gt;TICK_COUNT   = 0; isr_ptr-&amp;gt;OLD_ISR_DATA = _int_get_isr_data(isr); isr_ptr-&amp;gt;OLD_ISR      = _int_get_isr(isr);  _int_install_isr(isr, isr_func, isr_ptr);}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;void Uart_RxTx0_Isr(pointer user_isr_ptr){ MY_ISR_STRUCT_PTR  isr_ptr; uint_16 temp; isr_ptr = (MY_ISR_STRUCT_PTR)user_isr_ptr; isr_ptr-&amp;gt;TICK_COUNT++;  // receive routine temp = UART_S1_REG(UART0_BASE_PTR); if (temp &amp;amp; UART_S1_RDRF_MASK) {  if (m_rx0Len &amp;lt; UART_BUF)   rx0Buf[m_rx0Len++] = UART_D_REG(UART0_BASE_PTR); } // transmit routine else if (temp &amp;amp; UART_S1_TDRE_MASK) {  if ((m_tx0Sent &amp;lt; m_tx0Len) &amp;amp;&amp;amp; (m_tx0Sent &amp;lt; UART_BUF))  {   UART_D_REG(UART0_BASE_PTR) = tx0Buf[m_tx0Sent++];  }  else  {   // stop transmission   UART_C2_REG(UART0_BASE_PTR) &amp;amp;= ~(UART_C2_TIE_MASK);  } }}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 09:20:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/controlling-UART-ISR-directly-with-bypassing-MQX/m-p/171782#M1241</guid>
      <dc:creator>MichaelDavid</dc:creator>
      <dc:date>2020-10-29T09:20:28Z</dc:date>
    </item>
    <item>
      <title>Re: controlling UART ISR directly with (bypassing) MQX</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/controlling-UART-ISR-directly-with-bypassing-MQX/m-p/171783#M1242</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;When Initializing I wrote :&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;NVICIP45 = 0x30;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;// priority 3. out of 15&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;this turn to be interfering with the MQX kernal , changing it to 10 , (0xA0) solved the issue.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 25 Nov 2011 05:29:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/controlling-UART-ISR-directly-with-bypassing-MQX/m-p/171783#M1242</guid>
      <dc:creator>MichaelDavid</dc:creator>
      <dc:date>2011-11-25T05:29:36Z</dc:date>
    </item>
    <item>
      <title>Re: controlling UART ISR directly with (bypassing) MQX</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/controlling-UART-ISR-directly-with-bypassing-MQX/m-p/171784#M1243</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HI&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I noticed in the isr you wrote above you are using a uint16 temp var to read the S1 register. Does this have any effect since the UART regs are all 8 bit?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thanks~&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 02 Sep 2012 23:07:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/controlling-UART-ISR-directly-with-bypassing-MQX/m-p/171784#M1243</guid>
      <dc:creator>crezyoz</dc:creator>
      <dc:date>2012-09-02T23:07:33Z</dc:date>
    </item>
  </channel>
</rss>

