<?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: MCF52233   Bit banging</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167382#M5930</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Oh, never mind on the SPI comment, then -- you've got bidirectional signals...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It seems you might be able to do a bit better if you could get the compiler to put your register addresses into registers...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Maybe something like:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;register vuint8 *settc = &amp;amp;MCF_GPIO_SETTC;&lt;/P&gt;&lt;P&gt;register vuint8 *porttc = &amp;amp;MCF_GPIO_PORTTC;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And then manipulate *settc and *porttc instead of the original macros...&amp;nbsp; But that's just a shot in the dark.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'll ask the obvious question...&amp;nbsp; Is your clock running at full speed?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You might be able to go a bit faster if you copied that routine to RAM to run it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 27 Mar 2009 06:40:01 GMT</pubDate>
    <dc:creator>RichTestardi</dc:creator>
    <dc:date>2009-03-27T06:40:01Z</dc:date>
    <item>
      <title>MCF52233   Bit banging</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167375#M5923</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I have written the following code and captured the output on a logic analyzer. &amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Basically I am just sending 32 1s and then the value in "data1" bit by bit.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It works, but slower than I hoped.&amp;nbsp; Look at the line with the comment "// rising edge of clock".&amp;nbsp; If I capture that rising edge of the clock on my logic analyzer and measure the time between concurrent rising edges I get&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1170 ns.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The 32 1s have a period of 460ns.&amp;nbsp; I would love to speed that up too if possible.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If found that&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if(+( (data1 &amp;lt;&amp;lt; j) &amp;amp; 0x80000000))&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;runs faster than&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;bit = ( (data1 &amp;lt;&amp;lt; j) &amp;amp; 0x80000000);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (bit == 0x80000000)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The latter had a 1230 ns period&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1170 ns is still very slow considering that the receiving device can handle a period of 80ns. &amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I don't expect to hit 80ns but I do hope to beat 1170 ns.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Does anyone have any suggestion to speed up this parallel to serial bit banging? &amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there any sample assembly for the MCF5223X that does this? &amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void phy_write(unsigned int phy, unsigned int reg, unsigned int data)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned&amp;nbsp;&amp;nbsp; &amp;nbsp;int i,data1,data2,j,bit;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;data1 = 0x50000000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;data1 = data1 + (phy &amp;lt;&amp;lt; 23);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;data1 = data1 + (reg &amp;lt;&amp;lt; 18);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;data1 = data1 + 0x00020000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;data1 = data1 + data;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// send 32 1s&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for(i=0;i&amp;lt;32;i=i+1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_GPIO_PORTTC = 0x02;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_GPIO_PORTTC = 0x03;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// send data&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(j=0;j&amp;lt;=31;j=j+1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&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;&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;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//bit = ( (data1 &amp;lt;&amp;lt; j) &amp;amp; 0x80000000);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if (bit == 0x80000000)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(+( (data1 &amp;lt;&amp;lt; j) &amp;amp; 0x80000000))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_GPIO_PORTTC = 0x02;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCF_GPIO_PORTTC = 0x00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_GPIO_PORTTC = MCF_GPIO_PORTTC + 0x01;&amp;nbsp; // rising edge of clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; MCF_GPIO_PORTTC = MCF_GPIO_PORTTC &amp;amp; 0x02;&amp;nbsp; // falling edge of clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Mar 2009 02:43:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167375#M5923</guid>
      <dc:creator>rlstraney</dc:creator>
      <dc:date>2009-03-27T02:43:11Z</dc:date>
    </item>
    <item>
      <title>Re: MCF52233   Bit banging</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167376#M5924</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm likely missing the forest for the trees here, but a simple thing you can do is replace these lines:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_GPIO_PORTTC = MCF_GPIO_PORTTC + 0x01;&amp;nbsp; // rising edge of clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_GPIO_PORTTC = MCF_GPIO_PORTTC &amp;amp; 0x02;&amp;nbsp; // falling edge of clock&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;With:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_GPIO_SETTC = 0x01;&amp;nbsp; // rising edge of clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_GPIO_CLRTC = ~0x02;&amp;nbsp; // falling edge of clock&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;That should cut your expensive register accesses, if I followed what you are doing correctly.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The next thing I'd do is look at the assembly code -- you are shifting data1 over and over again for each loop iteration...&amp;nbsp; How about shifting it in place and looking at the&amp;nbsp;high bit each time, like:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;bits = data1;&lt;/P&gt;&lt;P&gt;for (i = 0; i &amp;lt; 32; i++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (bits &amp;amp; 0x80000000) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/P&gt;&lt;P&gt;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; ...&lt;/P&gt;&lt;P&gt;&amp;nbsp; bits &amp;lt;&amp;lt;= 1;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hopefully the compiler will take advantage of the sign bit for the "&amp;amp;" operation.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-- Rich&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Mar 2009 02:57:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167376#M5924</guid>
      <dc:creator>RichTestardi</dc:creator>
      <dc:date>2009-03-27T02:57:28Z</dc:date>
    </item>
    <item>
      <title>Re: MCF52233   Bit banging</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167377#M5925</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN class="j2"&gt;Thank&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;you&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;for&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;suggestion&lt;/SPAN&gt;.&amp;nbsp; &lt;SPAN class="j2"&gt;By&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;changing&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;clock&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;as&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;you&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;suggested&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;I&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;had&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;a&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;little&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;over&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;700&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;ns&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;period&lt;/SPAN&gt; (&lt;SPAN class="j2"&gt;about&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;470ns&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;reduction&lt;/SPAN&gt;!).&amp;nbsp; &lt;SPAN class="j2"&gt;Then&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;I&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;reduced&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;it&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;even&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;further&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;by&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;taking&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;clock&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;low&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;when&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;I&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;clock&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;data&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;out&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;and&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;now&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;my&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;period&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;is&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;about&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;538&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;ns&lt;/SPAN&gt;.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j2"&gt;I&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;believe&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;you&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;were&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;implying&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;that&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;by&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;shifting&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;variable&lt;/SPAN&gt; "&lt;SPAN class="j2"&gt;bit&lt;/SPAN&gt;" &lt;SPAN class="j2"&gt;by&lt;/SPAN&gt; _&lt;SPAN class="j2"&gt;one&lt;/SPAN&gt;_ &lt;SPAN class="j2"&gt;each&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;iteration&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;instead&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;of&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;my&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;variable&lt;/SPAN&gt; "&lt;SPAN class="j4"&gt;byte1&lt;/SPAN&gt;" &lt;SPAN class="j2"&gt;by&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;whatever&lt;/SPAN&gt; _&lt;SPAN class="j2"&gt;j&lt;/SPAN&gt;_ &lt;SPAN class="j2"&gt;is&lt;/SPAN&gt; (&lt;SPAN class="j2"&gt;which&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;could&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;be&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;between&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;0&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;and&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;31&lt;/SPAN&gt;) &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;code&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;should&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;be&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;faster&lt;/SPAN&gt;? &amp;nbsp; &lt;SPAN class="j2"&gt;It&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;didn't&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;turn&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;out&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;that&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;way&lt;/SPAN&gt;.&amp;nbsp; &lt;SPAN class="j2"&gt;In&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;fact&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;it&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;didn't&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;make&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;any&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;difference&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;at&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;all&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;on&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;clock&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;period&lt;/SPAN&gt;.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j2"&gt;Below&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;I&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;have&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;commented&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;out&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;line&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;that&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;says&lt;/SPAN&gt; "&lt;SPAN class="j4"&gt;try1&lt;/SPAN&gt;" &lt;SPAN class="j2"&gt;and&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;added&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;lines&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;that&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;say&lt;/SPAN&gt; "&lt;SPAN class="j2"&gt;try&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;2&lt;/SPAN&gt;" - &lt;SPAN class="j2"&gt;resulting&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;in&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;what&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;I&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;believe&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;you&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;were&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;suggesting&lt;/SPAN&gt;.&amp;nbsp;&amp;nbsp; &lt;SPAN class="j2"&gt;Both&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;of&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;those&lt;/SPAN&gt; "&lt;SPAN class="j4"&gt;trys&lt;/SPAN&gt;" &lt;SPAN class="j2"&gt;yield&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;a&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;536&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;ns&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;clock&lt;/SPAN&gt;. &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j2"&gt;It&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;is&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;interesting&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;note&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;that&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;by&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;changing&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;the&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;compiler&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;optimization&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;from&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;off&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;to&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;level&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;4&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;I&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;have&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;a&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;500&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;ns&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;period&lt;/SPAN&gt;, &lt;SPAN class="j2"&gt;saving&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;about&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;38&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;ns&lt;/SPAN&gt;.&amp;nbsp; (&lt;SPAN class="j2"&gt;I&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;tried&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;this&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;setting&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;with&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;both&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;try1&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;and&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;try2&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;code&lt;/SPAN&gt;)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="j2"&gt;void&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;phy_&lt;/SPAN&gt;&lt;SPAN class="j2"&gt;write&lt;/SPAN&gt;(&lt;SPAN class="j2"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;int&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;phy&lt;/SPAN&gt;, &lt;SPAN class="j2"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;int&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;reg&lt;/SPAN&gt;, &lt;SPAN class="j2"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;int&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;data&lt;/SPAN&gt;)&lt;BR /&gt;{&lt;BR /&gt;&lt;SPAN class="j2"&gt;unsigned&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;SPAN class="j4"&gt;int&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;i&lt;/SPAN&gt;,&lt;SPAN class="j4"&gt;data1&lt;/SPAN&gt;,&lt;SPAN class="j2"&gt;j&lt;/SPAN&gt;,&lt;SPAN class="j2"&gt;bit&lt;/SPAN&gt;;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;SPAN class="j4"&gt;data1&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;0x50000000&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;SPAN class="j4"&gt;data1&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;data1&lt;/SPAN&gt; + (&lt;SPAN class="j4"&gt;phy&lt;/SPAN&gt; &amp;lt;&amp;lt; &lt;SPAN class="j4"&gt;23&lt;/SPAN&gt;);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;SPAN class="j4"&gt;data1&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;data1&lt;/SPAN&gt; + (&lt;SPAN class="j4"&gt;reg&lt;/SPAN&gt; &amp;lt;&amp;lt; &lt;SPAN class="j4"&gt;18&lt;/SPAN&gt;);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;SPAN class="j4"&gt;data1&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;data1&lt;/SPAN&gt; + &lt;SPAN class="j4"&gt;0x00020000&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;SPAN class="j4"&gt;data1&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;data1&lt;/SPAN&gt; + &lt;SPAN class="j2"&gt;data&lt;/SPAN&gt;;&lt;BR /&gt;// &lt;SPAN class="j2"&gt;send&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;32&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;1s&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;SPAN class="j2"&gt;for&lt;/SPAN&gt;(&lt;SPAN class="j4"&gt;i&lt;/SPAN&gt;=&lt;SPAN class="j4"&gt;0&lt;/SPAN&gt;;&lt;SPAN class="j4"&gt;i&lt;/SPAN&gt;&amp;lt;&lt;SPAN class="j4"&gt;32&lt;/SPAN&gt;;&lt;SPAN class="j4"&gt;i&lt;/SPAN&gt;=&lt;SPAN class="j4"&gt;i&lt;/SPAN&gt;+&lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j4"&gt;MCF_&lt;/SPAN&gt;&lt;SPAN class="j4"&gt;GPIO_&lt;/SPAN&gt;&lt;SPAN class="j4"&gt;PORTTC&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;0x02&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j4"&gt;MCF_&lt;/SPAN&gt;&lt;SPAN class="j4"&gt;GPIO_&lt;/SPAN&gt;&lt;SPAN class="j4"&gt;PORTTC&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;0x03&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;// &lt;SPAN class="j2"&gt;send&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;data&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="j2"&gt;bit&lt;/SPAN&gt; = &lt;SPAN class="j4"&gt;data1&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j2"&gt;for&lt;/SPAN&gt;(&lt;SPAN class="j2"&gt;j&lt;/SPAN&gt;=&lt;SPAN class="j4"&gt;0&lt;/SPAN&gt;;&lt;SPAN class="j2"&gt;j&lt;/SPAN&gt;&amp;lt;=&lt;SPAN class="j4"&gt;31&lt;/SPAN&gt;;&lt;SPAN class="j2"&gt;j&lt;/SPAN&gt;=&lt;SPAN class="j2"&gt;j&lt;/SPAN&gt;+&lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&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;&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;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;SPAN class="j2"&gt;if&lt;/SPAN&gt;(+( (&lt;SPAN class="j4"&gt;data1&lt;/SPAN&gt; &amp;lt;&amp;lt; &lt;SPAN class="j2"&gt;j&lt;/SPAN&gt;) &amp;amp; &lt;SPAN class="j4"&gt;0x80000000&lt;/SPAN&gt;))&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// &lt;SPAN class="j2"&gt;try&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j2"&gt;if&lt;/SPAN&gt;(&lt;SPAN class="j2"&gt;bit&lt;/SPAN&gt;&amp;amp;&lt;SPAN class="j4"&gt;0x80000000&lt;/SPAN&gt;) &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;// &lt;SPAN class="j2"&gt;try&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;2&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j4"&gt;MCF_&lt;/SPAN&gt;&lt;SPAN class="j4"&gt;GPIO_&lt;/SPAN&gt;&lt;SPAN class="j3"&gt;PORTTC&lt;/SPAN&gt; = &lt;SPAN class="j3"&gt;0x02&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j2"&gt;else&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&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; &lt;SPAN class="j3"&gt;MCF_&lt;/SPAN&gt;&lt;SPAN class="j3"&gt;GPIO_&lt;/SPAN&gt;&lt;SPAN class="j3"&gt;PORTTC&lt;/SPAN&gt; = &lt;SPAN class="j3"&gt;0x00&lt;/SPAN&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j2"&gt;bit&lt;/SPAN&gt; &amp;lt;&amp;lt;=&lt;SPAN class="j4"&gt;1&lt;/SPAN&gt;;&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// &lt;SPAN class="j2"&gt;try&lt;/SPAN&gt; &lt;SPAN class="j4"&gt;2&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="j3"&gt;MCF_&lt;/SPAN&gt;&lt;SPAN class="j3"&gt;GPIO_&lt;/SPAN&gt;&lt;SPAN class="j3"&gt;SETTC&lt;/SPAN&gt; = &lt;SPAN class="j3"&gt;0x01&lt;/SPAN&gt;;&amp;nbsp; // &lt;SPAN class="j2"&gt;rising&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;edge&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;of&lt;/SPAN&gt; &lt;SPAN class="j2"&gt;clock&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Mar 2009 04:42:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167377#M5925</guid>
      <dc:creator>rlstraney</dc:creator>
      <dc:date>2009-03-27T04:42:01Z</dc:date>
    </item>
    <item>
      <title>Re: MCF52233   Bit banging</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167378#M5926</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;A multi-bit shift should be the same speed as a single-bit, if a barrel shifter is in use.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The place it should help is you're maintaining less state when you shift by a constant than by a register.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Have you turned up your optimizations?&amp;nbsp; In particular, you want Level 4, optimize for speed, and register coloring, peephole optimizations, and instruction scheduling all turned on.&amp;nbsp; In general, you can not keep a6 stack frames, if you want max speed and minimum code size, but that won't help you in a leaf function.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can you post the disassembly?&amp;nbsp; Right click -&amp;gt; Disassemble.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The compiler should be using the sign bit.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-- Rich&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Mar 2009 04:59:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167378#M5926</guid>
      <dc:creator>RichTestardi</dc:creator>
      <dc:date>2009-03-27T04:59:25Z</dc:date>
    </item>
    <item>
      <title>Re: MCF52233   Bit banging</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167379#M5927</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have Optimize for "faster execution speed"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;set compiler to Level 4&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;All three of these are checked:&lt;/P&gt;&lt;P&gt;Register coloring&lt;/P&gt;&lt;P&gt;Instruction scheduling&lt;/P&gt;&lt;P&gt;peephole&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;A6 Stack Frames is checked.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;(not sure what all of the above are for - I will look them up)&lt;/P&gt;&lt;BR /&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I single stepped into the phy_write function, here is the assembly:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;20000900: 4E560000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; link&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a6,#0&lt;BR /&gt;20000904: 2F07&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; d7,-(a7)&lt;BR /&gt;20000906: 2F06&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; d6,-(a7)&lt;BR /&gt;20000908: 2C2E0008&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; 8(a6),d6&lt;BR /&gt;2000090C: 2E2E000C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; 12(a6),d7&lt;BR /&gt;20000910: 242E0010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; 16(a6),d2&lt;BR /&gt;20000914: 203C50000000&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; #1342177280,d0&lt;BR /&gt;2000091A: 7217&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #23,d1&lt;BR /&gt;2000091C: E3AE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lsl.l&amp;nbsp;&amp;nbsp;&amp;nbsp; d1,d6&lt;BR /&gt;2000091E: D086&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; add.l&amp;nbsp;&amp;nbsp;&amp;nbsp; d6,d0&lt;BR /&gt;20000920: 7212&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #18,d1&lt;BR /&gt;20000922: E3AF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lsl.l&amp;nbsp;&amp;nbsp;&amp;nbsp; d1,d7&lt;BR /&gt;20000924: D087&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; add.l&amp;nbsp;&amp;nbsp;&amp;nbsp; d7,d0&lt;BR /&gt;20000926: 068000020000&amp;nbsp;&amp;nbsp;&amp;nbsp; addi.l&amp;nbsp;&amp;nbsp; #131072,d0&lt;BR /&gt;2000092C: D082&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; add.l&amp;nbsp;&amp;nbsp;&amp;nbsp; d2,d0&lt;BR /&gt;2000092E: 7E00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #0,d7&lt;BR /&gt;20000930: 7402&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #2,d2&lt;BR /&gt;20000932: 7203&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #3,d1&lt;BR /&gt;20000934: 13C24010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d2,0x4010000F (0x4010000f)&lt;BR /&gt;2000093A: 5887&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addq.l&amp;nbsp;&amp;nbsp; #4,d7&lt;BR /&gt;2000093C: 13C14010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d1,0x4010000F (0x4010000f)&lt;BR /&gt;20000942: 13C24010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d2,0x4010000F (0x4010000f)&lt;BR /&gt;20000948: 13C14010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d1,0x4010000F (0x4010000f)&lt;BR /&gt;2000094E: 13C24010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d2,0x4010000F (0x4010000f)&lt;BR /&gt;20000954: 13C14010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d1,0x4010000F (0x4010000f)&lt;BR /&gt;2000095A: 13C24010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d2,0x4010000F (0x4010000f)&lt;BR /&gt;20000960: 13C14010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d1,0x4010000F (0x4010000f)&lt;BR /&gt;20000966: 0C8700000020&amp;nbsp;&amp;nbsp;&amp;nbsp; cmpi.l&amp;nbsp;&amp;nbsp; #32,d7&lt;BR /&gt;2000096C: 65C6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bcs.s&amp;nbsp;&amp;nbsp;&amp;nbsp; phy_write+0x34 (0x20000934); 0x20000934&lt;BR /&gt;2000096E: 7E00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #0,d7&lt;BR /&gt;20000970: 7402&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #2,d2&lt;BR /&gt;20000972: 7201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,d1&lt;BR /&gt;20000974: 0800001F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; btst&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #31,d0&lt;BR /&gt;20000978: 6708&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; beq.s&amp;nbsp;&amp;nbsp;&amp;nbsp; phy_write+0x82 (0x20000982); 0x20000982&lt;BR /&gt;2000097A: 13C24010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d2,0x4010000F (0x4010000f)&lt;BR /&gt;20000980: 6006&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bra.s&amp;nbsp;&amp;nbsp;&amp;nbsp; phy_write+0x88 (0x20000988); 0x20000988&lt;BR /&gt;20000982: 42394010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; clr.b&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4010000F (0x4010000f)&lt;BR /&gt;20000988: E388&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lsl.l&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,d0&lt;BR /&gt;2000098A: 13C14010003F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d1,0x4010003F (0x4010003f)&lt;BR /&gt;20000990: 5287&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addq.l&amp;nbsp;&amp;nbsp; #1,d7&lt;BR /&gt;20000992: 0C870000001F&amp;nbsp;&amp;nbsp;&amp;nbsp; cmpi.l&amp;nbsp;&amp;nbsp; #31,d7&lt;BR /&gt;20000998: 63DA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bls.s&amp;nbsp;&amp;nbsp;&amp;nbsp; phy_write+0x74 (0x20000974); 0x20000974&lt;BR /&gt;2000099A: 2C1F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; (a7)+,d6&lt;BR /&gt;2000099C: 2E1F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; (a7)+,d7&lt;BR /&gt;2000099E: 4E5E&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlk&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a6&lt;BR /&gt;200009A0: 4E75&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rts&lt;BR /&gt;200009A2: 51FC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trapf&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Renee&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Mar 2009 05:28:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167379#M5927</guid>
      <dc:creator>rlstraney</dc:creator>
      <dc:date>2009-03-27T05:28:40Z</dc:date>
    </item>
    <item>
      <title>Re: MCF52233   Bit banging</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167380#M5928</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Can you right-click on your .c file and select Disassemble?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Then search for your function in the resulting output.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;That will give you C intermixed with assembly, so you can see why the compiler is doing what it is doing.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Actually, the code does not look too bad at all -- one of your loops got unrolled and the other is from X974 to X998.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You might be able to eek out another factor of 2 here, but not much more I believe.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Maybe we should step back and see what you are trying to do?&amp;nbsp; What kind of device are you trying to talk to?&amp;nbsp; If you're generating clock and data, you might have better luck using the built in SPI peripheral.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Mar 2009 05:40:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167380#M5928</guid>
      <dc:creator>RichTestardi</dc:creator>
      <dc:date>2009-03-27T05:40:57Z</dc:date>
    </item>
    <item>
      <title>Re: MCF52233   Bit banging</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167381#M5929</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am writing to the management interface of an ethernet phy (MDIO and MDC - data and clock respectively). &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is my first time working with Freescale.&amp;nbsp; I just wanted to see how fast I could get this to work.&amp;nbsp; Didn't know if I should change the board before it is built and have the Phy management bus go to the FPGA instead of the MCF52233.&amp;nbsp; I know I can get the FPGA to run at this speed but it is so much easier doing this in the software because it is quicker to change.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I couldn't right click and get dissasembly but I could go to data-view mixed and get the following:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;{&lt;BR /&gt;20000900: 4E560000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; link&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a6,#0&lt;BR /&gt;20000904: 2F07&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; d7,-(a7)&lt;BR /&gt;20000906: 2F06&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; d6,-(a7)&lt;BR /&gt;20000908: 2C2E0008&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; 8(a6),d6&lt;BR /&gt;2000090C: 2E2E000C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; 12(a6),d7&lt;BR /&gt;20000910: 242E0010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; 16(a6),d2&lt;BR /&gt;unsigned&amp;nbsp;&amp;nbsp;&amp;nbsp; int i,data1,j,bit;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data1 = 0x50000000;&lt;BR /&gt;20000914: 203C50000000&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; #1342177280,d0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data1 = data1 + (phy &amp;lt;&amp;lt; 23);&lt;BR /&gt;2000091A: 7217&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #23,d1&lt;BR /&gt;2000091C: E3AE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lsl.l&amp;nbsp;&amp;nbsp;&amp;nbsp; d1,d6&lt;BR /&gt;2000091E: D086&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; add.l&amp;nbsp;&amp;nbsp;&amp;nbsp; d6,d0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data1 = data1 + (reg &amp;lt;&amp;lt; 18);&lt;BR /&gt;20000920: 7212&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #18,d1&lt;BR /&gt;20000922: E3AF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lsl.l&amp;nbsp;&amp;nbsp;&amp;nbsp; d1,d7&lt;BR /&gt;20000924: D087&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; add.l&amp;nbsp;&amp;nbsp;&amp;nbsp; d7,d0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data1 = data1 + 0x00020000;&lt;BR /&gt;20000926: 068000020000&amp;nbsp;&amp;nbsp;&amp;nbsp; addi.l&amp;nbsp;&amp;nbsp; #131072,d0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data1 = data1 + data;&lt;BR /&gt;2000092C: D082&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; add.l&amp;nbsp;&amp;nbsp;&amp;nbsp; d2,d0&lt;BR /&gt;// send 32 1s&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(i=0;i&amp;lt;32;i=i+1)&lt;BR /&gt;2000092E: 7E00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #0,d7&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_GPIO_PORTTC = 0x02;&lt;BR /&gt;20000930: 7402&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #2,d2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_GPIO_PORTTC = 0x03;&lt;BR /&gt;20000932: 7203&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #3,d1&lt;BR /&gt;20000934: 13C24010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d2,0x4010000F (0x4010000f)&lt;BR /&gt;2000093A: 5887&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addq.l&amp;nbsp;&amp;nbsp; #4,d7&lt;BR /&gt;2000093C: 13C14010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d1,0x4010000F (0x4010000f)&lt;BR /&gt;20000942: 13C24010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d2,0x4010000F (0x4010000f)&lt;BR /&gt;20000948: 13C14010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d1,0x4010000F (0x4010000f)&lt;BR /&gt;2000094E: 13C24010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d2,0x4010000F (0x4010000f)&lt;BR /&gt;20000954: 13C14010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d1,0x4010000F (0x4010000f)&lt;BR /&gt;2000095A: 13C24010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d2,0x4010000F (0x4010000f)&lt;BR /&gt;20000960: 13C14010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d1,0x4010000F (0x4010000f)&lt;BR /&gt;20000966: 0C8700000020&amp;nbsp;&amp;nbsp;&amp;nbsp; cmpi.l&amp;nbsp;&amp;nbsp; #32,d7&lt;BR /&gt;2000096C: 65C6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bcs.s&amp;nbsp;&amp;nbsp;&amp;nbsp; phy_write+0x34 (0x20000934); 0x20000934&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;// send data&lt;BR /&gt;bit = data1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(j=0;j&amp;lt;=31;j=j+1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;2000096E: 7E00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #0,d7&lt;BR /&gt;&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;&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;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if(+( (data1 &amp;lt;&amp;lt; j) &amp;amp; 0x80000000))&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // try 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(bit&amp;amp;0x80000000)&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; // try 2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_GPIO_PORTTC = 0x02;&lt;BR /&gt;20000970: 7402&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #2,d2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&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; MCF_GPIO_PORTTC = 0x00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bit &amp;lt;&amp;lt;=1;&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;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // try 2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_GPIO_SETTC = 0x01;&amp;nbsp; // rising edge of clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;20000972: 7201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,d1&lt;BR /&gt;20000974: 0800001F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; btst&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #31,d0&lt;BR /&gt;20000978: 6708&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; beq.s&amp;nbsp;&amp;nbsp;&amp;nbsp; phy_write+0x82 (0x20000982); 0x20000982&lt;BR /&gt;2000097A: 13C24010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d2,0x4010000F (0x4010000f)&lt;BR /&gt;20000980: 6006&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bra.s&amp;nbsp;&amp;nbsp;&amp;nbsp; phy_write+0x88 (0x20000988); 0x20000988&lt;BR /&gt;20000982: 42394010000F&amp;nbsp;&amp;nbsp;&amp;nbsp; clr.b&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4010000F (0x4010000f)&lt;BR /&gt;20000988: E388&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lsl.l&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,d0&lt;BR /&gt;2000098A: 13C14010003F&amp;nbsp;&amp;nbsp;&amp;nbsp; move.b&amp;nbsp;&amp;nbsp; d1,0x4010003F (0x4010003f)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;20000990: 5287&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addq.l&amp;nbsp;&amp;nbsp; #1,d7&lt;BR /&gt;20000992: 0C870000001F&amp;nbsp;&amp;nbsp;&amp;nbsp; cmpi.l&amp;nbsp;&amp;nbsp; #31,d7&lt;BR /&gt;20000998: 63DA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bls.s&amp;nbsp;&amp;nbsp;&amp;nbsp; phy_write+0x74 (0x20000974); 0x20000974&lt;BR /&gt;}&lt;BR /&gt;2000099A: 2C1F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; (a7)+,d6&lt;BR /&gt;2000099C: 2E1F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; move.l&amp;nbsp;&amp;nbsp; (a7)+,d7&lt;BR /&gt;2000099E: 4E5E&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlk&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a6&lt;BR /&gt;200009A0: 4E75&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rts&lt;BR /&gt;200009A2: 51FC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trapf&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Mar 2009 06:19:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167381#M5929</guid>
      <dc:creator>rlstraney</dc:creator>
      <dc:date>2009-03-27T06:19:38Z</dc:date>
    </item>
    <item>
      <title>Re: MCF52233   Bit banging</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167382#M5930</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Oh, never mind on the SPI comment, then -- you've got bidirectional signals...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It seems you might be able to do a bit better if you could get the compiler to put your register addresses into registers...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Maybe something like:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;register vuint8 *settc = &amp;amp;MCF_GPIO_SETTC;&lt;/P&gt;&lt;P&gt;register vuint8 *porttc = &amp;amp;MCF_GPIO_PORTTC;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And then manipulate *settc and *porttc instead of the original macros...&amp;nbsp; But that's just a shot in the dark.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'll ask the obvious question...&amp;nbsp; Is your clock running at full speed?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You might be able to go a bit faster if you copied that routine to RAM to run it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Mar 2009 06:40:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167382#M5930</guid>
      <dc:creator>RichTestardi</dc:creator>
      <dc:date>2009-03-27T06:40:01Z</dc:date>
    </item>
    <item>
      <title>Re: MCF52233   Bit banging</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167383#M5931</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to verify the frequency of the system clock.&amp;nbsp;&amp;nbsp; MFD is set to 4 and RFD is set to 0.&amp;nbsp;&amp;nbsp; Using the equation in the data sheet that implies that the Fsys is Fref * 12.&amp;nbsp;&amp;nbsp; My Xtal is 25 Mhz but there is a PLL Predivider in figure 7-1 of MCF52235 that I cannot figure out what it is set to.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For some reason I thought it was set to divide by 5, but was expecting a 60 Mhz system clock and therefore may have assumed it was set to divide by 5.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Maybe it is right in front of me but I don't see where they explicitly say what this divider is set to.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Does anyone have any idea?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Just FYI: I am using the M52233demo board and the xtal appears to be 25 Mhz and it has the MCF52233 on it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;Renee&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Mar 2009 23:47:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167383#M5931</guid>
      <dc:creator>rlstraney</dc:creator>
      <dc:date>2009-03-27T23:47:32Z</dc:date>
    </item>
    <item>
      <title>Re: MCF52233   Bit banging</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167384#M5932</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is how I set my 52233 to run at 60MHz with a 25MHz crystal:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;
    // we use the 25MHz crystal divided by 5    MCF_CLOCK_CCHR = 4;    // and multiply by 12 to get 60MHz    MCF_CLOCK_SYNCR = MCF_CLOCK_SYNCR_MFD(4)|MCF_CLOCK_SYNCR_CLKSRC|MCF_CLOCK_SYNCR_PLLMODE|MCF_CLOCK_SYNCR_PLLEN;        // no USB    cpu_frequency = 60000000;    bus_frequency = cpu_frequency/2;    oscillator_frequency = 25000000;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I believe CCHR is your pre-divider in that picture.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-- Rich&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 09:14:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF52233-Bit-banging/m-p/167384#M5932</guid>
      <dc:creator>RichTestardi</dc:creator>
      <dc:date>2020-10-29T09:14:45Z</dc:date>
    </item>
  </channel>
</rss>

