<?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 Re: Using more than a 32 bit integer with CW on the S12P MCU in S12 / MagniV Microcontrollers</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-more-than-a-32-bit-integer-with-CW-on-the-S12P-MCU/m-p/192400#M7549</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey kef,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Works great!!!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks so much!!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;David&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 16 Apr 2010 01:08:22 GMT</pubDate>
    <dc:creator>datamstr</dc:creator>
    <dc:date>2010-04-16T01:08:22Z</dc:date>
    <item>
      <title>Using more than a 32 bit integer with CW on the S12P MCU</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-more-than-a-32-bit-integer-with-CW-on-the-S12P-MCU/m-p/192398#M7547</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need to multiply a 32 bit integer by a 16 bit integer and divide that result by a 16 bit integer. For the intermediate result I need more than 32 bits. I am programming in C using CW. Any ideas on implementing an unsigned long long variable?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;David&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Apr 2010 22:04:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-more-than-a-32-bit-integer-with-CW-on-the-S12P-MCU/m-p/192398#M7547</guid>
      <dc:creator>datamstr</dc:creator>
      <dc:date>2010-04-15T22:04:53Z</dc:date>
    </item>
    <item>
      <title>Re: Using more than a 32 bit integer with CW on the S12P MCU</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-more-than-a-32-bit-integer-with-CW-on-the-S12P-MCU/m-p/192399#M7548</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You didn't say if you tolerate assembler. Here's my code:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#include &amp;lt;hidef.h&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* common defines and macros */&lt;BR /&gt;#include "derivative.h"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* derivative-specific definitions */&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;typedef struct&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; unsigned short hibits;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; unsigned long&amp;nbsp; lobits;&lt;BR /&gt;}&amp;nbsp; u48;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;// *product&amp;nbsp; = m32 * m16&lt;BR /&gt;void mul32x16_48(u48 *product, unsigned long m32, unsigned short m16)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; asm&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDX&amp;nbsp;&amp;nbsp; product&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDD&amp;nbsp;&amp;nbsp; m32:2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDY&amp;nbsp;&amp;nbsp; m16&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EMUL&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STD&amp;nbsp;&amp;nbsp; 4,x&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STY&amp;nbsp;&amp;nbsp; 2,x&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDD&amp;nbsp;&amp;nbsp; m32&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDY&amp;nbsp;&amp;nbsp; m16&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EMUL&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADDD&amp;nbsp; 2,x&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STD&amp;nbsp;&amp;nbsp; 2,x&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TFR&amp;nbsp;&amp;nbsp; Y,D&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADCB&amp;nbsp; #0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADCA&amp;nbsp; #0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STD&amp;nbsp;&amp;nbsp; 0,x&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;// *q = *nom / denom&lt;BR /&gt;void div48x16(u48 *q, u48 *nom, unsigned short denom)&lt;BR /&gt;{&lt;BR /&gt;u48 qtmp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; asm&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDY&amp;nbsp;&amp;nbsp; nom&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDD&amp;nbsp;&amp;nbsp; 0,y&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDX&amp;nbsp;&amp;nbsp; denom&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IDIV&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STX&amp;nbsp;&amp;nbsp; qtmp:0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TFR&amp;nbsp;&amp;nbsp; D,X&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDD&amp;nbsp;&amp;nbsp; 2,y&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDY&amp;nbsp;&amp;nbsp; denom&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXG&amp;nbsp;&amp;nbsp; Y,X&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDIV&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STY&amp;nbsp;&amp;nbsp; qtmp:2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDY&amp;nbsp;&amp;nbsp; nom&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDY&amp;nbsp;&amp;nbsp; 4,y&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXG&amp;nbsp;&amp;nbsp; D,Y&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDIV&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STY&amp;nbsp;&amp;nbsp; qtmp:4&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; *q = qtmp;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;u48 product;&lt;BR /&gt;u48 quot;&lt;/P&gt;&lt;P&gt;void main(void) {&lt;BR /&gt;&amp;nbsp; /* put your own code here */&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; mul32x16_48(&amp;amp;product, 0x9876543F, 0xF765);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; div48x16(&amp;amp;quot, &amp;amp;product, 0xEDAB);&lt;/P&gt;&lt;P&gt;&amp;nbsp;EnableInterrupts;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp; for(;&lt;IMG alt=":smileywink:" class="emoticon emoticon-smileywink" id="smileywink" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-wink.gif" title="Smiley Wink" /&gt; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _FEED_COP(); /* feeds the dog */&lt;BR /&gt;&amp;nbsp; } /* loop forever */&lt;BR /&gt;&amp;nbsp; /* please make sure that you never leave main */&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Apr 2010 00:01:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-more-than-a-32-bit-integer-with-CW-on-the-S12P-MCU/m-p/192399#M7548</guid>
      <dc:creator>kef</dc:creator>
      <dc:date>2010-04-16T00:01:11Z</dc:date>
    </item>
    <item>
      <title>Re: Using more than a 32 bit integer with CW on the S12P MCU</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-more-than-a-32-bit-integer-with-CW-on-the-S12P-MCU/m-p/192400#M7549</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey kef,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Works great!!!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks so much!!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;David&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Apr 2010 01:08:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-more-than-a-32-bit-integer-with-CW-on-the-S12P-MCU/m-p/192400#M7549</guid>
      <dc:creator>datamstr</dc:creator>
      <dc:date>2010-04-16T01:08:22Z</dc:date>
    </item>
    <item>
      <title>Re: Using more than a 32 bit integer with CW on the S12P MCU</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-more-than-a-32-bit-integer-with-CW-on-the-S12P-MCU/m-p/192401#M7550</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi kef,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Do you have a divide routine for 48 bits divided by 24 bits?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;David&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Apr 2010 03:58:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-more-than-a-32-bit-integer-with-CW-on-the-S12P-MCU/m-p/192401#M7550</guid>
      <dc:creator>datamstr</dc:creator>
      <dc:date>2010-04-20T03:58:44Z</dc:date>
    </item>
    <item>
      <title>Re: Using more than a 32 bit integer with CW on the S12P MCU</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-more-than-a-32-bit-integer-with-CW-on-the-S12P-MCU/m-p/192402#M7551</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;No, I don't. 24bits divider is well more complicated using S12 division instructions. Shift-subtract loop is the easy way to go. But shift-subtract is slow and new code requires some debugging. Then&amp;nbsp;why not just using double precision floating point arithmetics? Since double mantissa is 52bits wide, double can contain&amp;nbsp;up to 52bits wide integers without any rounding or loss of precision issues.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Apr 2010 13:54:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-more-than-a-32-bit-integer-with-CW-on-the-S12P-MCU/m-p/192402#M7551</guid>
      <dc:creator>kef</dc:creator>
      <dc:date>2010-04-20T13:54:38Z</dc:date>
    </item>
    <item>
      <title>Re: Using more than a 32 bit integer with CW on the S12P MCU</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-more-than-a-32-bit-integer-with-CW-on-the-S12P-MCU/m-p/192403#M7552</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am avoiding use the floating point math library to keep the code smaller.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;David&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Apr 2010 19:31:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-more-than-a-32-bit-integer-with-CW-on-the-S12P-MCU/m-p/192403#M7552</guid>
      <dc:creator>datamstr</dc:creator>
      <dc:date>2010-04-20T19:31:48Z</dc:date>
    </item>
  </channel>
</rss>

