<?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>ColdFire/68K Microcontrollers and ProcessorsのトピックRe: Structured C access to Coldfire peripheral registers</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Structured-C-access-to-Coldfire-peripheral-registers/m-p/124682#M134</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;I guess this is a matter of preference.&lt;BR /&gt;&lt;BR /&gt;Bit fields are implementation-dependant, so your code might work with one compiler but not with another. Also, assigning bits using bit fields might result in a read-modify-write for each bit assignments, while using bit masks result in a single write:&lt;BR /&gt;&amp;gt; reg.bitA=1; reg.bitB=1; vs reg=MASK_A | MASK_B;&lt;BR /&gt;&lt;BR /&gt;Reading a single bit using either mask or bit field generates very similar copmpiled code:&lt;BR /&gt;&amp;gt; if(reg.bitA)... vs. if(reg &amp;amp; MASK_A)...&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 21 Jul 2006 19:59:24 GMT</pubDate>
    <dc:creator>mvincent</dc:creator>
    <dc:date>2006-07-21T19:59:24Z</dc:date>
    <item>
      <title>Structured C access to Coldfire peripheral registers</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Structured-C-access-to-Coldfire-peripheral-registers/m-p/124681#M133</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I am just moving from the 8-bit world to a Coldfire project. Am I missing something, or do the .h header files that get copied into a Coldfire Stationary project not have bit-wise and grouped bits access via structures like in the HCS08 headers?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I had to cook something up like the following to get simple bit access to various structures. I am sure with a little more thought I could have made the names just like the names in the HCS08 headers. That might make porting easier. Hopefully, somebody else has already done this. I sure would hate to have to reproduce this for all the peripheral registers on the MCF5xxx family!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;typedef union {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned char Byte;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;struct {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned char x7 :1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned char x6 :1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned char x5 :1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned char x4 :1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned char x3 :1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned char x2 :1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned char x1 :1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned char x0 :1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;} Bits;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;} ByteSTR;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define _PORTAS ((ByteSTR*)(&amp;amp;__IPSBAR[0x10000C]))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTAS _PORTAS-&amp;gt;Byte&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTAS_x0 _PORTAS-&amp;gt;Bits.x0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTAS_x1 _PORTAS-&amp;gt;Bits.x1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTAS_x2 _PORTAS-&amp;gt;Bits.x2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTAS_x3 _PORTAS-&amp;gt;Bits.x3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTAS_x4 _PORTAS-&amp;gt;Bits.x4&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTAS_x5 _PORTAS-&amp;gt;Bits.x5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTAS_x6 _PORTAS-&amp;gt;Bits.x6&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTAS_x7 _PORTAS-&amp;gt;Bits.x7&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define _PORTASDD ((ByteSTR*)(&amp;amp;__IPSBAR[0x100020]))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTASDD _PORTASDD-&amp;gt;Byte&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTASDD_x0 _PORTASDD-&amp;gt;Bits.x0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTASDD_x1 _PORTASDD-&amp;gt;Bits.x1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTASDD_x2 _PORTASDD-&amp;gt;Bits.x2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTASDD_x3 _PORTASDD-&amp;gt;Bits.x3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTASDD_x4 _PORTASDD-&amp;gt;Bits.x4&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTASDD_x5 _PORTASDD-&amp;gt;Bits.x5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTASDD_x6 _PORTASDD-&amp;gt;Bits.x6&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PORTASDD_x7 _PORTASDD-&amp;gt;Bits.x7&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Jul 2006 13:54:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Structured-C-access-to-Coldfire-peripheral-registers/m-p/124681#M133</guid>
      <dc:creator>vpmeister</dc:creator>
      <dc:date>2006-07-21T13:54:26Z</dc:date>
    </item>
    <item>
      <title>Re: Structured C access to Coldfire peripheral registers</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Structured-C-access-to-Coldfire-peripheral-registers/m-p/124682#M134</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;I guess this is a matter of preference.&lt;BR /&gt;&lt;BR /&gt;Bit fields are implementation-dependant, so your code might work with one compiler but not with another. Also, assigning bits using bit fields might result in a read-modify-write for each bit assignments, while using bit masks result in a single write:&lt;BR /&gt;&amp;gt; reg.bitA=1; reg.bitB=1; vs reg=MASK_A | MASK_B;&lt;BR /&gt;&lt;BR /&gt;Reading a single bit using either mask or bit field generates very similar copmpiled code:&lt;BR /&gt;&amp;gt; if(reg.bitA)... vs. if(reg &amp;amp; MASK_A)...&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Jul 2006 19:59:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Structured-C-access-to-Coldfire-peripheral-registers/m-p/124682#M134</guid>
      <dc:creator>mvincent</dc:creator>
      <dc:date>2006-07-21T19:59:24Z</dc:date>
    </item>
  </channel>
</rss>

