<?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: Bit field operation issue. in S12 / MagniV Microcontrollers</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Bit-field-operation-issue/m-p/485808#M12074</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;I have checked you issue and not able to reproduce the issue.&lt;/P&gt;&lt;P&gt;I have used following approach:&lt;/P&gt;&lt;P&gt;All used variables are global.&lt;/P&gt;&lt;P&gt;I am checking the value of the bitfield members in the “Variables” windov and there is no issue.&lt;/P&gt;&lt;P&gt;Are you able to do some simple test like presented to be sure there is nothing else in the SW which can influence the bitfield.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;_c_test_buf test_ver_1;&lt;/P&gt;&lt;P&gt;static uint8_t a=0;&lt;/P&gt;&lt;P&gt;//---------------------------------------------------------------------------------- &lt;/P&gt;&lt;P&gt;void CPMU_Init( void )&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; CPMUPROT&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x26u; // Disable protection of clock configuration registers &lt;/P&gt;&lt;P&gt;&amp;nbsp; // PLL setup 16 MHz BUSCLK from 4 MHz&lt;/P&gt;&lt;P&gt;&amp;nbsp; CPMUSYNR = 0x03;&lt;/P&gt;&lt;P&gt;&amp;nbsp; CPMUREFDIV = 0x40;&lt;/P&gt;&lt;P&gt;&amp;nbsp; CPMUPOSTDIV = 0x00;&lt;/P&gt;&lt;P&gt;&amp;nbsp; CPMUOSC_OSCE = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; while( CPMUIFLG_UPOSC == 0 ) {};&lt;/P&gt;&lt;P&gt;&amp;nbsp; do&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CPMUCLKS = 0B10000001;&amp;nbsp;&amp;nbsp; // COP clk is OSCCLK&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;&lt;P&gt;&amp;nbsp; while( CPMUCLKS != 0B10000001);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;//---------------------------------------------------------------------------------- &lt;/P&gt;&lt;P&gt;void bitfield_problem_solution_ctm_issue(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; a++;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Note:- a can be 0 or 1 based on set or clear operation */&lt;/P&gt;&lt;P&gt;&amp;nbsp; test_ver_1.test_var.test_bit_16 = ((uint8_t) (((uint8_t) (a)) &amp;amp; 0x01)); &lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;//----------------------------------------------------------------------------------&amp;nbsp; &lt;/P&gt;&lt;P&gt;void main( void )&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; UWORD i,j;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; //=== CLOCK and COP INIT =======&lt;/P&gt;&lt;P&gt;&amp;nbsp; CPMU_Init();&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; //BUSCLK for 16MHz from OSCCLK 4MHz&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(;;)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bitfield_problem_solution_ctm_issue();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;//---------------------------------------------------------------------------------- &lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Ladislav&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 11 Apr 2016 12:48:48 GMT</pubDate>
    <dc:creator>lama</dc:creator>
    <dc:date>2016-04-11T12:48:48Z</dc:date>
    <item>
      <title>Bit field operation issue.</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Bit-field-operation-issue/m-p/485807#M12073</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, I am using MC9S12ZVL family controller and CW IDE, facing problem with bit field operations. When I do some anding operation on particular bit it’s changing others bit value too.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Bit field structure:-&lt;/P&gt;&lt;P&gt;typedef struct _c_test_bit&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_1 : 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_2 : 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_3 : 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_4 : 1;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_5 : 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_6 : 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_7 : 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_8 : 1;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_9 : 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_10 : 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_11 : 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_12 : 1;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_13 : 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_14 : 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_15 : 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_16 : 1;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_17 : 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t test_bit_18 : 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t unused0 : 6;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t unused1 : 8;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t unused2 : 8;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t unused3 : 8;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t unused4 : 8;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t unused5 : 8;&lt;/P&gt;&lt;P&gt;} _c_test_bit;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Declaration:-&lt;/P&gt;&lt;P&gt;typedef union _c_test_bufTag&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint8_t _c[8];&lt;/P&gt;&lt;P&gt;&amp;nbsp; _c_test_bit test_var;&lt;/P&gt;&lt;P&gt;} _c_test_buf;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;_c_test_buf test_ver_1;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Anding operation:-&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;test_ver_1.test_var.test_bit_16 = ((uint8_t) (((uint8_t) (a)) &amp;amp; 0x01));&amp;nbsp; /* Note:- a can be 0 or 1 based on set or clear operation */&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This operation is causing to change other bitfields values.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below compiler options are used:-&lt;/P&gt;&lt;P&gt;CFLAGS += -nostdinc&lt;/P&gt;&lt;P&gt;CFLAGS += -nosyspath&lt;/P&gt;&lt;P&gt;CFLAGS += -w illpragmas&lt;/P&gt;&lt;P&gt;CFLAGS += -w possible&lt;/P&gt;&lt;P&gt;CFLAGS += -w extended&lt;/P&gt;&lt;P&gt;CFLAGS += -w extracomma&lt;/P&gt;&lt;P&gt;CFLAGS += -w emptydecl&lt;/P&gt;&lt;P&gt;CFLAGS += -w structclass&lt;/P&gt;&lt;P&gt;CFLAGS += -w notinlined&lt;/P&gt;&lt;P&gt;CFLAGS += -model small&lt;/P&gt;&lt;P&gt;CFLAGS += -bfield_lsbit_first&lt;/P&gt;&lt;P&gt;CFLAGS += -bfield_reduce_type&lt;/P&gt;&lt;P&gt;CFLAGS += -opt level=0&lt;/P&gt;&lt;P&gt;CFLAGS += -opt space&lt;/P&gt;&lt;P&gt;CFLAGS += -requireprotos&lt;/P&gt;&lt;P&gt;CFLAGS += -Cpp_Exceptions off&lt;/P&gt;&lt;P&gt;CFLAGS += -char unsigned&lt;/P&gt;&lt;P&gt;CFLAGS += -msgstyle parseable&lt;/P&gt;&lt;P&gt;CFLAGS += -sym full&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks and Regards,&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11.0pt; font-family: 'Calibri',sans-serif;"&gt;Charudatta&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 06 Apr 2016 15:53:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Bit-field-operation-issue/m-p/485807#M12073</guid>
      <dc:creator>charudattaingal</dc:creator>
      <dc:date>2016-04-06T15:53:50Z</dc:date>
    </item>
    <item>
      <title>Re: Bit field operation issue.</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Bit-field-operation-issue/m-p/485808#M12074</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;I have checked you issue and not able to reproduce the issue.&lt;/P&gt;&lt;P&gt;I have used following approach:&lt;/P&gt;&lt;P&gt;All used variables are global.&lt;/P&gt;&lt;P&gt;I am checking the value of the bitfield members in the “Variables” windov and there is no issue.&lt;/P&gt;&lt;P&gt;Are you able to do some simple test like presented to be sure there is nothing else in the SW which can influence the bitfield.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;_c_test_buf test_ver_1;&lt;/P&gt;&lt;P&gt;static uint8_t a=0;&lt;/P&gt;&lt;P&gt;//---------------------------------------------------------------------------------- &lt;/P&gt;&lt;P&gt;void CPMU_Init( void )&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; CPMUPROT&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x26u; // Disable protection of clock configuration registers &lt;/P&gt;&lt;P&gt;&amp;nbsp; // PLL setup 16 MHz BUSCLK from 4 MHz&lt;/P&gt;&lt;P&gt;&amp;nbsp; CPMUSYNR = 0x03;&lt;/P&gt;&lt;P&gt;&amp;nbsp; CPMUREFDIV = 0x40;&lt;/P&gt;&lt;P&gt;&amp;nbsp; CPMUPOSTDIV = 0x00;&lt;/P&gt;&lt;P&gt;&amp;nbsp; CPMUOSC_OSCE = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; while( CPMUIFLG_UPOSC == 0 ) {};&lt;/P&gt;&lt;P&gt;&amp;nbsp; do&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CPMUCLKS = 0B10000001;&amp;nbsp;&amp;nbsp; // COP clk is OSCCLK&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;&lt;P&gt;&amp;nbsp; while( CPMUCLKS != 0B10000001);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;//---------------------------------------------------------------------------------- &lt;/P&gt;&lt;P&gt;void bitfield_problem_solution_ctm_issue(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; a++;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Note:- a can be 0 or 1 based on set or clear operation */&lt;/P&gt;&lt;P&gt;&amp;nbsp; test_ver_1.test_var.test_bit_16 = ((uint8_t) (((uint8_t) (a)) &amp;amp; 0x01)); &lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;//----------------------------------------------------------------------------------&amp;nbsp; &lt;/P&gt;&lt;P&gt;void main( void )&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; UWORD i,j;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; //=== CLOCK and COP INIT =======&lt;/P&gt;&lt;P&gt;&amp;nbsp; CPMU_Init();&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; //BUSCLK for 16MHz from OSCCLK 4MHz&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(;;)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bitfield_problem_solution_ctm_issue();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;//---------------------------------------------------------------------------------- &lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Ladislav&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 11 Apr 2016 12:48:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Bit-field-operation-issue/m-p/485808#M12074</guid>
      <dc:creator>lama</dc:creator>
      <dc:date>2016-04-11T12:48:48Z</dc:date>
    </item>
  </channel>
</rss>

