<?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 Max serial buffer AsynchroSerial HCS08 in Processor Expert Software</title>
    <link>https://community.nxp.com/t5/Processor-Expert-Software/Max-serial-buffer-AsynchroSerial-HCS08/m-p/825087#M4220</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: #212121; background-color: #ffffff; font-size: 16px;"&gt;Hi. &lt;SPAN&gt;I think I found a bug in the serial buffer declaration on an hcs08. Input/Output buffer sizes have an admissible range from 0 to 65535 byte so ,in my project (for compatibility with standard modbus, max registers readable is 125 --&amp;gt; 257&amp;nbsp; byte), i've set 260 byte. After this, during the communication, sometimes the mcu resets!!. So i've find in the processorExpert's library this:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #212121; background-color: #ffffff; font-size: 16px;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;byte MODBUS_SLAVE_RecvChar(MODBUS_SLAVE_TComData *Chr)&lt;BR /&gt;{&lt;BR /&gt; byte Result = ERR_OK; /* Prepare default error code */&lt;/P&gt;&lt;P&gt;if (MODBUS_SLAVE_InpLen &amp;gt; 0U) { /* Is number of received chars greater than 0? */&lt;BR /&gt; EnterCritical(); /* Save the PS register */&lt;BR /&gt; MODBUS_SLAVE_InpLen--; /* Decrease number of received chars */&lt;BR /&gt; *Chr = InpBuffer[&lt;EM&gt;&lt;STRONG&gt;InpIndxR&lt;/STRONG&gt;&lt;/EM&gt;]; /* Received char */&lt;BR /&gt; if (++InpIndxR &amp;gt;= MODBUS_SLAVE_INP_BUF_SIZE) { /* Is the index out of the buffer? */&lt;BR /&gt; InpIndxR = 0U; /* Set the index to the start of the buffer */&lt;BR /&gt; }&lt;BR /&gt; Result = (byte)((SerFlag &amp;amp; (OVERRUN_ERR|COMMON_ERR|FULL_RX)) ? ERR_COMMON : ERR_OK);&lt;BR /&gt; SerFlag &amp;amp;= (byte)(~(byte)(OVERRUN_ERR|COMMON_ERR|FULL_RX|CHAR_IN_RX)); /* Clear all errors in the status variable */&lt;BR /&gt; ExitCritical(); /* Restore the PS register */&lt;BR /&gt; } else {&lt;BR /&gt; return ERR_RXEMPTY; /* Receiver is empty */&lt;BR /&gt; }&lt;BR /&gt; return Result; /* Return error code */&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and InpIndx and other variables are &lt;EM&gt;&lt;STRONG&gt;BYTES&lt;/STRONG&gt;&lt;/EM&gt;!!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;byte&lt;/STRONG&gt;&lt;/EM&gt; MODBUS_SLAVE_InpLen;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Length of the input buffer content */&lt;BR /&gt;static &lt;EM&gt;&lt;STRONG&gt;byte&lt;/STRONG&gt;&lt;/EM&gt; InpIndxR;&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; /* Index for reading from input buffer */&lt;BR /&gt;static &lt;EM&gt;&lt;STRONG&gt;byte&lt;/STRONG&gt;&lt;/EM&gt; InpIndxW; &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;/* Index for writing to input buffer */&lt;BR /&gt;static MODBUS_SLAVE_TComData InpBuffer[MODBUS_SLAVE_INP_BUF_SIZE]; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Input buffer for SCI commmunication */&lt;BR /&gt;&lt;EM&gt;&lt;STRONG&gt;byte&lt;/STRONG&gt;&lt;/EM&gt; MODBUS_SLAVE_OutLen;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Length of the output buffer content */&lt;BR /&gt;static &lt;EM&gt;&lt;STRONG&gt;byte&lt;/STRONG&gt;&lt;/EM&gt; OutIndxR; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Index for reading from output buffer */&lt;BR /&gt;static &lt;EM&gt;&lt;STRONG&gt;byte&lt;/STRONG&gt;&lt;/EM&gt; OutIndxW;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Index for writing to output buffer */&lt;BR /&gt;static MODBUS_SLAVE_TComData OutBuffer[MODBUS_SLAVE_OUT_BUF_SIZE];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Output buffer for SCI commmunication */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Changing from 260 to 255 the buffer declaration, it works.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;Are corrected my considerations? Can you verify ? Thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 04 Oct 2018 14:16:02 GMT</pubDate>
    <dc:creator>a_cavazzana</dc:creator>
    <dc:date>2018-10-04T14:16:02Z</dc:date>
    <item>
      <title>Max serial buffer AsynchroSerial HCS08</title>
      <link>https://community.nxp.com/t5/Processor-Expert-Software/Max-serial-buffer-AsynchroSerial-HCS08/m-p/825087#M4220</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: #212121; background-color: #ffffff; font-size: 16px;"&gt;Hi. &lt;SPAN&gt;I think I found a bug in the serial buffer declaration on an hcs08. Input/Output buffer sizes have an admissible range from 0 to 65535 byte so ,in my project (for compatibility with standard modbus, max registers readable is 125 --&amp;gt; 257&amp;nbsp; byte), i've set 260 byte. After this, during the communication, sometimes the mcu resets!!. So i've find in the processorExpert's library this:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #212121; background-color: #ffffff; font-size: 16px;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;byte MODBUS_SLAVE_RecvChar(MODBUS_SLAVE_TComData *Chr)&lt;BR /&gt;{&lt;BR /&gt; byte Result = ERR_OK; /* Prepare default error code */&lt;/P&gt;&lt;P&gt;if (MODBUS_SLAVE_InpLen &amp;gt; 0U) { /* Is number of received chars greater than 0? */&lt;BR /&gt; EnterCritical(); /* Save the PS register */&lt;BR /&gt; MODBUS_SLAVE_InpLen--; /* Decrease number of received chars */&lt;BR /&gt; *Chr = InpBuffer[&lt;EM&gt;&lt;STRONG&gt;InpIndxR&lt;/STRONG&gt;&lt;/EM&gt;]; /* Received char */&lt;BR /&gt; if (++InpIndxR &amp;gt;= MODBUS_SLAVE_INP_BUF_SIZE) { /* Is the index out of the buffer? */&lt;BR /&gt; InpIndxR = 0U; /* Set the index to the start of the buffer */&lt;BR /&gt; }&lt;BR /&gt; Result = (byte)((SerFlag &amp;amp; (OVERRUN_ERR|COMMON_ERR|FULL_RX)) ? ERR_COMMON : ERR_OK);&lt;BR /&gt; SerFlag &amp;amp;= (byte)(~(byte)(OVERRUN_ERR|COMMON_ERR|FULL_RX|CHAR_IN_RX)); /* Clear all errors in the status variable */&lt;BR /&gt; ExitCritical(); /* Restore the PS register */&lt;BR /&gt; } else {&lt;BR /&gt; return ERR_RXEMPTY; /* Receiver is empty */&lt;BR /&gt; }&lt;BR /&gt; return Result; /* Return error code */&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and InpIndx and other variables are &lt;EM&gt;&lt;STRONG&gt;BYTES&lt;/STRONG&gt;&lt;/EM&gt;!!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;byte&lt;/STRONG&gt;&lt;/EM&gt; MODBUS_SLAVE_InpLen;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Length of the input buffer content */&lt;BR /&gt;static &lt;EM&gt;&lt;STRONG&gt;byte&lt;/STRONG&gt;&lt;/EM&gt; InpIndxR;&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; /* Index for reading from input buffer */&lt;BR /&gt;static &lt;EM&gt;&lt;STRONG&gt;byte&lt;/STRONG&gt;&lt;/EM&gt; InpIndxW; &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;/* Index for writing to input buffer */&lt;BR /&gt;static MODBUS_SLAVE_TComData InpBuffer[MODBUS_SLAVE_INP_BUF_SIZE]; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Input buffer for SCI commmunication */&lt;BR /&gt;&lt;EM&gt;&lt;STRONG&gt;byte&lt;/STRONG&gt;&lt;/EM&gt; MODBUS_SLAVE_OutLen;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Length of the output buffer content */&lt;BR /&gt;static &lt;EM&gt;&lt;STRONG&gt;byte&lt;/STRONG&gt;&lt;/EM&gt; OutIndxR; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Index for reading from output buffer */&lt;BR /&gt;static &lt;EM&gt;&lt;STRONG&gt;byte&lt;/STRONG&gt;&lt;/EM&gt; OutIndxW;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Index for writing to output buffer */&lt;BR /&gt;static MODBUS_SLAVE_TComData OutBuffer[MODBUS_SLAVE_OUT_BUF_SIZE];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Output buffer for SCI commmunication */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Changing from 260 to 255 the buffer declaration, it works.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;Are corrected my considerations? Can you verify ? Thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Oct 2018 14:16:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Processor-Expert-Software/Max-serial-buffer-AsynchroSerial-HCS08/m-p/825087#M4220</guid>
      <dc:creator>a_cavazzana</dc:creator>
      <dc:date>2018-10-04T14:16:02Z</dc:date>
    </item>
  </channel>
</rss>

