<?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>ColdFire/68K Microcontrollers and ProcessorsのトピックColdfire 5208 UART interrupt</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Coldfire-5208-UART-interrupt/m-p/199477#M9076</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello all.&lt;/P&gt;&lt;P&gt;I am trying to connect a PC and coldfire 5208 EVB by using UART module (it is interrupt-driven) in coldfire 5208.&lt;/P&gt;&lt;P&gt;The message received from the PC to coldfire 5208 is not correct.&lt;/P&gt;&lt;P&gt;The problem is PC runs in the interrupt service routine and can not go back to main function.&lt;/P&gt;&lt;P&gt;The interrupt source number of UART0 in coldfire 5208 is 26, and its interrupt vector number is 90.&lt;/P&gt;&lt;P&gt;My IDE is codewarrior 7.0.&lt;/P&gt;&lt;P&gt;The following is my code and please help me check it. Thank you!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In exceptions.c:&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;extern void COMM_INT(void);&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;asm_exception_handler,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; 89 (0x164) Device-specific interrupts */&lt;BR /&gt;COMM_INT,&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; 90 (0x168) Device-specific interrupts */&lt;BR /&gt;asm_exception_handler,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; 91 (0x16C) Device-specific interrupts */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;--------------------------COMM_INT function-----------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void COMM_INT(void)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; MCF_INTC_IMRL = 0xFBFFFFFF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ((MCF_UART0_UISR &amp;amp; 0x02) == 2){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((MCF_UART0_USR &amp;amp; MCF_UART_USR_RXRDY)){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; if (Rxidx &amp;gt;40) Rxidx = 0;&lt;BR /&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; COM_RX_buf[Rxidx] = MCF_UART0_URB;&lt;/P&gt;&lt;P&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; Rxidx++; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;asm&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&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; move.w&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #0x2300,sr&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_INTC_IMRL = 0xFBFFFFFF;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_INTC_CLMASK = 0x03;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_INTC_SLMASK = 0x03;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;RX1_DATA_RDY=1;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------interrupt initialization-----------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void Ini_int_UART(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_INTC_IMRH = 0xffffffff;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_INTC_IMRL = 0xFBFFFFFF;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_INTC_ICR26 = 4;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_INTC_ICONFIG = 0x1020;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_INTC_CLMASK = 0x03;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_INTC_SLMASK = 0x03;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Interrupt&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Don't Mask all UART interrupts&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UIMR(0) = 0x02;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;--------------------------------------------------UART initialization ----------------------------------------------------&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void uart_init(int channel, unsigned long systemClockKHz, unsigned long baudRate)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Initialize UART for serial communications&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;register uint16 ubgs;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Reset Transmitter&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UCR(channel) = MCF_UART_UCR_RESET_TX;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Reset Receiver&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UCR(channel) = MCF_UART_UCR_RESET_RX;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Reset Mode Register&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UCR(channel) = MCF_UART_UCR_RESET_MR;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * No parity, 8-bits per character&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UMR(channel) = (0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UMR_PM_NONE&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UMR_BC_8 );&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * No echo or loopback, 1 stop bit&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UMR(channel) = (0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UMR_CM_NORMAL&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UMR_SB_STOP_BITS_1);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //MCF_UART_UMR(channel) = (0|MCF_UART_UMR_RXIRQ);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Set Rx and Tx baud by SYSTEM CLOCK&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UCSR(channel) = (0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UCSR_RCS_SYS_CLK&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UCSR_TCS_SYS_CLK);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_UART_UIMR(0) = 0x02;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Calculate baud settings&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ubgs = (uint16)((systemClockKHz * 1000)/(baudRate * 32));&lt;BR /&gt;&lt;BR /&gt;#if UART_SUPPORT_TYPE==UART_DIVIDER || UART_SUPPORT_TYPE == UART_5407&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UDU(channel) = (uint8)((ubgs &amp;amp; 0xFF00) &amp;gt;&amp;gt; 8);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UDL(channel) = (uint8)(ubgs &amp;amp; 0x00FF);&lt;BR /&gt;#else /* UART_SUPPORT_TYPE!=UART_DIVIDER */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UBG1(channel) = (uint8)((ubgs &amp;amp; 0xFF00) &amp;gt;&amp;gt; 8);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UBG2(channel) = (uint8)(ubgs &amp;amp; 0x00FF);&lt;BR /&gt;#endif /* UART_SUPPORT_TYPE==UART_DIVIDER */&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Enable receiver and transmitter&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UCR(channel) = (0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UCR_TX_ENABLED&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UCR_RX_ENABLED);&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 12 May 2010 14:00:05 GMT</pubDate>
    <dc:creator>Tsai</dc:creator>
    <dc:date>2010-05-12T14:00:05Z</dc:date>
    <item>
      <title>Coldfire 5208 UART interrupt</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Coldfire-5208-UART-interrupt/m-p/199477#M9076</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello all.&lt;/P&gt;&lt;P&gt;I am trying to connect a PC and coldfire 5208 EVB by using UART module (it is interrupt-driven) in coldfire 5208.&lt;/P&gt;&lt;P&gt;The message received from the PC to coldfire 5208 is not correct.&lt;/P&gt;&lt;P&gt;The problem is PC runs in the interrupt service routine and can not go back to main function.&lt;/P&gt;&lt;P&gt;The interrupt source number of UART0 in coldfire 5208 is 26, and its interrupt vector number is 90.&lt;/P&gt;&lt;P&gt;My IDE is codewarrior 7.0.&lt;/P&gt;&lt;P&gt;The following is my code and please help me check it. Thank you!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In exceptions.c:&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;extern void COMM_INT(void);&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;asm_exception_handler,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; 89 (0x164) Device-specific interrupts */&lt;BR /&gt;COMM_INT,&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; 90 (0x168) Device-specific interrupts */&lt;BR /&gt;asm_exception_handler,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; 91 (0x16C) Device-specific interrupts */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;--------------------------COMM_INT function-----------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void COMM_INT(void)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; MCF_INTC_IMRL = 0xFBFFFFFF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ((MCF_UART0_UISR &amp;amp; 0x02) == 2){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((MCF_UART0_USR &amp;amp; MCF_UART_USR_RXRDY)){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; if (Rxidx &amp;gt;40) Rxidx = 0;&lt;BR /&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; COM_RX_buf[Rxidx] = MCF_UART0_URB;&lt;/P&gt;&lt;P&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; Rxidx++; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;asm&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&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; move.w&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #0x2300,sr&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_INTC_IMRL = 0xFBFFFFFF;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_INTC_CLMASK = 0x03;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_INTC_SLMASK = 0x03;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;RX1_DATA_RDY=1;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------interrupt initialization-----------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void Ini_int_UART(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_INTC_IMRH = 0xffffffff;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_INTC_IMRL = 0xFBFFFFFF;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_INTC_ICR26 = 4;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_INTC_ICONFIG = 0x1020;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_INTC_CLMASK = 0x03;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_INTC_SLMASK = 0x03;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Interrupt&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Don't Mask all UART interrupts&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UIMR(0) = 0x02;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;--------------------------------------------------UART initialization ----------------------------------------------------&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void uart_init(int channel, unsigned long systemClockKHz, unsigned long baudRate)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Initialize UART for serial communications&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;register uint16 ubgs;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Reset Transmitter&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UCR(channel) = MCF_UART_UCR_RESET_TX;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Reset Receiver&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UCR(channel) = MCF_UART_UCR_RESET_RX;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Reset Mode Register&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UCR(channel) = MCF_UART_UCR_RESET_MR;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * No parity, 8-bits per character&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UMR(channel) = (0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UMR_PM_NONE&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UMR_BC_8 );&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * No echo or loopback, 1 stop bit&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UMR(channel) = (0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UMR_CM_NORMAL&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UMR_SB_STOP_BITS_1);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //MCF_UART_UMR(channel) = (0|MCF_UART_UMR_RXIRQ);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Set Rx and Tx baud by SYSTEM CLOCK&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UCSR(channel) = (0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UCSR_RCS_SYS_CLK&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UCSR_TCS_SYS_CLK);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_UART_UIMR(0) = 0x02;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Calculate baud settings&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ubgs = (uint16)((systemClockKHz * 1000)/(baudRate * 32));&lt;BR /&gt;&lt;BR /&gt;#if UART_SUPPORT_TYPE==UART_DIVIDER || UART_SUPPORT_TYPE == UART_5407&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UDU(channel) = (uint8)((ubgs &amp;amp; 0xFF00) &amp;gt;&amp;gt; 8);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UDL(channel) = (uint8)(ubgs &amp;amp; 0x00FF);&lt;BR /&gt;#else /* UART_SUPPORT_TYPE!=UART_DIVIDER */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UBG1(channel) = (uint8)((ubgs &amp;amp; 0xFF00) &amp;gt;&amp;gt; 8);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UBG2(channel) = (uint8)(ubgs &amp;amp; 0x00FF);&lt;BR /&gt;#endif /* UART_SUPPORT_TYPE==UART_DIVIDER */&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * Enable receiver and transmitter&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_UART_UCR(channel) = (0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UCR_TX_ENABLED&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| MCF_UART_UCR_RX_ENABLED);&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 12 May 2010 14:00:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Coldfire-5208-UART-interrupt/m-p/199477#M9076</guid>
      <dc:creator>Tsai</dc:creator>
      <dc:date>2010-05-12T14:00:05Z</dc:date>
    </item>
    <item>
      <title>Re: Coldfire 5208 UART interrupt</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Coldfire-5208-UART-interrupt/m-p/199478#M9077</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Sorry.&lt;/P&gt;&lt;P&gt;The problem is &lt;FONT color="#ff0000"&gt;PC(program counter)&lt;/FONT&gt; runs in the &lt;FONT color="#ff0000"&gt;interrupt service routine(exceptions.c)&lt;/FONT&gt; and can not go back to main function.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 12 May 2010 14:05:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Coldfire-5208-UART-interrupt/m-p/199478#M9077</guid>
      <dc:creator>Tsai</dc:creator>
      <dc:date>2010-05-12T14:05:14Z</dc:date>
    </item>
  </channel>
</rss>

