<?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: Timing issue (flash, GPIO, wait states)</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562111#M16420</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by jsl123 on Thu Oct 10 06:03:42 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;More on this issue... :-)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If the same code runs from RAM the picture from this attachment results.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So this is clearly w/o wait states. The cursors measure exactly 3 on/off cycles which are 6 instructions and they take&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;250ns. Which leads to 24MHz!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But now the question remains: Why does the "set" command needs one wait state when run from flash while the "clear" needs no wait state?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hmm.....&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Salut, Jo"rg&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 20:01:17 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T20:01:17Z</dc:date>
    <item>
      <title>Timing issue (flash, GPIO, wait states)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562110#M16419</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by jsl123 on Thu Oct 10 03:31:08 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;First please have a look at the first picture. It shows the status on a GPIO pin for a 30MHz configured LPC810.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(Just added the "raw" files since the resolution was too bad...)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This is the result of the following code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca" style="border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;"&gt; &lt;PRE&gt;
while (1) {
LPC_GPIO_PORT-&amp;gt;SET0 = _BV (LED_LOCATION); \
LPC_GPIO_PORT-&amp;gt;CLR0 = _BV (LED_LOCATION); \
LPC_GPIO_PORT-&amp;gt;SET0 = _BV (LED_LOCATION); \
LPC_GPIO_PORT-&amp;gt;CLR0 = _BV (LED_LOCATION); \
LPC_GPIO_PORT-&amp;gt;SET0 = _BV (LED_LOCATION); \
LPC_GPIO_PORT-&amp;gt;CLR0 = _BV (LED_LOCATION); \
LPC_GPIO_PORT-&amp;gt;SET0 = _BV (LED_LOCATION); \
LPC_GPIO_PORT-&amp;gt;CLR0 = _BV (LED_LOCATION); \
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;SPAN&gt;in complete absence of interrupts and/or timers&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;which results in the following assembler:&lt;/SPAN&gt;&lt;BR /&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca" style="border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;"&gt; &lt;PRE&gt;
&amp;nbsp; 24:&amp;nbsp;&amp;nbsp; 22a0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; movs&amp;nbsp;&amp;nbsp;&amp;nbsp; r2, #160&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0xa0
&amp;nbsp; 26:&amp;nbsp;&amp;nbsp; 0612&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lsls&amp;nbsp;&amp;nbsp;&amp;nbsp; r2, r2, #24
&amp;nbsp; 28:&amp;nbsp;&amp;nbsp; 2088&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; movs&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, #136&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0x88
&amp;nbsp; 2a:&amp;nbsp;&amp;nbsp; 0180&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lsls&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, r0, #6
&amp;nbsp; 2c:&amp;nbsp;&amp;nbsp; 2304&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; movs&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, #4
&amp;nbsp; 2e:&amp;nbsp;&amp;nbsp; 218a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; movs&amp;nbsp;&amp;nbsp;&amp;nbsp; r1, #138&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0x8a
&amp;nbsp; 30:&amp;nbsp;&amp;nbsp; 0189&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lsls&amp;nbsp;&amp;nbsp;&amp;nbsp; r1, r1, #6
&amp;nbsp; 32:&amp;nbsp;&amp;nbsp; 5013&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r2, r0]
&amp;nbsp; 34:&amp;nbsp;&amp;nbsp; 5053&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r2, r1]
&amp;nbsp; 36:&amp;nbsp;&amp;nbsp; 5013&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r2, r0]
&amp;nbsp; 38:&amp;nbsp;&amp;nbsp; 5053&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r2, r1]
&amp;nbsp; 3a:&amp;nbsp;&amp;nbsp; 5013&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r2, r0]
&amp;nbsp; 3c:&amp;nbsp;&amp;nbsp; 5053&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r2, r1]
&amp;nbsp; 3e:&amp;nbsp;&amp;nbsp; 5013&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r2, r0]
&amp;nbsp; 40:&amp;nbsp;&amp;nbsp; 5053&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r2, r1]
&amp;nbsp; 42:&amp;nbsp;&amp;nbsp; e7f6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.n&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 32 &amp;lt;main+0x32&amp;gt;
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;That looks reasonable... &lt;SPAN class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;&lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You can find the groups of 4 and in between there is the branch.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;But what makes me wonder is the difference between the "set time" (70ns) and the "clear time" (30ns)! (It's not 33.3ns because of the limited resolution of my LA. &lt;SPAN class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;&lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If it where caching or other internal artefacts, I would perhaps assume a delay on the *first* "set" but not on later ones. But here every "set" is "long" i.e 2 cycles and every "clear" is one cycle.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Only to be complete. The second image shows the same for the internal PLL and the dividers setup to deliver 24MHz.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So it's the same here...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Does anyone have any explanation for this?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for reading! Salut,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; Jo"rg&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:01:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562110#M16419</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:01:16Z</dc:date>
    </item>
    <item>
      <title>Re: Timing issue (flash, GPIO, wait states)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562111#M16420</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by jsl123 on Thu Oct 10 06:03:42 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;More on this issue... :-)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If the same code runs from RAM the picture from this attachment results.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So this is clearly w/o wait states. The cursors measure exactly 3 on/off cycles which are 6 instructions and they take&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;250ns. Which leads to 24MHz!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But now the question remains: Why does the "set" command needs one wait state when run from flash while the "clear" needs no wait state?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hmm.....&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Salut, Jo"rg&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:01:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562111#M16420</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:01:17Z</dc:date>
    </item>
    <item>
      <title>Re: Timing issue (flash, GPIO, wait states)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562112#M16421</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by starblue on Thu Oct 10 09:57:12 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Because data is fetched from flash 32 bits at a time, and each thumb instruction has 16 bits (just my educated guess).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You could try whether changing the alignment moves the delay to the other transition.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:01:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562112#M16421</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:01:18Z</dc:date>
    </item>
    <item>
      <title>Re: Timing issue (flash, GPIO, wait states)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562113#M16422</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rocketdawg on Thu Oct 10 14:05:58 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Yea, remember the CM0+ is a 2 stage pipeline Von Neumann machine.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The AHB bus must switch between read and write and that should take one cycle unless it has been improved with CM0+.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;so instructions are AHB reads.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;write to a port means the bus must switch to write, then move the data.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;then read instructions again&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;or something like that.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;but like starblue, it is just a guess.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:01:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562113#M16422</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:01:19Z</dc:date>
    </item>
    <item>
      <title>Re: Timing issue (flash, GPIO, wait states)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562114#M16423</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by jsl123 on Fri Oct 11 03:38:02 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi starblue!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Yes. I had the same idea a few hours later and inserting a __asm("nop") justified this reason.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;It's really the one wait cylce while fetching a word (32bits) from flash and then issueing *two* (16bit) thumb instructions.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So, thank you! Salut, Jo"rg&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:01:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562114#M16423</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:01:19Z</dc:date>
    </item>
    <item>
      <title>Re: Timing issue (flash, GPIO, wait states)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562115#M16424</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by jsl123 on Fri Oct 11 03:42:23 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi rocketdawg!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for your answer, but after having a look into the NXP datasheet and the ARM docu I think "starblue" was right.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;BTW. The CM0+ has this feature called "single-cycle I/O port" which does the trick but only if the code runs from zero wait cycle memories (i.e. RAM).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The instruction fetches from flash still give you a wait cycle every second thumb instruction though. :-)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Salut, Jo"rg&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:01:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562115#M16424</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:01:20Z</dc:date>
    </item>
    <item>
      <title>Re: Timing issue (flash, GPIO, wait states)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562116#M16425</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by cpldcpu on Fri Oct 11 05:15:01 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;You can actually set the Flash in the LPC810 to zero waitstates up to 30Mhz, there should be no need to execute code from the SRAM to attain maximum speed.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:01:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562116#M16425</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:01:20Z</dc:date>
    </item>
    <item>
      <title>Re: Timing issue (flash, GPIO, wait states)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562117#M16426</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by jsl123 on Fri Oct 11 05:32:14 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi cpldcpu!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Can you elaborate a little on how you'd set the flash controller to zero wait states?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If I look into the "LPC800 User manual" (UM10601, rev. 1.2 from 14 March 2013) I can see on page 248:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;In section 20.4.1 (Flash configuration register) FLASHCFG&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;bit 1:0 FLASHTIM:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x0 -&amp;gt; 1 system clock flash access time&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x1 -&amp;gt; 2 system clock flash access time&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x2 and 0x3 -&amp;gt; reserved&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;bit 31:2 reserved&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So how can you set zero wait states and why do you mention "up to 30 MHz" in your post as the LPC8xx familiy is only supposed to be clocked up to 30 MHz? :-)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Can it be that your info is from another device familiy?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Salut, Jo"rg&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:01:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562117#M16426</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:01:21Z</dc:date>
    </item>
    <item>
      <title>Re: Timing issue (flash, GPIO, wait states)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562118#M16427</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by cpldcpu on Fri Oct 11 05:37:31 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;0x0 -&amp;gt; 1 system clock flash access time&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This corresponds to zero waitstates. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Well, with zero waitstates you will run both the flash and the core out of spec above 30Mhz. With one waitstate it's only the core.&amp;nbsp; :)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Btw, today I noticed in the errata that the built in ROM functions do not work at with zero waitstate access. So be careful...&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:01:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562118#M16427</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:01:22Z</dc:date>
    </item>
    <item>
      <title>Re: Timing issue (flash, GPIO, wait states)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562119#M16428</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by cpldcpu on Fri Oct 11 05:40:33 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: rocketdawg&lt;/STRONG&gt;&lt;BR /&gt;Yea, remember the CM0+ is a 2 stage pipeline Von Neumann machine.&lt;BR /&gt;The AHB bus must switch between read and write and that should take one cycle unless it has been improved with CM0+.&lt;BR /&gt;so instructions are AHB reads.&lt;BR /&gt;write to a port means the bus must switch to write, then move the data.&lt;BR /&gt;then read instructions again&lt;BR /&gt;or something like that.&lt;BR /&gt;&lt;BR /&gt;but like starblue, it is just a guess.&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;According to the LPC81X block diagram, the GPIO is not connected through the AHB bus. Single cycle port toggling should be possible both from flash and sram...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:01:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562119#M16428</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:01:22Z</dc:date>
    </item>
    <item>
      <title>Re: Timing issue (flash, GPIO, wait states)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562120#M16429</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by jsl123 on Fri Oct 11 05:56:20 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi cpldcpu, hi All!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: cpldcpu&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;0x0 -&amp;gt; 1 system clock flash access time&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;This corresponds to zero waitstates. &lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;OK. But then again please have a look at the different pictures (@24MHz) above. There is one running from ram where you can see no additional cycles. One (thumb) instructions, one cycle.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;And then running from flash which shows two instructions where one of them seems to run for an additional cycle!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you say that this is the mentioned "1 system clock" for flash access then that would mean that running from ram takes _no_ time to fetch the instruction?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Hmm.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;According to rocketdawg this is a 2-stage pipeline system. So running from ram can keep the pipeline completly filled while when running from flash there must be "gaps" in the pipeline while the core fetches from the flash (with "1 system clock"). So I'd call that a wait state in regard to zero wait states from ram? :-)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Or am I missing something?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Salut, Jo"rg&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:01:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562120#M16429</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:01:23Z</dc:date>
    </item>
    <item>
      <title>Re: Timing issue (flash, GPIO, wait states)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562121#M16430</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rocketdawg on Fri Oct 11 07:29:15 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: cpldcpu&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;According to the LPC81X block diagram, the GPIO is not connected through the AHB bus. Single cycle port toggling should be possible both from flash and sram...&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I see that.&amp;nbsp; Thanks for pointing that out.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So it has to be the core stalling for a clock.&amp;nbsp; I wonder if Starblue may be correct in that, it is an instruction fetch.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:01:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562121#M16430</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:01:23Z</dc:date>
    </item>
    <item>
      <title>Re: Timing issue (flash, GPIO, wait states)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562122#M16431</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by cpldcpu on Fri Oct 11 20:01:47 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Could the observed issue also be a sampling artifact from the logic analyzer? I think it would be more accurate to time a larger number of instructions in a loop.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When I worked on cycle accurate code (see the WS2812 thread in this forum), the instruction timing behaved as expected once i set the waitstates to zero. Although I have to admit that I probably would not have noticed if only one or two cycles were added to my loop.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:01:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562122#M16431</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:01:24Z</dc:date>
    </item>
    <item>
      <title>Re: Timing issue (flash, GPIO, wait states)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562123#M16432</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by cpldcpu on Fri Oct 11 20:03:19 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Btw, wouldn't this be a good opportunity to use the integrated System tick timer in the Cortex M0+? Has anybody tried that?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:01:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timing-issue-flash-GPIO-wait-states/m-p/562123#M16432</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:01:24Z</dc:date>
    </item>
  </channel>
</rss>

