<?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>Kinetis MicrocontrollersのトピックRe: RTU Modbus for the Kinetis KL25Z?</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422403#M24232</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;my implementation of Freemodbus for FRDM-KL25Z:&lt;BR /&gt;&lt;A class="link-titled" href="https://github.com/evandro-teixeira/FreeModbus_KL25Z" title="https://github.com/evandro-teixeira/FreeModbus_KL25Z"&gt;GitHub - evandro-teixeira/FreeModbus_KL25Z: Port FreeModbus FRDM_KL25Z&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 13 May 2019 04:06:25 GMT</pubDate>
    <dc:creator>evandroteixeira</dc:creator>
    <dc:date>2019-05-13T04:06:25Z</dc:date>
    <item>
      <title>RTU Modbus for the Kinetis KL25Z?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422394#M24223</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi. I'm wondering if there's available a library implementing Modbus for the KL25Z? I'm trying to port the freemodbus library but I just can't get it to work. I'm using an Arduino shield with a MAX485&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: Consolas; font-size: 10pt;"&gt;and this interface for comunicating with the PC:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: Consolas;"&gt;&lt;A href="http://www.atac.com.tw/product/5-serial-usb/5-uc485.html" rel="nofollow noopener noreferrer" target="_blank"&gt;http://www.atac.com.tw/product/5-serial-usb/5-uc485.HTML&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin: 0px; padding: 0px; text-align: left; color: #3d3d3d; text-transform: none; line-height: 23.33px; text-indent: 0px; letter-spacing: normal; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; widows: 1; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0px; padding: 0px; text-align: left; color: #3d3d3d; text-transform: none; line-height: 23.33px; text-indent: 0px; letter-spacing: normal; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; widows: 1; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px;"&gt;&lt;SPAN style="font-family: Consolas;"&gt;I tried the UART and timer functions without the modbus stack and they work fine&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0px; padding: 0px; text-align: left; color: #3d3d3d; text-transform: none; line-height: 23.33px; text-indent: 0px; letter-spacing: normal; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; widows: 1; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px;"&gt;&lt;SPAN style="font-family: Consolas;"&gt;&lt;A href="http://www.freemodbus.org/index.php?idx=5" rel="nofollow noopener noreferrer" target="_blank"&gt;http://www.freemodbus.org/index.php?idx=5&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0px; padding: 0px; text-align: left; color: #3d3d3d; text-transform: none; line-height: 23.33px; text-indent: 0px; letter-spacing: normal; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; widows: 1; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px;"&gt;&lt;SPAN style="font-family: Consolas;"&gt;&lt;A href="http://sourceforge.net/projects/freemodbus.berlios/files/" rel="nofollow noopener noreferrer" target="_blank"&gt;http://sourceforge.net/projects/freemodbus.berlios/files/&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0px; padding: 0px; text-align: left; color: #3d3d3d; text-transform: none; line-height: 23.33px; text-indent: 0px; letter-spacing: normal; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; widows: 1; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px;"&gt;This are the functions that I have ported:&lt;/P&gt;&lt;P style="margin: 0px; padding: 0px; text-align: left; color: #3d3d3d; text-transform: none; line-height: 23.33px; text-indent: 0px; letter-spacing: normal; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; widows: 1; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0px; padding: 0px; text-align: left; color: #3d3d3d; text-transform: none; line-height: 23.33px; text-indent: 0px; letter-spacing: normal; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; widows: 1; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0px; padding: 0px; text-align: left; color: #3d3d3d; text-transform: none; line-height: 23.33px; text-indent: 0px; letter-spacing: normal; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; widows: 1; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px;"&gt;portserial.c:&lt;/P&gt;&lt;P style="margin: 0px; padding: 0px; text-align: left; color: #3d3d3d; text-transform: none; line-height: 23.33px; text-indent: 0px; letter-spacing: normal; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; widows: 1; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px;"&gt;&lt;/P&gt;&lt;PRE __default_attr="c#" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14371756826757200 jive_text_macro" data-renderedposition="235.63999938964844_8_1232_1888" jivemacro_uid="_14371756826757200"&gt;&lt;P&gt;void
vMBPortSerialEnable( BOOL xRxEnable, BOOL xTxEnable )
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If xRXEnable enable serial receive interrupts.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * If xTxENable enable transmitter empty interrupts.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
//UART0_C1 |= UART_C1_LOOPS_MASK;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Compute control register value */
&amp;nbsp;&amp;nbsp;&amp;nbsp; // TIE=0,TCIE=0,RIE=0,ILIE=0,TE=1,RE=1,RWU=0,SBK=0
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_C2_REG(UART0_BASE_PTR) |= UART_C2_TE_MASK | UART_C2_RE_MASK ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable the requested interrupts */
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( xRxEnable )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_C2_REG(UART0_BASE_PTR) |= UART_C2_RIE_MASK;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( xTxEnable )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_C2_REG(UART0_BASE_PTR) |= UART_C2_TIE_MASK;
}&lt;/P&gt;&lt;P&gt;BOOL
xMBPortSerialInit( UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, eMBParity eParity )
{
 uint16_t sbr;
 uint16_t temp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Calculate baud settings */
&amp;nbsp;&amp;nbsp;&amp;nbsp; sbr = (uint16_t)((48000*1000)/(ulBaudRate * 16));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Save off the current value of the UARTx_BDH except for the SBR field */
&amp;nbsp;&amp;nbsp;&amp;nbsp; temp = UART_BDH_REG(UART0_BASE_PTR) &amp;amp; ~(UART_BDH_SBR(0x1F));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_BDH_REG(UART0_BASE_PTR) = temp |&amp;nbsp; UART_BDH_SBR(((sbr &amp;amp; 0x1F00) &amp;gt;&amp;gt; 8));
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_BDL_REG(UART0_BASE_PTR) = (uint8_t)(sbr &amp;amp; UART_BDL_SBR_MASK);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Configure the serial port */
//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCI1C1 = 0x00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // LOOPS=0,SCISWAI=0,Rsrc=0,M=0,ILT=0,PE=0,PT=0
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( ucDataBits == 8 &amp;amp;&amp;amp; eParity != MB_PAR_NONE )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_C1_REG(UART0_BASE_PTR) |= UART_C1_M_MASK;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( eParity != MB_PAR_NONE )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_C1_REG(UART0_BASE_PTR) |= UART_C1_PE_MASK;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( eParity == MB_PAR_ODD || ( eParity == MB_PAR_NONE &amp;amp;&amp;amp; ucDataBits == 7 ) )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_C1_REG(UART0_BASE_PTR) |= UART_C1_PT_MASK;
enable_irq(12);
&amp;nbsp;&amp;nbsp;&amp;nbsp; return TRUE;
}&lt;/P&gt;&lt;P&gt;BOOL
xMBPortSerialPutByte( CHAR ucByte )
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Put a byte in the UARTs transmit buffer. This function is called
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * by the protocol stack if pxMBFrameCBTransmitterEmpty( ) has been
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * called. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Wait until space is available in the FIFO */
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!(UART_S1_REG(UART0_BASE_PTR) &amp;amp; UART_S1_TDRE_MASK));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Send the character */
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_D_REG(UART0_BASE_PTR) = (uint8_t)ucByte;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_C2_REG(UART0_BASE_PTR) |= UART_C2_TIE_MASK ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return TRUE;
}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BOOL
xMBPortSerialGetByte( CHAR * pucByte )
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Return the byte in the UARTs receive buffer. This function is called
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * by the protocol stack after pxMBFrameCBByteReceived( ) has been called.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp;&amp;nbsp;&amp;nbsp; BOOL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parityOK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Wait until character has been received */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!(UART_S1_REG(UART0_BASE_PTR) &amp;amp; UART_S1_RDRF_MASK));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (UART0_S1 &amp;amp; UART_S1_PF_MASK)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parityOK = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!(UART0_S1 &amp;amp; UART_S1_PF_MASK))
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parityOK = 1;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //parityOK = !SCI1S1_PF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (UART0_C1 &amp;amp; UART_C1_M_MASK)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *pucByte = UART0_C3;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // for coherent 9 bit reads of the receiver buffer
&amp;nbsp;&amp;nbsp;&amp;nbsp; *pucByte = UART0_D;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!(UART0_C1 &amp;amp; UART_C1_M_MASK))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( UART_C1_PE(UART0_BASE_PTR) || ( !UART_C1_PE(UART0_BASE_PTR) &amp;amp;&amp;amp; UART_C1_PT(UART0_BASE_PTR) ) )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *pucByte &amp;amp;= 0x7F;
&amp;nbsp;&amp;nbsp; UART0_C2 |= UART_C2_RIE_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return parityOK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // return TRUE if Parity Error Flag was not set
}&lt;/P&gt;&lt;P&gt;/* Create an interrupt handler for the transmit buffer empty interrupt
 * (or an equivalent) for your target processor. This function should then
 * call pxMBFrameCBTransmitterEmpty( ) which tells the protocol stack that
 * a new character can be sent. The protocol stack will then call 
 * xMBPortSerialPutByte( ) to send the character.
 */
/*interrupt VectorNumber_Vsci1tx void
prvvUARTTxReadyISR( void )
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; SCI1C2_TIE = FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ( void )pxMBFrameCBTransmitterEmpty(&amp;nbsp; );
}*/&lt;/P&gt;&lt;P&gt;/* Create an interrupt handler for the receive interrupt for your target
 * processor. This function should then call pxMBFrameCBByteReceived( ). The
 * protocol stack will then call xMBPortSerialGetByte( ) to retrieve the
 * character.
 */
/*interrupt VectorNumber_Vsci1rx void
prvvUARTRxISR( void )
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; SCI1C2_RIE = FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ( void )pxMBFrameCBByteReceived(&amp;nbsp; );
}*/&lt;/P&gt;&lt;P&gt;void UART0_IRQHandler (void)
{
&amp;nbsp; char c = 0;
&amp;nbsp; CHAR cByte;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (UART0_S1 &amp;amp; UART_S1_RDRF_MASK) //Si recibio...
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; //UART0_C2 &amp;amp;= ~UART_C2_RIE_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( void )pxMBFrameCBByteReceived(&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((UART0_S1&amp;amp;UART_S1_TDRE_MASK)||(UART0_S1&amp;amp;UART_S1_TC_MASK)) //Si transmitio...
&amp;nbsp;&amp;nbsp;&amp;nbsp; {

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0_C2 &amp;amp;= ~UART_C2_TIE_MASK;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( void )pxMBFrameCBTransmitterEmpty(&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
}&lt;/P&gt;&lt;/PRE&gt;&lt;P style="margin: 0px; padding: 0px; text-align: left; color: #3d3d3d; text-transform: none; line-height: 23.33px; text-indent: 0px; letter-spacing: normal; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; widows: 1; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0px; padding: 0px; text-align: left; color: #3d3d3d; text-transform: none; line-height: 23.33px; text-indent: 0px; letter-spacing: normal; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; widows: 1; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px;"&gt;port.h:&lt;/P&gt;&lt;PRE __default_attr="c#" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14371761976657040 jive_text_macro" data-renderedposition="2170.300048828125_8_1232_688" jivemacro_uid="_14371761976657040"&gt;&lt;P&gt;&lt;SPAN style="font-family: Consolas;"&gt;#include "MKL25Z4.h"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: Consolas;"&gt;/* Tne include fila inttypes.h is not available for HCS08, so we use our own definitions instead */
//#include &amp;lt;inttypes.h&amp;gt;
typedef signed char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int8_t;
typedef unsigned char uint8_t;
typedef signed short int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int16_t;
typedef unsigned short int uint16_t;
typedef signed long int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int32_t;
typedef unsigned long int uint32_t;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: Consolas;"&gt;
/* Michael Barrs verification code */
#pragma MESSAGE ERROR DISABLE C1135
static union
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int8_t_incorrect[sizeof( int8_t ) == 1];
&amp;nbsp;&amp;nbsp;&amp;nbsp; char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t_incorrect[sizeof( uint8_t ) == 1];
&amp;nbsp;&amp;nbsp;&amp;nbsp; char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int16_t_incorrect[sizeof( int16_t ) == 2];
&amp;nbsp;&amp;nbsp;&amp;nbsp; char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint16_t_incorrect[sizeof( uint16_t ) == 2];
&amp;nbsp;&amp;nbsp;&amp;nbsp; char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int32_t_incorrect[sizeof( int32_t ) == 4];
&amp;nbsp;&amp;nbsp;&amp;nbsp; char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t_incorrect[sizeof( uint32_t ) == 4];
};&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define INLINE
#define PR_BEGIN_EXTERN_C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; extern "C" {
#define PR_END_EXTERN_C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
#define memcpy&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; (void) memcpy&amp;nbsp;&amp;nbsp; // gets wid of a warning in mbfuncother.c&lt;/P&gt;&lt;P&gt;#define ENTER_CRITICAL_SECTION( )&amp;nbsp;&amp;nbsp; __asm(" CPSID i");
#define EXIT_CRITICAL_SECTION( )&amp;nbsp;&amp;nbsp;&amp;nbsp; __asm__("cpsie&amp;nbsp;&amp;nbsp; i");&lt;/P&gt;&lt;P&gt;typedef uint8_t&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; BOOL;
typedef unsigned char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UCHAR;
typedef char&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; CHAR;
typedef uint16_t&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; USHORT;
typedef int16_t&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; SHORT;
typedef uint32_t&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; ULONG;
typedef int32_t&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; LONG;&lt;/P&gt;&lt;P&gt;#ifndef TRUE
#define TRUE&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; 1
#endif&lt;/P&gt;&lt;P&gt;#ifndef FALSE
#define FALSE&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; 0
#endif&lt;/P&gt;&lt;P&gt;/* The bus clock is used for computing timer and baud rate register values */
#define BM_BUS_CLOCK&amp;nbsp;&amp;nbsp; 24000000 // Hz&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;/PRE&gt;&lt;P style="margin: 0px; padding: 0px; text-align: left; color: #3d3d3d; text-transform: none; line-height: 23.33px; text-indent: 0px; letter-spacing: normal; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; widows: 1; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0px; padding: 0px; text-align: left; color: #3d3d3d; text-transform: none; line-height: 23.33px; text-indent: 0px; letter-spacing: normal; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; widows: 1; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px;"&gt;porttimer.c:&lt;/P&gt;&lt;PRE __default_attr="c#" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14371759255978992 jive_text_macro" data-renderedposition="2904.9599609375_8_1232_880" jivemacro_uid="_14371759255978992"&gt;&lt;P&gt;/* ----------------------- Persistent variable ------------------------------*/
static USHORT&amp;nbsp;&amp;nbsp; usDelta;&lt;/P&gt;&lt;P&gt;/* ----------------------- Start implementation -----------------------------*/&lt;/P&gt;&lt;P&gt;USHORT
usMBMulDiv( USHORT a, USHORT b, USHORT c )
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x = a;
&amp;nbsp;&amp;nbsp;&amp;nbsp; x *= b;
&amp;nbsp;&amp;nbsp;&amp;nbsp; x /= c;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ( USHORT ) x;
}&lt;/P&gt;&lt;P&gt;/* Initialize Timer 1 as free running, and Channel 0 as output compare (with no pin)
 */
BOOL
xMBPortTimersInit( USHORT usTim1Timerout50us )
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* We assume 24000000 Hz bus clock and let the timer run at 1/16 of this frequency, ie. 1500000 Hz */
&amp;nbsp;&amp;nbsp;&amp;nbsp; ( void )assert( BM_BUS_CLOCK == 24000000 );
&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM1_SC = TPM_SC_CMOD(1)| TPM_SC_PS(7);&amp;nbsp; //CLK dividido por 128 (24 MHz/128 = 187500 ) Para 50us necesito mod 9
&amp;nbsp;&amp;nbsp;&amp;nbsp; //TPM1SC = 0x0F;&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; // TOF=0,TOIE=0,CPWMS=0,CLKS=0:1,PS=1:1:1
 TPM1_C1SC = TPM_CnSC_MSA_MASK;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //TPM1C0SC = 0x10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // CH0F=0,CH0IE=0,MS0=0:1,ELS0=0:0;??=0:0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Compute numer of timer tics corresponding to the given timeout periode */
&amp;nbsp;&amp;nbsp;&amp;nbsp; usDelta = usMBMulDiv( usTim1Timerout50us, 900, 100 ); 
&amp;nbsp;&amp;nbsp;&amp;nbsp; return TRUE;
}&lt;/P&gt;&lt;P&gt;/* Set the output compare register value and enable timer interrupt
 */
INLINE void
vMBPortTimersEnable(&amp;nbsp; )
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable the timer with the timeout passed to xMBPortTimersInit( ) */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM1_C1V = usDelta;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (TPM1_C1SC &amp;amp; TPM_CnSC_CHF_MASK)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM1_C1SC &amp;amp;= ~TPM_CnSC_CHF_MASK; //TPM1C0SC_CH0F = FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM1_C1SC |= TPM_CnSC_CHIE_MASK; //TPM1C0SC_CH0IE = TRUE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; enable_irq (18); //Habilito la interrupcion de TPM1
}&lt;/P&gt;&lt;P&gt;/* Disable timer interrupts
 */
INLINE void
vMBPortTimersDisable(&amp;nbsp; )
{
 TPM1_C1SC &amp;amp;= ~TPM_CnSC_CHIE_MASK; //TPM1C0SC_CH0IE = FALSE;
}&lt;/P&gt;&lt;P&gt;/* Handle the interrupt and disable further timeouts
 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TPM1_IRQHandler(void)
{
 TPM1_C1SC |= TPM_CnSC_CHF_MASK;&amp;nbsp;&amp;nbsp; //Clear interrupt flag (CHF = 1);
 TPM1_C1SC &amp;amp;= ~TPM_CnSC_CHIE_MASK; //TPM1C0SC_CH0IE = FALSE
 ( void )pxMBPortCBTimerExpired(&amp;nbsp; );
}&lt;/P&gt;&lt;/PRE&gt;&lt;PRE __default_attr="c#" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_1437175524613365 jive_text_macro" data-renderedposition="3784.9599609375_8_1232_0" jivemacro_uid="_1437175524613365"&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Jul 2015 23:59:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422394#M24223</guid>
      <dc:creator>juanm</dc:creator>
      <dc:date>2015-07-17T23:59:26Z</dc:date>
    </item>
    <item>
      <title>Re: RTU Modbus for the Kinetis KL25Z?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422395#M24224</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you need a professional solution the following runs on the KL25 (master/slave/RTU/ASCII/RS232/RS485/gateway/router) and also allows MODBUS via USB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.utasker.com/modbus.html" title="http://www.utasker.com/modbus.html"&gt;µTasker MODBUS Extension pack&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kinetis: &lt;A href="http://www.utasker.com/kinetis.html" title="http://www.utasker.com/kinetis.html"&gt;µTasker Kinetis support&lt;/A&gt; &lt;/P&gt;&lt;P&gt;KL25: &lt;A href="http://www.utasker.com/kinetis/FRDM-KL25Z.html" title="http://www.utasker.com/kinetis/FRDM-KL25Z.html"&gt;µTasker Kinetis FRDM-KL25Z support&lt;/A&gt;&amp;nbsp; / &lt;A href="http://www.utasker.com/kinetis/TWR-KL25Z48M.html" title="http://www.utasker.com/kinetis/TWR-KL25Z48M.html"&gt;µTasker Kinetis TWR-KL25Z48M support&lt;/A&gt; &lt;/P&gt;&lt;P&gt;MODBUS (Master/Slave/Gateway/Router/RTU/ASCII/RS485/TCP/USB): &lt;A href="http://www.utasker.com/modbus.html" title="http://www.utasker.com/modbus.html"&gt;µTasker MODBUS Extension pack&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;EM&gt;For the complete "out-of-the-box" Kinetis experience and faster time to market&lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 20 Jul 2015 19:16:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422395#M24224</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2015-07-20T19:16:55Z</dc:date>
    </item>
    <item>
      <title>Re: RTU Modbus for the Kinetis KL25Z?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422396#M24225</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks. uTasker looks great, but sadly I can't afford it right now.&lt;/P&gt;&lt;P&gt;Maybe someone has ported Freemodbus to the Kinetis MCUs.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 20 Jul 2015 22:43:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422396#M24225</guid>
      <dc:creator>juanm</dc:creator>
      <dc:date>2015-07-20T22:43:32Z</dc:date>
    </item>
    <item>
      <title>Re: RTU Modbus for the Kinetis KL25Z?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422397#M24226</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you are a student or hobbyist the uTasker project is completely free, including support in this or its own forum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kinetis: &lt;A class="jive-link-external-small" data-content-finding="Community" href="https://community.nxp.com/external-link.jspa?url=http://www.utasker.com/kinetis.html" rel="nofollow" target="_blank"&gt;µTasker Kinetis support&lt;/A&gt; &lt;/P&gt;&lt;P&gt;KL25: &lt;A class="jive-link-external-small" data-content-finding="Community" href="https://community.nxp.com/external-link.jspa?url=http://www.utasker.com/kinetis/FRDM-KL25Z.html" rel="nofollow" target="_blank"&gt;µTasker Kinetis FRDM-KL25Z support&lt;/A&gt;&amp;nbsp; / &lt;A class="jive-link-external-small" data-content-finding="Community" href="https://community.nxp.com/external-link.jspa?url=http://www.utasker.com/kinetis/TWR-KL25Z48M.html" rel="nofollow" target="_blank"&gt;µTasker Kinetis TWR-KL25Z48M support&lt;/A&gt; &lt;/P&gt;&lt;P&gt;MODBUS (Master/Slave/Gateway/Router/RTU/ASCII/RS485/TCP/USB): &lt;A class="jive-link-external-small" data-content-finding="Community" href="https://community.nxp.com/external-link.jspa?url=http://www.utasker.com/modbus.html" rel="nofollow" target="_blank"&gt;µTasker MODBUS Extension pack&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;EM&gt;For the complete "out-of-the-box" Kinetis experience and faster time to market&lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 20 Jul 2015 22:57:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422397#M24226</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2015-07-20T22:57:31Z</dc:date>
    </item>
    <item>
      <title>Re: RTU Modbus for the Kinetis KL25Z?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422398#M24227</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear Mark,&lt;/P&gt;&lt;P&gt;&amp;nbsp;I am from Tianjin University &amp;nbsp;, how can apply a free try for Modbus software ?&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now I am working on &amp;nbsp;a thermal controller project based on Kea . I plan to add modbus .&lt;/P&gt;&lt;P&gt;My email: &lt;A href="mailto:kigerzhang@tju.edu.cn"&gt;kigerzhang@tju.edu.cn&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Kiger&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 06 May 2017 22:02:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422398#M24227</guid>
      <dc:creator>kigerzhang</dc:creator>
      <dc:date>2017-05-06T22:02:27Z</dc:date>
    </item>
    <item>
      <title>Re: RTU Modbus for the Kinetis KL25Z?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422399#M24228</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Kiger&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have sent you the project at your private email address. You have already used the uTasker OpenSource project so can simply add the contents to the MODBUS folder, enable modbus in config.c and start using it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 06 May 2017 23:32:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422399#M24228</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-05-06T23:32:30Z</dc:date>
    </item>
    <item>
      <title>Re: RTU Modbus for the Kinetis KL25Z?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422400#M24229</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear Mark,&lt;/P&gt;&lt;P&gt;Thanks a lot! I will try it.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 07 May 2017 06:54:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422400#M24229</guid>
      <dc:creator>kigerzhang</dc:creator>
      <dc:date>2017-05-07T06:54:40Z</dc:date>
    </item>
    <item>
      <title>Re: RTU Modbus for the Kinetis KL25Z?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422401#M24230</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mark , hop you are doing well ?&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please ,i want to use modbus for my project , can you please send me the free version&amp;nbsp; ?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I am a student from Algeria university and this is my email &lt;/SPAN&gt;&lt;A class="jive-link-email-small" href="mailto:oulhadjait@gmail.com"&gt;oulhadjait@gmail.com&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Thank you;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Sep 2018 14:04:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422401#M24230</guid>
      <dc:creator>oulhadjait</dc:creator>
      <dc:date>2018-09-27T14:04:28Z</dc:date>
    </item>
    <item>
      <title>Re: RTU Modbus for the Kinetis KL25Z?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422402#M24231</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Juanm&lt;/P&gt;&lt;P&gt;I'm also having trouble performing the #FreeModbus #Modbus port for #FRDM-KL25Z.&lt;BR /&gt;Would you like to know if you have solved the problem?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 May 2019 12:20:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422402#M24231</guid>
      <dc:creator>evandroteixeira</dc:creator>
      <dc:date>2019-05-09T12:20:09Z</dc:date>
    </item>
    <item>
      <title>Re: RTU Modbus for the Kinetis KL25Z?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422403#M24232</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;my implementation of Freemodbus for FRDM-KL25Z:&lt;BR /&gt;&lt;A class="link-titled" href="https://github.com/evandro-teixeira/FreeModbus_KL25Z" title="https://github.com/evandro-teixeira/FreeModbus_KL25Z"&gt;GitHub - evandro-teixeira/FreeModbus_KL25Z: Port FreeModbus FRDM_KL25Z&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 May 2019 04:06:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422403#M24232</guid>
      <dc:creator>evandroteixeira</dc:creator>
      <dc:date>2019-05-13T04:06:25Z</dc:date>
    </item>
    <item>
      <title>Re: RTU Modbus for the Kinetis KL25Z?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422404#M24233</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I´m also implementing a Modbus RTU protocol on a KL25. I already have mi UART working fine. Can I apply for the free tryal of the code?&lt;/P&gt;&lt;P&gt;Email: gonzalez.carlosaf@gmail.com&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Dec 2019 23:10:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/RTU-Modbus-for-the-Kinetis-KL25Z/m-p/422404#M24233</guid>
      <dc:creator>gonzalez_carlos</dc:creator>
      <dc:date>2019-12-09T23:10:16Z</dc:date>
    </item>
  </channel>
</rss>

