<?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>LPC MicrocontrollersのトピックRe: Cycles needed to change an IO pin</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Cycles-needed-to-change-an-IO-pin/m-p/528556#M9637</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by R2D2 on Fri Nov 06 05:36:32 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: vladimirro&lt;/STRONG&gt;&lt;BR /&gt;For example I want to change an output from low to high. Will it be done in one cycle?&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;No, you'll need &amp;gt;= 2 cycles, usually 3-4&amp;nbsp; :O &lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 19:27:22 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T19:27:22Z</dc:date>
    <item>
      <title>Cycles needed to change an IO pin</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Cycles-needed-to-change-an-IO-pin/m-p/528555#M9636</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by vladimirro on Fri Nov 06 01:26:47 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello all&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I always wondered how many processor cycles does it take to change an IO pin in arm microcontrollers. For example I want to change an output from low to high. Will it be done in one cycle? &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:27:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Cycles-needed-to-change-an-IO-pin/m-p/528555#M9636</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:27:21Z</dc:date>
    </item>
    <item>
      <title>Re: Cycles needed to change an IO pin</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Cycles-needed-to-change-an-IO-pin/m-p/528556#M9637</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by R2D2 on Fri Nov 06 05:36:32 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: vladimirro&lt;/STRONG&gt;&lt;BR /&gt;For example I want to change an output from low to high. Will it be done in one cycle?&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;No, you'll need &amp;gt;= 2 cycles, usually 3-4&amp;nbsp; :O &lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:27:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Cycles-needed-to-change-an-IO-pin/m-p/528556#M9637</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:27:22Z</dc:date>
    </item>
    <item>
      <title>Re: Cycles needed to change an IO pin</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Cycles-needed-to-change-an-IO-pin/m-p/528557#M9638</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by wmues on Fri Nov 06 07:18:19 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;You may use bit banding in cortex-m controllers.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:27:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Cycles-needed-to-change-an-IO-pin/m-p/528557#M9638</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:27:23Z</dc:date>
    </item>
    <item>
      <title>Re: Cycles needed to change an IO pin</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Cycles-needed-to-change-an-IO-pin/m-p/528558#M9639</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by R2D2 on Fri Nov 06 08:03:15 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: wmues&lt;/STRONG&gt;&lt;BR /&gt;You may use bit banding in cortex-m controllers.&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; :D &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;We are talking about M0 here, aren't we?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:27:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Cycles-needed-to-change-an-IO-pin/m-p/528558#M9639</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:27:24Z</dc:date>
    </item>
    <item>
      <title>Re: Cycles needed to change an IO pin</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Cycles-needed-to-change-an-IO-pin/m-p/528559#M9640</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by vladimirro on Fri Nov 06 10:26:04 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: R2D2&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;No, you'll need &amp;gt;= 2 cycles, usually 3-4&amp;nbsp; :O&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What does it depend on?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:27:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Cycles-needed-to-change-an-IO-pin/m-p/528559#M9640</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:27:24Z</dc:date>
    </item>
    <item>
      <title>Re: Cycles needed to change an IO pin</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Cycles-needed-to-change-an-IO-pin/m-p/528560#M9641</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by R2D2 on Sat Nov 07 16:28:29 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;It depends on your code and compiler...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Use the disassembly to see what's happening:&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Sample: Set / clear GPIO3_0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;[color=#c00]0x00000328: 0x4b03 main+40 ldr r3, [pc, #12]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; (0x338 &amp;lt;main+56&amp;gt;)&lt;BR /&gt;0x0000032a: 0x2101 main+42 movs r1, #1&lt;BR /&gt;0x0000032c: 0x6059 main+44 str r1, [r3, #4][/color]&lt;BR /&gt;[color=#03f]25&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO[3].DATA[1 &amp;lt;&amp;lt; 0] = 0 &amp;lt;&amp;lt; 0;&lt;BR /&gt;0x0000032e: 0x2200 main+46 movs r2, #0&lt;BR /&gt;0x00000330: 0x605a main+48 str r2, [r3, #4][/color]&lt;BR /&gt;[color=#090]26&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; LPC_GPIO[3].DATA[1 &amp;lt;&amp;lt; 0] = 1 &amp;lt;&amp;lt; 0;&lt;BR /&gt;0x00000332: 0x6059 main+50 str r1, [r3, #4]&lt;BR /&gt;27&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; LPC_GPIO[3].DATA[1 &amp;lt;&amp;lt; 0] = 0 &amp;lt;&amp;lt; 0;&lt;BR /&gt;0x00000334: 0x605a main+52 str r2, [r3, #4][/color]&lt;BR /&gt;28&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;0x00000336: 0xe7f7 main+54 b.n 0x328 &amp;lt;main+40&amp;gt;&lt;BR /&gt;0x00000338: 0x0000 main+56 movs r0, r0&lt;BR /&gt;0x0000033a: 0x5003 main+58 str r3, [r0, r0]&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In main+50 and main+52 you can see the fastest option: one store instruction. That's requiring 2 cycles&amp;nbsp; :) &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In main+46 - main+48 there's an additional move instruction to load 0 in r2. So that's requiring 2 (store) + 1 (move) = 3 cycles.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;And in main+40 - main+44 an additional load instruction and adding even more cycles.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In general the compiler is trying to reduce instructions and reuse register values. If that's not possible, registers have to be loaded again and more cycles are needed&amp;nbsp; :(&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:27:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Cycles-needed-to-change-an-IO-pin/m-p/528560#M9641</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:27:25Z</dc:date>
    </item>
  </channel>
</rss>

