<?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>8-bit Microcontrollers中的主题 Re: Oddly behaving SCI GT16A</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Oddly-behaving-SCI-GT16A/m-p/159623#M9509</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It is possible that, whatever you are using to generate the ASCI data is sending&amp;nbsp;seven data bits, plus&amp;nbsp;a parity bit, in this case even parity.&amp;nbsp; If this theory is correct, the numerals '0', '3', '5', '6' and '9' should be correctly received.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would consider that the baud rate error at 115200 bits per second may be somewhat on the high side for some applications.&amp;nbsp; Other choices of ICG multiplier value, while&amp;nbsp;producing a lower bus frequency, can produce significantly better baud rate accuracy.&amp;nbsp; Compare results&amp;nbsp;with a bus frequency of 14.68 MHz (MFD setting to give N = 14).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Other crystal frequencies are capable of producing exact baud rates, by generating&amp;nbsp;a bus frequency of 14.7456MHz.&amp;nbsp; Commonly available crystal frequencies would be 2.4576, 3.3864 or 4.9152 MHz.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also note that the SCI receive ISR must occupy&amp;nbsp;less than SCIBD * 10 cycles, to prevent over-run by the next character.&amp;nbsp; This may well prove impossible with a maximum limit less than 80-100 cycles available,&amp;nbsp;with a baud rate of 115200 bits per second.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Mac&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 03 May 2012 21:50:48 GMT</pubDate>
    <dc:creator>bigmac</dc:creator>
    <dc:date>2012-05-03T21:50:48Z</dc:date>
    <item>
      <title>Oddly behaving SCI GT16A</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Oddly-behaving-SCI-GT16A/m-p/159622#M9508</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;At the moment my SCI is only receiving certain characters and I can't figure out why. For example when I send '1' the debugger shows that the micro receiver 0xb1. I have gone through the code and am hoping that someone else has had this happen before and can help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The code:&lt;/P&gt;&lt;PRE&gt;#include &amp;lt;hidef.h&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // For EnableInterrupts macro#include "derivative.h" // Include peripheral declarations//****** Initialising Functions *******void SCI_initialise (void);void CLK_Initialise (void);//******* Interrupt Functions *********void SCI_interrupt (void);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //********** Motor Variables ********** volatile int PacketReceiveIndex = 0;char PacketReceive[4];volatile int DataReceived = 0;//*********** Main Routine ************void main(void) {&amp;nbsp; SOPT&amp;nbsp; = 0x53;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Disable Computer Operating Properly (COP) watchdog&amp;nbsp;&amp;nbsp;&amp;nbsp; CLK_Initialise ();&amp;nbsp; SCI_initialise();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm ("CLI");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable Interrupts&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(;;) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (DataReceived == 1) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataReceived = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // reset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; }}//-------------------------------------------------------------------void CLK_Initialise (void){&amp;nbsp;&amp;nbsp;&amp;nbsp; ICGC2 = 0x70;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Sets MFD divider&amp;nbsp; ICGC1 = 0x38;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 32kHz -&amp;gt; 18.874368MHz bus rate&amp;nbsp; while (ICGS1_LOCK==0);&amp;nbsp;&amp;nbsp;&amp;nbsp; // Loop until PLL locks}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //-------------------------------------------------------------------interrupt 20// Always receive 4 bytesvoid SCI_interrupt (void) {&amp;nbsp; unsigned char ackn;&amp;nbsp;&amp;nbsp;&amp;nbsp; ackn = SCI2S1;&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; //Acknowledge the interrupt&amp;nbsp;&amp;nbsp;&amp;nbsp; PacketReceive[PacketReceiveIndex] = SCI2D; // Read the incoming data&amp;nbsp; PacketReceiveIndex++;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Increment the counter&amp;nbsp;&amp;nbsp;&amp;nbsp; if (PacketReceiveIndex == 4 ) {&amp;nbsp;&amp;nbsp;&amp;nbsp; PacketReceiveIndex = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Reset to allow for new data to come in&amp;nbsp;&amp;nbsp;&amp;nbsp; DataReceived = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Indicate the data has been received&amp;nbsp; }&amp;nbsp; }//--------------------------------------------------------------------void SCI_initialise (void) {&amp;nbsp; SCI2BDH = 0x00;&amp;nbsp;&amp;nbsp; // Serial baud rate divider&amp;nbsp; SCI2BDL = 123;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Serial baud rate divisor for 9600 (122.88)&amp;nbsp; //SCI2BDL = 61;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Serial baud rate divisor for 19200 (61.44)&amp;nbsp; //SCI2BDL = 10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Serial baud rate divisor for 115200 (10.24)&amp;nbsp; SCI2C1&amp;nbsp; = 0x00;&amp;nbsp;&amp;nbsp; // Serial register 1 setup&amp;nbsp; SCI2C2&amp;nbsp; = 0x2C;&amp;nbsp;&amp;nbsp; // Serial register 2 setup&amp;nbsp;&amp;nbsp;&amp;nbsp; /* SCI2C2 setup: TIE&amp;nbsp;&amp;nbsp; = 0 transmitter interrupt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - disabled&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; TCIE&amp;nbsp; = 0 transmission complete interrupt- disabled&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; RIE&amp;nbsp;&amp;nbsp; = 1 receive interrupt&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; - enabled&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; ILIE&amp;nbsp; = 0 idle line interrupt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - disabled&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; TE&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1 transmitter&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; - enabled&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; RE&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1 receiver&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; - enabled&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; RWU&amp;nbsp;&amp;nbsp; = 0 receiver wake up&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; - disabled&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; SBK&amp;nbsp;&amp;nbsp; = 0 send break bit&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; - disabled&amp;nbsp; */}//--------------------------------------------------------------------&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;Thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 09:05:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Oddly-behaving-SCI-GT16A/m-p/159622#M9508</guid>
      <dc:creator>woohoo</dc:creator>
      <dc:date>2020-10-29T09:05:04Z</dc:date>
    </item>
    <item>
      <title>Re: Oddly behaving SCI GT16A</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Oddly-behaving-SCI-GT16A/m-p/159623#M9509</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It is possible that, whatever you are using to generate the ASCI data is sending&amp;nbsp;seven data bits, plus&amp;nbsp;a parity bit, in this case even parity.&amp;nbsp; If this theory is correct, the numerals '0', '3', '5', '6' and '9' should be correctly received.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would consider that the baud rate error at 115200 bits per second may be somewhat on the high side for some applications.&amp;nbsp; Other choices of ICG multiplier value, while&amp;nbsp;producing a lower bus frequency, can produce significantly better baud rate accuracy.&amp;nbsp; Compare results&amp;nbsp;with a bus frequency of 14.68 MHz (MFD setting to give N = 14).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Other crystal frequencies are capable of producing exact baud rates, by generating&amp;nbsp;a bus frequency of 14.7456MHz.&amp;nbsp; Commonly available crystal frequencies would be 2.4576, 3.3864 or 4.9152 MHz.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also note that the SCI receive ISR must occupy&amp;nbsp;less than SCIBD * 10 cycles, to prevent over-run by the next character.&amp;nbsp; This may well prove impossible with a maximum limit less than 80-100 cycles available,&amp;nbsp;with a baud rate of 115200 bits per second.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Mac&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2012 21:50:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Oddly-behaving-SCI-GT16A/m-p/159623#M9509</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2012-05-03T21:50:48Z</dc:date>
    </item>
  </channel>
</rss>

