<?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: Issue setting and clearing bits</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Issue-setting-and-clearing-bits/m-p/563384#M16660</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 Jul 02 06:48:51 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: lpc_bloke&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
GPIO_SET |= (1&amp;lt;&amp;lt;0);
delay();
GPIO_CLEAR |= (1&amp;lt;&amp;lt;0);
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;You also don't need the read-modify-write sequence above if you are changing all the bits at one time.&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It's wrong to use read-modify-write here. Every 1 bit in the word you write will do the Set or Clear operation on the corresponding port bit, so the correct way is like this:&lt;/SPAN&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
GPIO_SET = (1&amp;lt;&amp;lt;0);
delay();
GPIO_CLEAR = (1&amp;lt;&amp;lt;0);
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 20:02:28 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T20:02:28Z</dc:date>
    <item>
      <title>Issue setting and clearing bits</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Issue-setting-and-clearing-bits/m-p/563381#M16657</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by MarkG on Thu Jul 02 02:01:52 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi Folks.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am relatively new to NXP 32 bit processors so I apologise in advance if this question seems silly. I am having an issue turning a bit on and off. Using the following code pin should go high and low but it stays high. Am I using the correct format to clear the bit?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;stdint.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//registers used for gpio &amp;amp; systick setup&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define GPIO_NOT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*((volatile unsigned int *)(0xA0002300)))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define GPIO_SET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*((volatile unsigned int *)(0xA0002200)))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define GPIO_CLEAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*((volatile unsigned int *)(0xA0002280)))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define GPIO_DIR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*((volatile unsigned int *)(0xA0002000)))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define SYSCON_PRESETCTRL&amp;nbsp;&amp;nbsp;&amp;nbsp; (*((volatile unsigned int *)(0x40048004)))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define SYSCON_SYSAHBCLKCTRL (*((volatile unsigned int *)(0x40048080)))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define NVIC_ST_CTRL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*((volatile unsigned int *)(0xE000E010)))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define NVIC_ST_RELOAD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*((volatile unsigned int *)(0xE000E014))) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define NVIC_ST_CURRENT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*((volatile unsigned int *)(0xE000E018))) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define SCB_SHP1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*((volatile unsigned int *)(0xE000ED20)))&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void delay(void) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; int volatile counter = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; while(counter &amp;lt; 1000000){&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++counter;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int main(void) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //enable AHB clock to the GPIO domain&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; SYSCON_SYSAHBCLKCTRL |= (1&amp;lt;&amp;lt;6);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //reset gpio peripheral control&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; SYSCON_PRESETCTRL &amp;amp;= ~(1&amp;lt;&amp;lt;10);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; SYSCON_PRESETCTRL |= (1&amp;lt;&amp;lt;10);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //make gpio #0 pin an output (physical pin #8)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; GPIO_DIR |= (1&amp;lt;&amp;lt;0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //set systick clock interrupt reload count&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; NVIC_ST_RELOAD = (1200000UL &amp;amp; 0xFFFFFFUL) - 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //set SysTick IRQ to lowest priority&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; SCB_SHP1 = 0xC0000000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //reset the counter&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; NVIC_ST_CURRENT = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //enable the IRQ and go&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; NVIC_ST_CTRL = 0x07;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //loop forever&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; while(1){&lt;/SPAN&gt;&lt;BR /&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; GPIO_SET |= (1&amp;lt;&amp;lt;0);&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; delay();&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; GPIO_SET |= (0&amp;lt;&amp;lt;0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay();&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; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If I change the main while loop to below it goes high only once&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; while(1){&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; GPIO_NOT |= (1&amp;lt;&amp;lt;0); //toggle led pin&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; /delay();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any ideas as to why this may be happening and/or is there a better way to turn the pins on and off?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Mark.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:02:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Issue-setting-and-clearing-bits/m-p/563381#M16657</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:02:26Z</dc:date>
    </item>
    <item>
      <title>Re: Issue setting and clearing bits</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Issue-setting-and-clearing-bits/m-p/563382#M16658</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by lpc_bloke on Thu Jul 02 03:01:22 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Try this in your code above:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//loop forever&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;while(1){&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;GPIO_SET |= (1&amp;lt;&amp;lt;0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;delay();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;GPIO_CLEAR |= (1&amp;lt;&amp;lt;0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;delay();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;There are two registers to allow changing more that one pin at a time.&amp;nbsp; I suggest reading the chip user manual on GPIO at least 3-times.&amp;nbsp; Then you will start to understand what they are talking about.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You also don't need the read-modify-write sequence above if you are changing all the bits at one time.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:02:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Issue-setting-and-clearing-bits/m-p/563382#M16658</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:02:27Z</dc:date>
    </item>
    <item>
      <title>Re: Issue setting and clearing bits</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Issue-setting-and-clearing-bits/m-p/563383#M16659</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by MarkG on Thu Jul 02 03:40:44 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for the reply. Its working now. Its always very simple in the end. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; :)&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:02:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Issue-setting-and-clearing-bits/m-p/563383#M16659</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:02:28Z</dc:date>
    </item>
    <item>
      <title>Re: Issue setting and clearing bits</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Issue-setting-and-clearing-bits/m-p/563384#M16660</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 Jul 02 06:48:51 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: lpc_bloke&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
GPIO_SET |= (1&amp;lt;&amp;lt;0);
delay();
GPIO_CLEAR |= (1&amp;lt;&amp;lt;0);
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;You also don't need the read-modify-write sequence above if you are changing all the bits at one time.&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It's wrong to use read-modify-write here. Every 1 bit in the word you write will do the Set or Clear operation on the corresponding port bit, so the correct way is like this:&lt;/SPAN&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
GPIO_SET = (1&amp;lt;&amp;lt;0);
delay();
GPIO_CLEAR = (1&amp;lt;&amp;lt;0);
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:02:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Issue-setting-and-clearing-bits/m-p/563384#M16660</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:02:28Z</dc:date>
    </item>
    <item>
      <title>Re: Issue setting and clearing bits</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Issue-setting-and-clearing-bits/m-p/563385#M16661</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by MarkG on Fri Jul 03 04:08:27 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;i used your original recommendation for 4 pins (1,2,5,8) and all worked ok. When would this format present a problem??&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:02:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Issue-setting-and-clearing-bits/m-p/563385#M16661</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:02:29Z</dc:date>
    </item>
  </channel>
</rss>

