<?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: SCI TDRE &amp; TC interrupt problem 9S12DP256B</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SCI-TDRE-TC-interrupt-problem-9S12DP256B/m-p/136734#M2424</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;#define RDRF 0x20&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#define TDRE 0x80&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void SCI0_ISR(void)&lt;BR /&gt;{&lt;BR /&gt;while((SCI0SR1 &amp;amp; RDRF) == 0){} // wait&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;my_buffer [index ++]&amp;nbsp; = &amp;nbsp;SCI0DRL;&lt;/DIV&gt;&lt;DIV&gt;or,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;flags.my_sinal = 1;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;main&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;while( !&amp;nbsp;index ){}&lt;/DIV&gt;&lt;DIV&gt;or,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;while(&amp;nbsp;! flags.mysinal){}&lt;/DIV&gt;&lt;DIV&gt;or,&lt;/DIV&gt;&lt;DIV&gt;while(index &amp;lt; my_value){}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;edited by Carlos Candido&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 23 May 2006 06:52:12 GMT</pubDate>
    <dc:creator>CCandido</dc:creator>
    <dc:date>2006-05-23T06:52:12Z</dc:date>
    <item>
      <title>SCI TDRE &amp; TC interrupt problem 9S12DP256B</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SCI-TDRE-TC-interrupt-problem-9S12DP256B/m-p/136733#M2423</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have problem with TX and TDRE interrupt of SCI module. I used SCI module before without any problem but now..&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I use 9s12DP256 (T-board from elektronikladen.de), ICC12 compiler and NoICE debugger. I activate the interrupt and i checked with the debugger that even at reset, both TDRE and TC bit in SCI0SR1 are set to 1. and after activating the interrupt, program directly went to ISR but then eventhough I read the SCI0SR1 with the corresponding bit set, the flag never cleared (set to 0). I am porting uC/OS-II to the uC and want to test it with the SCI module. I made program with receive interrupt with no problem.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;here is my code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/*****************************************************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* testing TX SCI interrupt function&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* author : Leo Hendrawan&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;******************************************************************************************************/&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#include&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#define TRUE 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define FALSE 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned char flag = TRUE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#pragma interrupt_handler SCI0_ISR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void SCI0_ISR(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if(SCI0SR1 &amp;amp; 0x80) // TDRE empty&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;flag = TRUE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#pragma interrupt_handler TimerTick&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void TimerTick(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;static unsigned char tick = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TFLG1 |= 0x40; // clear interrupt flag&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TC6 = TCNT + 1250; // Compare value for 10 msec - 8 MHz&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if(++tick == 50)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;PORTB ^= 0x80;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;tick = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void main(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;char msg[] = {'F','H','W','G','T', 0x0d, 0x0a, 0x00};&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned char i = 0, len;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;// PORTB init - connected to LEDs&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;DDRB = 0xFF; // PORTB as output&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;PORTB = 0xFF; // init: all LED OFF&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;// SCI0 initialization&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SCI0BD = 52 &amp;amp; 0x1fff; // 13-bits baudrate divider - 9600bps&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SCI0CR1 = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SCI0CR2 = 0x8C; // TDRE empty interrupt, Transmit &amp;amp; Receive enable&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;// Timer 6 initialization&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TIOS |= 0x40; // TC6 is output compare.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TIE |= 0x40; // TC6 triggers interrupt.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TC6 = TCNT + 1250; // Compare value for 10 msec - 8 MHz&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TSCR2 |= 0x06; // Timer prescaler divide by 64.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TSCR1 |= 0xA0; // Enable Timer, timer freeze in BDM&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;len = strlen(msg);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;asm("cli"); // enable interrupt&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;while(1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SCI0DRL = msg[i];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;flag = FALSE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;while(flag == FALSE);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if(++i == len) i = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;anybody knows what is my problem?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;thanks...&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 May 2006 21:18:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SCI-TDRE-TC-interrupt-problem-9S12DP256B/m-p/136733#M2423</guid>
      <dc:creator>LBdgWgt</dc:creator>
      <dc:date>2006-05-22T21:18:08Z</dc:date>
    </item>
    <item>
      <title>Re: SCI TDRE &amp; TC interrupt problem 9S12DP256B</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SCI-TDRE-TC-interrupt-problem-9S12DP256B/m-p/136734#M2424</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;#define RDRF 0x20&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#define TDRE 0x80&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void SCI0_ISR(void)&lt;BR /&gt;{&lt;BR /&gt;while((SCI0SR1 &amp;amp; RDRF) == 0){} // wait&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;my_buffer [index ++]&amp;nbsp; = &amp;nbsp;SCI0DRL;&lt;/DIV&gt;&lt;DIV&gt;or,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;flags.my_sinal = 1;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;main&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;while( !&amp;nbsp;index ){}&lt;/DIV&gt;&lt;DIV&gt;or,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;while(&amp;nbsp;! flags.mysinal){}&lt;/DIV&gt;&lt;DIV&gt;or,&lt;/DIV&gt;&lt;DIV&gt;while(index &amp;lt; my_value){}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;edited by Carlos Candido&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 May 2006 06:52:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SCI-TDRE-TC-interrupt-problem-9S12DP256B/m-p/136734#M2424</guid>
      <dc:creator>CCandido</dc:creator>
      <dc:date>2006-05-23T06:52:12Z</dc:date>
    </item>
  </channel>
</rss>

