<?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: Using the QEI with an optical rotary encoder</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Using-the-QEI-with-an-optical-rotary-encoder/m-p/716228#M28951</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Actually I got it working with a straightforward implementation below:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;/*&lt;BR /&gt;===============================================================================&lt;BR /&gt;&amp;nbsp;Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : LPC1769Template.c&lt;BR /&gt;&amp;nbsp;Author&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : OH&lt;BR /&gt;&amp;nbsp;Version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&lt;BR /&gt;&amp;nbsp;Copyright&amp;nbsp;&amp;nbsp; : $(copyright)&lt;BR /&gt;&amp;nbsp;Description : Implementation of an optical decoder on using the QEI on a LPC1769&lt;BR /&gt;===============================================================================&lt;BR /&gt;*/&lt;BR /&gt;&lt;BR /&gt;#ifdef __USE_CMSIS&lt;BR /&gt;#include "LPC17xx.h"&lt;BR /&gt;#endif&lt;BR /&gt;&lt;BR /&gt;#include &amp;lt;cr_section_macros.h&amp;gt;&lt;BR /&gt;&lt;BR /&gt;// TODO: insert other include files here&lt;BR /&gt;#define RESET_VALUE 0x7FFFFFFF&lt;BR /&gt;&lt;BR /&gt;volatile int new_pos = 0;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Use to increment/ decrement position on interrupt&lt;BR /&gt;volatile int old_pos = 0;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;void qei_setup(void){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// setup for Grayhill series 62P optical encoder&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_SC-&amp;gt;PCONP&amp;nbsp;&amp;nbsp;&amp;nbsp; |= 1&amp;lt;&amp;lt;18;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Power up QEI&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_SC-&amp;gt;PCLKSEL1 |= 3;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Select clock for QEI = cclk/8&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_PINCON-&amp;gt;PINSEL3 |= (1&amp;lt;&amp;lt;8);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // configure as MCI0-QEA&amp;nbsp; - P1.20 -&amp;gt; Pad 7 on LPCXpresso 1769&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_PINCON-&amp;gt;PINSEL3 |= (1&amp;lt;&amp;lt;14);&amp;nbsp;&amp;nbsp;&amp;nbsp; // configure as MCI1-QEB&amp;nbsp; - P1.23 -&amp;gt; Pad 6 on LPCXpresso 1769&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LPC_PINCON-&amp;gt;PINSEL3 |= (1&amp;lt;&amp;lt;16);&amp;nbsp;&amp;nbsp;&amp;nbsp; // configure as MCI2-INDX - P1.24&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_QEI-&amp;gt;QEICONF |= (1&amp;lt;&amp;lt;2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set quadrature mode - 4x mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_QEI-&amp;gt;QEIMAXPOS = RESET_VALUE;&amp;nbsp; // Maximum pulse count limit after which counter resets&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_QEI-&amp;gt;FILTER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Number of clk delays to delay before accepting input&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Enable interrupts on postions&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LPC_QEI-&amp;gt; QEIIES |= (1 &amp;lt;&amp;lt; 6) | (1 &amp;lt;&amp;lt; 7) | (1 &amp;lt;&amp;lt; 8); // Enable interrupts on position captures&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//NVIC_EnableIRQ(QEI_IRQn);&amp;nbsp;&amp;nbsp; &amp;nbsp;// Enable interrupt&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;void led_setup(void){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_GPIO0-&amp;gt;FIODIR |= (1 &amp;lt;&amp;lt; 22); //Configure P0.22 as output, position 0, Red&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_GPIO3-&amp;gt;FIODIR |= (1 &amp;lt;&amp;lt; 26); //Configure P3.26 as output, position 1, Blue&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_GPIO3-&amp;gt;FIODIR |= (1 &amp;lt;&amp;lt; 25); //Configure P3.25 as output, position 2, Green&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;void QEI_IRQHander(){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Not used!!&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if ((LPC_QEI-&amp;gt; QEIINTSTAT &amp;gt;&amp;gt; 6) &amp;amp; 1){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Position 0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;new_pos = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_QEI-&amp;gt; QEICLR |= (1&amp;lt;&amp;lt;6);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else if ((LPC_QEI-&amp;gt; QEIINTSTAT &amp;gt;&amp;gt; 7) &amp;amp; 1){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Position 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;new_pos = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_QEI-&amp;gt; QEICLR |= (1&amp;lt;&amp;lt;7);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else if ((LPC_QEI-&amp;gt; QEIINTSTAT &amp;gt;&amp;gt; 8) &amp;amp; 1){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Position 2&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;new_pos = 2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_QEI-&amp;gt; QEICLR |= (1&amp;lt;&amp;lt;8);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}else {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_QEI-&amp;gt; QEICLR |= (1&amp;lt;&amp;lt;3) | (1 &amp;lt;&amp;lt;5);&amp;nbsp;&amp;nbsp; &amp;nbsp;// TODO: Clear dir &amp;amp; clock pulse&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;int main(void) {&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;qei_setup();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;led_setup();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;old_pos = LPC_QEI-&amp;gt;QEIPOS;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1) {&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;new_pos = (LPC_QEI-&amp;gt;QEIPOS - old_pos);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (new_pos &amp;gt; 0){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// clockwise rotation?&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LPC_GPIO0-&amp;gt;FIOPIN = (1 &amp;lt;&amp;lt; 22); // On&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_GPIO3-&amp;gt;FIOCLR = (1 &amp;lt;&amp;lt; 25); // Off&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_GPIO3-&amp;gt;FIOPIN = (1 &amp;lt;&amp;lt; 26); // Blue On&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;old_pos = LPC_QEI-&amp;gt;QEIPOS;&lt;BR /&gt;&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;else if (new_pos &amp;lt; 0){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LPC_GPIO0-&amp;gt;FIOCLR = (1 &amp;lt;&amp;lt; 22);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_GPIO3-&amp;gt;FIOPIN = (1 &amp;lt;&amp;lt; 25); // Green On&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_GPIO3-&amp;gt;FIOCLR = (1 &amp;lt;&amp;lt; 26); // blue off&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;old_pos = LPC_QEI-&amp;gt;QEIPOS;&lt;BR /&gt;&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;else{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LPC_GPIO0-&amp;gt;FIOCLR = (1 &amp;lt;&amp;lt; 22);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LPC_GPIO3-&amp;gt;FIOCLR = (1 &amp;lt;&amp;lt; 25);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LPC_GPIO3-&amp;gt;FIOCLR = (1 &amp;lt;&amp;lt; 26);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0 ;&lt;BR /&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 30 Apr 2018 09:01:27 GMT</pubDate>
    <dc:creator>leo838</dc:creator>
    <dc:date>2018-04-30T09:01:27Z</dc:date>
    <item>
      <title>Using the QEI with an optical rotary encoder</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Using-the-QEI-with-an-optical-rotary-encoder/m-p/716227#M28950</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello all,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Has anyone had any luck using the quadrature encoder interface (QEI ) with a optical rotary encoder (similar to the Grayhill 62P series) ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've been trying without much luck, it seems its designed for motor control but I'm hoping to get it working with the above encoder.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Leo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 28 Apr 2018 19:09:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Using-the-QEI-with-an-optical-rotary-encoder/m-p/716227#M28950</guid>
      <dc:creator>leo838</dc:creator>
      <dc:date>2018-04-28T19:09:51Z</dc:date>
    </item>
    <item>
      <title>Re: Using the QEI with an optical rotary encoder</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Using-the-QEI-with-an-optical-rotary-encoder/m-p/716228#M28951</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Actually I got it working with a straightforward implementation below:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;/*&lt;BR /&gt;===============================================================================&lt;BR /&gt;&amp;nbsp;Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : LPC1769Template.c&lt;BR /&gt;&amp;nbsp;Author&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : OH&lt;BR /&gt;&amp;nbsp;Version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&lt;BR /&gt;&amp;nbsp;Copyright&amp;nbsp;&amp;nbsp; : $(copyright)&lt;BR /&gt;&amp;nbsp;Description : Implementation of an optical decoder on using the QEI on a LPC1769&lt;BR /&gt;===============================================================================&lt;BR /&gt;*/&lt;BR /&gt;&lt;BR /&gt;#ifdef __USE_CMSIS&lt;BR /&gt;#include "LPC17xx.h"&lt;BR /&gt;#endif&lt;BR /&gt;&lt;BR /&gt;#include &amp;lt;cr_section_macros.h&amp;gt;&lt;BR /&gt;&lt;BR /&gt;// TODO: insert other include files here&lt;BR /&gt;#define RESET_VALUE 0x7FFFFFFF&lt;BR /&gt;&lt;BR /&gt;volatile int new_pos = 0;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Use to increment/ decrement position on interrupt&lt;BR /&gt;volatile int old_pos = 0;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;void qei_setup(void){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// setup for Grayhill series 62P optical encoder&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_SC-&amp;gt;PCONP&amp;nbsp;&amp;nbsp;&amp;nbsp; |= 1&amp;lt;&amp;lt;18;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Power up QEI&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_SC-&amp;gt;PCLKSEL1 |= 3;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Select clock for QEI = cclk/8&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_PINCON-&amp;gt;PINSEL3 |= (1&amp;lt;&amp;lt;8);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // configure as MCI0-QEA&amp;nbsp; - P1.20 -&amp;gt; Pad 7 on LPCXpresso 1769&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_PINCON-&amp;gt;PINSEL3 |= (1&amp;lt;&amp;lt;14);&amp;nbsp;&amp;nbsp;&amp;nbsp; // configure as MCI1-QEB&amp;nbsp; - P1.23 -&amp;gt; Pad 6 on LPCXpresso 1769&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LPC_PINCON-&amp;gt;PINSEL3 |= (1&amp;lt;&amp;lt;16);&amp;nbsp;&amp;nbsp;&amp;nbsp; // configure as MCI2-INDX - P1.24&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_QEI-&amp;gt;QEICONF |= (1&amp;lt;&amp;lt;2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set quadrature mode - 4x mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_QEI-&amp;gt;QEIMAXPOS = RESET_VALUE;&amp;nbsp; // Maximum pulse count limit after which counter resets&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_QEI-&amp;gt;FILTER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Number of clk delays to delay before accepting input&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Enable interrupts on postions&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LPC_QEI-&amp;gt; QEIIES |= (1 &amp;lt;&amp;lt; 6) | (1 &amp;lt;&amp;lt; 7) | (1 &amp;lt;&amp;lt; 8); // Enable interrupts on position captures&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//NVIC_EnableIRQ(QEI_IRQn);&amp;nbsp;&amp;nbsp; &amp;nbsp;// Enable interrupt&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;void led_setup(void){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_GPIO0-&amp;gt;FIODIR |= (1 &amp;lt;&amp;lt; 22); //Configure P0.22 as output, position 0, Red&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_GPIO3-&amp;gt;FIODIR |= (1 &amp;lt;&amp;lt; 26); //Configure P3.26 as output, position 1, Blue&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_GPIO3-&amp;gt;FIODIR |= (1 &amp;lt;&amp;lt; 25); //Configure P3.25 as output, position 2, Green&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;void QEI_IRQHander(){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Not used!!&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if ((LPC_QEI-&amp;gt; QEIINTSTAT &amp;gt;&amp;gt; 6) &amp;amp; 1){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Position 0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;new_pos = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_QEI-&amp;gt; QEICLR |= (1&amp;lt;&amp;lt;6);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else if ((LPC_QEI-&amp;gt; QEIINTSTAT &amp;gt;&amp;gt; 7) &amp;amp; 1){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Position 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;new_pos = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_QEI-&amp;gt; QEICLR |= (1&amp;lt;&amp;lt;7);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else if ((LPC_QEI-&amp;gt; QEIINTSTAT &amp;gt;&amp;gt; 8) &amp;amp; 1){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Position 2&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;new_pos = 2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_QEI-&amp;gt; QEICLR |= (1&amp;lt;&amp;lt;8);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}else {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_QEI-&amp;gt; QEICLR |= (1&amp;lt;&amp;lt;3) | (1 &amp;lt;&amp;lt;5);&amp;nbsp;&amp;nbsp; &amp;nbsp;// TODO: Clear dir &amp;amp; clock pulse&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;int main(void) {&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;qei_setup();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;led_setup();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;old_pos = LPC_QEI-&amp;gt;QEIPOS;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1) {&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;new_pos = (LPC_QEI-&amp;gt;QEIPOS - old_pos);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (new_pos &amp;gt; 0){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// clockwise rotation?&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LPC_GPIO0-&amp;gt;FIOPIN = (1 &amp;lt;&amp;lt; 22); // On&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_GPIO3-&amp;gt;FIOCLR = (1 &amp;lt;&amp;lt; 25); // Off&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_GPIO3-&amp;gt;FIOPIN = (1 &amp;lt;&amp;lt; 26); // Blue On&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;old_pos = LPC_QEI-&amp;gt;QEIPOS;&lt;BR /&gt;&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;else if (new_pos &amp;lt; 0){&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LPC_GPIO0-&amp;gt;FIOCLR = (1 &amp;lt;&amp;lt; 22);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_GPIO3-&amp;gt;FIOPIN = (1 &amp;lt;&amp;lt; 25); // Green On&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_GPIO3-&amp;gt;FIOCLR = (1 &amp;lt;&amp;lt; 26); // blue off&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;old_pos = LPC_QEI-&amp;gt;QEIPOS;&lt;BR /&gt;&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;else{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LPC_GPIO0-&amp;gt;FIOCLR = (1 &amp;lt;&amp;lt; 22);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LPC_GPIO3-&amp;gt;FIOCLR = (1 &amp;lt;&amp;lt; 25);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//LPC_GPIO3-&amp;gt;FIOCLR = (1 &amp;lt;&amp;lt; 26);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0 ;&lt;BR /&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Apr 2018 09:01:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Using-the-QEI-with-an-optical-rotary-encoder/m-p/716228#M28951</guid>
      <dc:creator>leo838</dc:creator>
      <dc:date>2018-04-30T09:01:27Z</dc:date>
    </item>
  </channel>
</rss>

