<?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: Floating values transmission over CAN</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Floating-values-transmission-over-CAN/m-p/181920#M6674</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Looks like you are going to transmit IEEE754 floating point number as a binary to some other device. You have two tasks. 1) split/combine float to/from 4 bytes. 2) take care about &lt;A href="http://en.wikipedia.org/wiki/Endianness" rel="nofollow" target="_blank"&gt;http://en.wikipedia.org/wiki/Endianness&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1) To extract/pack bytes from float or other multibyte variable, float, double, long integer:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#define byteNof(n, x)&amp;nbsp; (((char*)&amp;amp;(x))[n])&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;float x;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;char bytes[4];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; // from float&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; bytes[0] = byteNof(0, x);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; bytes[1] = byteNof(1, x);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; bytes[2] = byteNof(2, x);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; bytes[3] = byteNof(3, x);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; // to float&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(0, x) = bytes[0];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(1, x) = bytes[1];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(2, x) = bytes[2];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(3, x) = bytes[3];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2) HC12 is big endian. You windows PC is most likely little endian. You decide, what format to send your data, little or big endian. Then on machine, which is contrary to your network format, instead of&amp;nbsp;sequence from above, you&amp;nbsp;change array indexes&amp;nbsp;like this&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(0, x) = bytes[3];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(1, x) = bytes[2];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(2, x) = bytes[1];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(3, x) = bytes[0];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 11 Nov 2011 16:06:55 GMT</pubDate>
    <dc:creator>kef</dc:creator>
    <dc:date>2011-11-11T16:06:55Z</dc:date>
    <item>
      <title>Floating values transmission over CAN</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Floating-values-transmission-over-CAN/m-p/181919#M6673</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear&amp;nbsp;friends,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;I am using&amp;nbsp; XS128 controller for one of my applications in which I am making use of CAN. Here, I will have to transmit the floating point values over the bus. I have no issues transmitting the integer values but transmission of signed and floating values is a matter of concern to me. Can any one, who worked on this, help&amp;nbsp;me with a ready&amp;nbsp; solution?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 Nov 2011 14:10:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Floating-values-transmission-over-CAN/m-p/181919#M6673</guid>
      <dc:creator>vishaka_maithil</dc:creator>
      <dc:date>2011-11-11T14:10:03Z</dc:date>
    </item>
    <item>
      <title>Re: Floating values transmission over CAN</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Floating-values-transmission-over-CAN/m-p/181920#M6674</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Looks like you are going to transmit IEEE754 floating point number as a binary to some other device. You have two tasks. 1) split/combine float to/from 4 bytes. 2) take care about &lt;A href="http://en.wikipedia.org/wiki/Endianness" rel="nofollow" target="_blank"&gt;http://en.wikipedia.org/wiki/Endianness&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1) To extract/pack bytes from float or other multibyte variable, float, double, long integer:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#define byteNof(n, x)&amp;nbsp; (((char*)&amp;amp;(x))[n])&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;float x;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;char bytes[4];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; // from float&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; bytes[0] = byteNof(0, x);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; bytes[1] = byteNof(1, x);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; bytes[2] = byteNof(2, x);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; bytes[3] = byteNof(3, x);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; // to float&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(0, x) = bytes[0];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(1, x) = bytes[1];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(2, x) = bytes[2];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(3, x) = bytes[3];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2) HC12 is big endian. You windows PC is most likely little endian. You decide, what format to send your data, little or big endian. Then on machine, which is contrary to your network format, instead of&amp;nbsp;sequence from above, you&amp;nbsp;change array indexes&amp;nbsp;like this&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(0, x) = bytes[3];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(1, x) = bytes[2];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(2, x) = bytes[1];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byteNof(3, x) = bytes[0];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 Nov 2011 16:06:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Floating-values-transmission-over-CAN/m-p/181920#M6674</guid>
      <dc:creator>kef</dc:creator>
      <dc:date>2011-11-11T16:06:55Z</dc:date>
    </item>
  </channel>
</rss>

