<?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 Structure bit field in S12 / MagniV Microcontrollers</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Structure-bit-field/m-p/2339110#M20862</link>
    <description>&lt;DIV&gt;Hi, I am using CodeWarrior 5.2 and the controller is MC9S12DG256B.&lt;/DIV&gt;&lt;DIV&gt;When I am assigning each structure element with values and finally reading the overall value using union it is giving different values. how to solve this issue. I think there is difference in byte ordering.&lt;/DIV&gt;&lt;DIV&gt;typedef union&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; unsigned long&amp;nbsp; w;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;struct&amp;nbsp; {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_comp_cal : 2;//0&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_home&amp;nbsp; &amp;nbsp; &amp;nbsp;: 2;//2&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_trips&amp;nbsp; &amp;nbsp; : 2;//4&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_fuel&amp;nbsp; &amp;nbsp; &amp;nbsp;: 2;//6&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_hours&amp;nbsp; &amp;nbsp; : 2;//8&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_service&amp;nbsp; : 2;//10&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_diags&amp;nbsp; &amp;nbsp; : 2;//12&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_slftst&amp;nbsp; &amp;nbsp;: 2;//14&amp;nbsp; &amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_cust_set : 2;//16&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; }b;&lt;/DIV&gt;&lt;DIV&gt;}attrib2;&lt;/DIV&gt;</description>
    <pubDate>Wed, 25 Mar 2026 09:23:25 GMT</pubDate>
    <dc:creator>Aswin_5232</dc:creator>
    <dc:date>2026-03-25T09:23:25Z</dc:date>
    <item>
      <title>Structure bit field</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Structure-bit-field/m-p/2339110#M20862</link>
      <description>&lt;DIV&gt;Hi, I am using CodeWarrior 5.2 and the controller is MC9S12DG256B.&lt;/DIV&gt;&lt;DIV&gt;When I am assigning each structure element with values and finally reading the overall value using union it is giving different values. how to solve this issue. I think there is difference in byte ordering.&lt;/DIV&gt;&lt;DIV&gt;typedef union&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; unsigned long&amp;nbsp; w;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;struct&amp;nbsp; {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_comp_cal : 2;//0&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_home&amp;nbsp; &amp;nbsp; &amp;nbsp;: 2;//2&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_trips&amp;nbsp; &amp;nbsp; : 2;//4&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_fuel&amp;nbsp; &amp;nbsp; &amp;nbsp;: 2;//6&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_hours&amp;nbsp; &amp;nbsp; : 2;//8&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_service&amp;nbsp; : 2;//10&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_diags&amp;nbsp; &amp;nbsp; : 2;//12&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_slftst&amp;nbsp; &amp;nbsp;: 2;//14&amp;nbsp; &amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long disp_cust_set : 2;//16&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; }b;&lt;/DIV&gt;&lt;DIV&gt;}attrib2;&lt;/DIV&gt;</description>
      <pubDate>Wed, 25 Mar 2026 09:23:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Structure-bit-field/m-p/2339110#M20862</guid>
      <dc:creator>Aswin_5232</dc:creator>
      <dc:date>2026-03-25T09:23:25Z</dc:date>
    </item>
    <item>
      <title>Re: Structure bit field</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Structure-bit-field/m-p/2339904#M20864</link>
      <description>&lt;DIV id="tinyMceEditor_1441f989c2379flama_0" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV id="tinyMceEditor_1441f989c2379flama_1" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV id="tinyMceEditor_1441f989c2379flama_2" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;look into attached file to see solution.&lt;/P&gt;
&lt;P&gt;You should think about compiler setup .... look into the help or manuals ... keyword=bitfield.&lt;/P&gt;
&lt;P&gt;Your issue is order of bits in the bitfield.&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;Ladislav&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My test code:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;DIV&gt;#include "derivative.h"&amp;nbsp; &amp;nbsp; &amp;nbsp; /* derivative-specific definitions */&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;//******************************************************************************&lt;/DIV&gt;
&lt;DIV&gt;typedef union&lt;/DIV&gt;
&lt;DIV&gt;{&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; unsigned long&amp;nbsp; w;&lt;/DIV&gt;
&lt;DIV&gt;struct&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned char disp_comp_cal : 2;//0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned char disp_home&amp;nbsp; &amp;nbsp; &amp;nbsp;: 2;//2&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned char disp_trips&amp;nbsp; &amp;nbsp; : 2;//4&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned char disp_fuel&amp;nbsp; &amp;nbsp; &amp;nbsp;: 2;//6&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned char disp_hours&amp;nbsp; &amp;nbsp; : 2;//8&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned char disp_service&amp;nbsp; : 2;//10&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned char disp_diags&amp;nbsp; &amp;nbsp; : 2;//12&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned char disp_slftst&amp;nbsp; &amp;nbsp;: 2;//14&amp;nbsp; &amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned char disp_cust_set : 2;//16&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned int&amp;nbsp; dummy&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: 14;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; }b;&lt;/DIV&gt;
&lt;DIV&gt;}attrib2;&lt;/DIV&gt;
&lt;DIV&gt;//******************************************************************************&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;void main(void)&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;{&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; attrib2 attrib22;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; attrib22.w = 0x00UL;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; attrib22.b.disp_comp_cal =2;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; attrib22.b.disp_home&amp;nbsp; &amp;nbsp; &amp;nbsp;=1;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; attrib22.b.disp_trips&amp;nbsp; &amp;nbsp; =3;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; attrib22.b.disp_fuel&amp;nbsp; &amp;nbsp; &amp;nbsp;=1;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; attrib22.b.disp_hours&amp;nbsp; &amp;nbsp; =2;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; attrib22.b.disp_service&amp;nbsp; =1;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; attrib22.b.disp_diags&amp;nbsp; &amp;nbsp; =3;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; attrib22.b.disp_slftst&amp;nbsp; &amp;nbsp;=1;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; attrib22.b.disp_cust_set =1;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; attrib22.b.dummy&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;=0x3FFFF;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; // expected 0B1001 1101 1001 1101 0111 1111 1111 1111&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; //&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x9D9D 7FFF&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; DDRAB = 0xFFFF;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; //------------------------&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; for(;;)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;{&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; attrib22.b.disp_comp_cal +=1;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; attrib22.b.disp_home&amp;nbsp; &amp;nbsp; &amp;nbsp;+=1;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; attrib22.b.disp_trips&amp;nbsp; &amp;nbsp; +=1;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; attrib22.b.disp_fuel&amp;nbsp; &amp;nbsp; &amp;nbsp;+=1;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; attrib22.b.disp_hours&amp;nbsp; &amp;nbsp; +=1;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; attrib22.b.disp_service&amp;nbsp; +=1;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; attrib22.b.disp_diags&amp;nbsp; &amp;nbsp; +=1;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; attrib22.b.disp_slftst&amp;nbsp; &amp;nbsp;+=1;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; attrib22.b.disp_cust_set +=1;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; PORTAB = (unsigned int) (attrib22.w &amp;amp; 0xFFFFUL);&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; PORTAB = (unsigned int) ((attrib22.w &amp;gt;&amp;gt; 16)&amp;nbsp; &amp;amp; 0xFFFFUL);&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; //------------------------&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt; EnableInterrupts;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; //------------------------&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; for(;;)&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;{&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;_FEED_COP(); /* feeds the dog */&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; //------------------------&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;//******************************************************************************&lt;/DIV&gt;</description>
      <pubDate>Thu, 26 Mar 2026 09:02:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Structure-bit-field/m-p/2339904#M20864</guid>
      <dc:creator>lama</dc:creator>
      <dc:date>2026-03-26T09:02:52Z</dc:date>
    </item>
    <item>
      <title>Re: Structure bit field</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Structure-bit-field/m-p/2340231#M20865</link>
      <description>&lt;P&gt;Hi Lama,&lt;/P&gt;&lt;P&gt;Thanks it is working now.&lt;/P&gt;</description>
      <pubDate>Thu, 26 Mar 2026 10:40:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Structure-bit-field/m-p/2340231#M20865</guid>
      <dc:creator>Aswin_5232</dc:creator>
      <dc:date>2026-03-26T10:40:28Z</dc:date>
    </item>
    <item>
      <title>Re: Structure bit field</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Structure-bit-field/m-p/2345582#M20872</link>
      <description>&lt;P&gt;Hi Lama, when I am changing the project settings this issue get resolved but values read from different PORTS are also getting reversed. Any other solution for this.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 06 Apr 2026 06:27:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Structure-bit-field/m-p/2345582#M20872</guid>
      <dc:creator>Aswin_5232</dc:creator>
      <dc:date>2026-04-06T06:27:37Z</dc:date>
    </item>
  </channel>
</rss>

