<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic do FIOSET and FIOCLR need shared memory protection with RTOS in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/do-FIOSET-and-FIOCLR-need-shared-memory-protection-with-RTOS/m-p/522572#M5208</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by william.vh on Sun May 31 12:11:47 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Using LPCXprersso IDE with LPC1769 and implementing freeRTOS..but reasonably new to RTOS and the concept of shared resources protection. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I am struggling to determine if FIOSET and FIOCLR need mutex protection if multiple tasks are toggling pins on the same port.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;As simple pin set in C looks like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
33&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO0-&amp;gt;FIOSET = (1 &amp;lt;&amp;lt; pin);

&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; 0000113c:&amp;nbsp;&amp;nbsp; movs r3, #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; 0000113e:&amp;nbsp;&amp;nbsp; lsls r3, r0
&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; 00001140:&amp;nbsp;&amp;nbsp; ldr r2, [pc, #4]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; (0x1148 &amp;lt;GPIO_0_on+12&amp;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; 00001142:&amp;nbsp;&amp;nbsp; str r3, [r2, #24]
&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; 00001144:&amp;nbsp;&amp;nbsp; bx lr
&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; 00001146:&amp;nbsp;&amp;nbsp; nop 
&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; 00001148:&amp;nbsp;&amp;nbsp; stmia r0!, {}
&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; 0000114a:&amp;nbsp;&amp;nbsp; movs r0, #9
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;No two tasks use the same pin, but tasks do share the port. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I caught something on the logic analyzer (that I can't recreate) yesterday that can only be explained by a malfunctioning sensor or a shared resource issue. The sensor seems fine.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Do I need mutex protection for the FIOSET and FIOCLR registers? &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks in advance.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Billy&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 17:56:27 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T17:56:27Z</dc:date>
    <item>
      <title>do FIOSET and FIOCLR need shared memory protection with RTOS</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/do-FIOSET-and-FIOCLR-need-shared-memory-protection-with-RTOS/m-p/522572#M5208</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by william.vh on Sun May 31 12:11:47 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Using LPCXprersso IDE with LPC1769 and implementing freeRTOS..but reasonably new to RTOS and the concept of shared resources protection. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I am struggling to determine if FIOSET and FIOCLR need mutex protection if multiple tasks are toggling pins on the same port.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;As simple pin set in C looks like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
33&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO0-&amp;gt;FIOSET = (1 &amp;lt;&amp;lt; pin);

&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; 0000113c:&amp;nbsp;&amp;nbsp; movs r3, #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; 0000113e:&amp;nbsp;&amp;nbsp; lsls r3, r0
&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; 00001140:&amp;nbsp;&amp;nbsp; ldr r2, [pc, #4]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; (0x1148 &amp;lt;GPIO_0_on+12&amp;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; 00001142:&amp;nbsp;&amp;nbsp; str r3, [r2, #24]
&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; 00001144:&amp;nbsp;&amp;nbsp; bx lr
&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; 00001146:&amp;nbsp;&amp;nbsp; nop 
&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; 00001148:&amp;nbsp;&amp;nbsp; stmia r0!, {}
&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; 0000114a:&amp;nbsp;&amp;nbsp; movs r0, #9
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;No two tasks use the same pin, but tasks do share the port. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I caught something on the logic analyzer (that I can't recreate) yesterday that can only be explained by a malfunctioning sensor or a shared resource issue. The sensor seems fine.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Do I need mutex protection for the FIOSET and FIOCLR registers? &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks in advance.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Billy&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:56:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/do-FIOSET-and-FIOCLR-need-shared-memory-protection-with-RTOS/m-p/522572#M5208</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:56:27Z</dc:date>
    </item>
    <item>
      <title>Re: do FIOSET and FIOCLR need shared memory protection with RTOS</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/do-FIOSET-and-FIOCLR-need-shared-memory-protection-with-RTOS/m-p/522573#M5209</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 Mon Jun 01 01:25:53 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;No, you shouldn't need a mutex.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Such SET/CLR registers exist precisely so that you can set or clear a bit atomically with a single write. It avoids the dangerous read-modify-write, which would indeed need some form of protection.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;A common mistake in this context is to use |= instead of =, but that's correct in your example code (maybe not everywhere?).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If the MPU were misconfigured for GPIO it might cause problems (but that would be very unusual). I.e. if GPIO were configured like normal RAM a cache might swallow the first write of two.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:56:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/do-FIOSET-and-FIOCLR-need-shared-memory-protection-with-RTOS/m-p/522573#M5209</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:56:28Z</dc:date>
    </item>
    <item>
      <title>Re: do FIOSET and FIOCLR need shared memory protection with RTOS</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/do-FIOSET-and-FIOCLR-need-shared-memory-protection-with-RTOS/m-p/522574#M5210</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by MikeSimmonds on Mon Jun 01 02:32:51 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;However, one thing to watch for is the PIN MASK; that would have problems if two tasks set (and didn't reset to original)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;with different values. That would need protection around the entire GPIO operation.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Mike&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:56:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/do-FIOSET-and-FIOCLR-need-shared-memory-protection-with-RTOS/m-p/522574#M5210</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:56:29Z</dc:date>
    </item>
    <item>
      <title>Re: do FIOSET and FIOCLR need shared memory protection with RTOS</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/do-FIOSET-and-FIOCLR-need-shared-memory-protection-with-RTOS/m-p/522575#M5211</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by william.vh on Mon Jun 01 23:05:21 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for the help Mike and star.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'll cross this one off the list and keep looking.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:56:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/do-FIOSET-and-FIOCLR-need-shared-memory-protection-with-RTOS/m-p/522575#M5211</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:56:29Z</dc:date>
    </item>
    <item>
      <title>Re: do FIOSET and FIOCLR need shared memory protection with RTOS</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/do-FIOSET-and-FIOCLR-need-shared-memory-protection-with-RTOS/m-p/522576#M5212</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi, i have project with two task RTX in LPC1768, two task use FIOSET FIOCLR with = (not |=) and i have corruption on the port. The two task not work in the same pin, but the same port and the read PORT SET is corrupt with a previous value of the port...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Feb 2020 15:20:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/do-FIOSET-and-FIOCLR-need-shared-memory-protection-with-RTOS/m-p/522576#M5212</guid>
      <dc:creator>thibaud_ravel</dc:creator>
      <dc:date>2020-02-26T15:20:46Z</dc:date>
    </item>
  </channel>
</rss>

