<?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>S12 / MagniV MicrocontrollersのトピックRe: SCI0SR1_RFRD set 0 before I read SCI0DRL'value</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SCI0SR1-RFRD-set-0-before-I-read-SCI0DRL-value/m-p/484064#M12050</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is known debugging issue.&lt;/P&gt;&lt;P&gt;The problem is that RDRF flag is cleared by reading of SCISR register followed by reading SCIDR register.&lt;/P&gt;&lt;P&gt;When we stop MCU at start of interrupt routine by breakpoint, debugger will automatically read content of registers (and memory) and this way also clear RDRF flag.&lt;/P&gt;&lt;P&gt;Solution: You have to store SCISR register value to some variable at begin of interrupt routine and place breakpoint below this command. After that you could test that variable instead SCISR register for flags.&lt;/P&gt;&lt;P&gt;So, after reaching breakpoint, you could continue in stepping over code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_1456307877579985 jive_text_macro" data-renderedposition="216_8_1192_448" jivemacro_uid="_1456307877579985"&gt;&lt;P&gt;#pragma CODE_SEG NON_BANKED&lt;/P&gt;&lt;P&gt;interrupt 20 void SCI0_Isr(void) &lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;//---------------&lt;/P&gt;&lt;P&gt;//prection against randomly flag clearing&lt;/P&gt;&lt;P&gt;unsigned char scisr1;&lt;/P&gt;&lt;P&gt;scisr1 = SCI0SR1;&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; // save status register actual status&lt;/P&gt;&lt;P&gt;//---------------&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//******************************************************************************&lt;/P&gt;&lt;P&gt;//Interrupt runtine RECEIVER part&lt;/P&gt;&lt;P&gt;//******************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//if receiver interrupt is enabled and corresponding interrupt flag is set&lt;/P&gt;&lt;P&gt;if((SCI0CR2 &amp;amp; SCI0CR2_RIE_MASK) &amp;amp;&amp;amp; ((scisr1 &amp;amp; (SCI0SR1_OR_MASK | SCI0SR1_RDRF_MASK))))&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(scisr1 &amp;amp; SCI0SR1_OR_MASK)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if overrun error do nothing/something&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (void)SCI0DRL;&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; // clear interrupt flag&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // do something&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //ninth_bit=SCI0DRH_R8;&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; //R8 is the ninth data bit received when the SCI is configured for 9-bit data format (M = 1).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sc0_data_in = SCI0DRL;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // read received character + clear interrupt flag&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;//…&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I hope it helps you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;RadekS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 24 Feb 2016 09:58:47 GMT</pubDate>
    <dc:creator>RadekS</dc:creator>
    <dc:date>2016-02-24T09:58:47Z</dc:date>
    <item>
      <title>SCI0SR1_RFRD set 0 before I read SCI0DRL'value</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SCI0SR1-RFRD-set-0-before-I-read-SCI0DRL-value/m-p/484063#M12049</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style=""&gt;&lt;/TD&gt;&lt;TD style=""&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE border="1" cellpadding="0" cellspacing="0" style="border: none;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: none;padding: 2.25pt 2.25pt 2.25pt 2.25pt;border: dashed #bbbbbb 1.0pt;" valign="bottom"&gt;&lt;P align="left" style="margin-bottom: 1.5pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;UINT8&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: none;padding: 2.25pt 2.25pt 2.25pt 2.25pt;border-left: none;border: dashed #bbbbbb 1.0pt;" valign="bottom"&gt;&lt;P align="left" style="margin-bottom: 1.5pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;xReadCH376Data( void )&amp;nbsp; /* &lt;/SPAN&gt;&lt;SPAN style="font-size: 11.5pt; font-family: 宋体;"&gt;从&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;CH376&lt;/SPAN&gt;&lt;SPAN style="font-size: 11.5pt; font-family: 宋体;"&gt;读数据&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE border="1" cellpadding="0" cellspacing="0" style="border: none;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: none;padding: 2.25pt 2.25pt 2.25pt 2.25pt;border: dashed #bbbbbb 1.0pt;" valign="bottom"&gt;&lt;P align="left" style="min-height: 8pt; padding: 0px; margin-bottom: 1.5pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt; &lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: none;padding: 2.25pt 2.25pt 2.25pt 2.25pt;border-left: none;border: dashed #bbbbbb 1.0pt;" valign="bottom"&gt;&lt;P align="left" style="margin-bottom: 1.5pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;INT8U ch;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(SCI0SR1_RDRF == 0) { /* Is the transmitter empty? */&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ch=SCI0DRL;&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp; return ch;&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left" style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;void Init_SCI0(INT16U sci_ytpe) &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #ifdef Enable_SCI_Interrupt&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //SCI0BD = BUS_CLOCK/16/BAUD; //&lt;/SPAN&gt;&lt;SPAN style="font-size: 11.5pt; font-family: 宋体;"&gt;设置&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;SCI0&lt;/SPAN&gt;&lt;SPAN style="font-size: 11.5pt; font-family: 宋体;"&gt;波特率为&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;9600&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCI0CR1 = 0x00; //&lt;/SPAN&gt;&lt;SPAN style="font-size: 11.5pt; font-family: 宋体;"&gt;设置&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;SCI0&lt;/SPAN&gt;&lt;SPAN style="font-size: 11.5pt; font-family: 宋体;"&gt;为正常模式，八位数据位，无奇偶校验&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCI0CR2 = 0x2c; //&lt;/SPAN&gt;&lt;SPAN style="font-size: 11.5pt; font-family: 宋体;"&gt;允许接收和发送数据，允许接收中断功能&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #else &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCI0CR1 = 0x00;&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCI0SR2 = 0x80; /* Switch to the alternative register set */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //SCI&lt;/SPAN&gt;&lt;SPAN style="font-size: 11.5pt; font-family: 宋体;"&gt;使用发射器禁用接收器&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCI0ASR1 = 0x83; /* Clear alternative status flags */&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCI0ACR1 = 0x00;&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCI0ACR2 = 0x00;&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCI0SR2 = 0x00; /* Switch to the normal register set */&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (void) SCI0SR1; /* Reset interrupt request flags */&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //SCI0CR2 = 0x0C; /* Disable error interrupts */&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt; //&lt;/SPAN&gt;&lt;SPAN style="font-size: 11.5pt; font-family: 宋体;"&gt;定义波特率&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;115200&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCI0CR2 |= (SCI0CR2_TE_MASK | SCI0CR2_RE_MASK);&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endif &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch(sci_ytpe) &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case InitBaud:&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCI0BD = BUS_CLOCK/16/UART_INIT_BAUDRATE;&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case WorkBaud:&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCI0BD = BUS_CLOCK/16/UART_WORK_BAUDRATE;&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left" style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;this is my code,&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;when I debug my program I found when a data is coming, RDRF register will be set 1,and SCI0DRL's value is correct.&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;But,when I clicked single step,&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;the RDRF reset,become 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;It makes me cant read what is coming in xReadData and code will be run in a dead loop. &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left" style="min-height: 8pt; padding: 0px;"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;P align="left" style="min-height: 8pt; padding: 0px;"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;P align="left"&gt;&lt;SPAN lang="EN-US" style="font-size: 11.5pt; font-family: Helvetica, sans-serif;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="141636_141636.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/121102i7DAE8408039D2226/image-size/large?v=v2&amp;amp;px=999" role="button" title="141636_141636.png" alt="141636_141636.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/53915i19C800B474B2C3BC/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="141637_141637.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/121103iB59E36728A50F762/image-size/large?v=v2&amp;amp;px=999" role="button" title="141637_141637.png" alt="141637_141637.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_2.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/53950iB77BAFCF91D9806F/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_2.png" alt="pastedImage_2.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 07:13:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SCI0SR1-RFRD-set-0-before-I-read-SCI0DRL-value/m-p/484063#M12049</guid>
      <dc:creator>xianyu</dc:creator>
      <dc:date>2016-02-24T07:13:49Z</dc:date>
    </item>
    <item>
      <title>Re: SCI0SR1_RFRD set 0 before I read SCI0DRL'value</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SCI0SR1-RFRD-set-0-before-I-read-SCI0DRL-value/m-p/484064#M12050</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is known debugging issue.&lt;/P&gt;&lt;P&gt;The problem is that RDRF flag is cleared by reading of SCISR register followed by reading SCIDR register.&lt;/P&gt;&lt;P&gt;When we stop MCU at start of interrupt routine by breakpoint, debugger will automatically read content of registers (and memory) and this way also clear RDRF flag.&lt;/P&gt;&lt;P&gt;Solution: You have to store SCISR register value to some variable at begin of interrupt routine and place breakpoint below this command. After that you could test that variable instead SCISR register for flags.&lt;/P&gt;&lt;P&gt;So, after reaching breakpoint, you could continue in stepping over code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_1456307877579985 jive_text_macro" data-renderedposition="216_8_1192_448" jivemacro_uid="_1456307877579985"&gt;&lt;P&gt;#pragma CODE_SEG NON_BANKED&lt;/P&gt;&lt;P&gt;interrupt 20 void SCI0_Isr(void) &lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;//---------------&lt;/P&gt;&lt;P&gt;//prection against randomly flag clearing&lt;/P&gt;&lt;P&gt;unsigned char scisr1;&lt;/P&gt;&lt;P&gt;scisr1 = SCI0SR1;&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; // save status register actual status&lt;/P&gt;&lt;P&gt;//---------------&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//******************************************************************************&lt;/P&gt;&lt;P&gt;//Interrupt runtine RECEIVER part&lt;/P&gt;&lt;P&gt;//******************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//if receiver interrupt is enabled and corresponding interrupt flag is set&lt;/P&gt;&lt;P&gt;if((SCI0CR2 &amp;amp; SCI0CR2_RIE_MASK) &amp;amp;&amp;amp; ((scisr1 &amp;amp; (SCI0SR1_OR_MASK | SCI0SR1_RDRF_MASK))))&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(scisr1 &amp;amp; SCI0SR1_OR_MASK)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if overrun error do nothing/something&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (void)SCI0DRL;&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; // clear interrupt flag&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // do something&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //ninth_bit=SCI0DRH_R8;&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; //R8 is the ninth data bit received when the SCI is configured for 9-bit data format (M = 1).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sc0_data_in = SCI0DRL;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // read received character + clear interrupt flag&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;//…&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I hope it helps you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;RadekS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 09:58:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SCI0SR1-RFRD-set-0-before-I-read-SCI0DRL-value/m-p/484064#M12050</guid>
      <dc:creator>RadekS</dc:creator>
      <dc:date>2016-02-24T09:58:47Z</dc:date>
    </item>
    <item>
      <title>Re: SCI0SR1_RFRD set 0 before I read SCI0DRL'value</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SCI0SR1-RFRD-set-0-before-I-read-SCI0DRL-value/m-p/484065#M12051</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Does it means when I use debugger and click single step,the data1 window's change do read SCISR1 register.&amp;nbsp; &lt;/P&gt;&lt;P&gt;That operation makes RDRF register turn to 0 and Flag be cleared.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;let me try to save SCISR1 register when the data come.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;oh It's always you&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks a lot&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Feb 2016 01:45:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SCI0SR1-RFRD-set-0-before-I-read-SCI0DRL-value/m-p/484065#M12051</guid>
      <dc:creator>xianyu</dc:creator>
      <dc:date>2016-02-25T01:45:49Z</dc:date>
    </item>
  </channel>
</rss>

