<?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 KEA8 KBI &amp; GPIO port Active  in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KEA8-KBI-GPIO-port-Active/m-p/672864#M41322</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have tested success of &amp;nbsp;Functions KBI &amp;amp; GPIO with EVM KIT TRK-KEA8&lt;/P&gt;&lt;P&gt;I want to ports change&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I had tried code to change of Initial port &lt;BR /&gt;But what cannot enter to KB0_IRQ Handler() and can't read port state..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you please advice&amp;nbsp;below my code&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;* Port changes&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;----------------------------------------------------&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;SPAN style="color: #ff9900;"&gt;** Input&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;KBI SW1 : &amp;nbsp;PORTC4 --&amp;gt; PORTB0&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;KBI SW2 : &amp;nbsp;PORTC5 --&amp;gt; PORTB1&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff9900;"&gt;** Output&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PORTC0 --&amp;gt; PORTB5&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PORTC1&amp;nbsp;--&amp;gt; PORTB6&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PORTC2 --&amp;gt; PORTB7&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #993366; font-size: 22px;"&gt;&lt;STRONG&gt;Origin code&amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;void GPIO_Init()&lt;BR /&gt;{&lt;BR /&gt; CONFIG_PIN_AS_GPIO(PORT_C,16,OUTPUT); /* Configure LED 0 (PTC0) as an output */&lt;BR /&gt; CONFIG_PIN_AS_GPIO(PORT_C,17,OUTPUT); /* Configure LED 1 (PTC1) as an output */&lt;BR /&gt; CONFIG_PIN_AS_GPIO(PORT_C,18,OUTPUT); /* Configure LED 2 (PTC2) as an output */&lt;BR /&gt; CONFIG_PIN_AS_GPIO(PORT_C,19,OUTPUT); /* Configure LED 3 (PTC3) as an output */&lt;BR /&gt; CONFIG_PIN_AS_GPIO(PORT_A,6,OUTPUT);&lt;/P&gt;&lt;P&gt;CONFIG_PIN_AS_GPIO(PORT_C,20,INPUT); /* Configure SW1 (PTC4) as an input */&lt;BR /&gt; CONFIG_PIN_AS_GPIO(PORT_C,21,INPUT); /* Configure SW2 (PTC5) as an input */&lt;BR /&gt; ENABLE_INPUT(PORT_C,20); /* Enable input SW1*/&lt;BR /&gt; ENABLE_INPUT(PORT_C,21); /* Enable input SW2*/&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;void KBI_Init()&lt;BR /&gt;{&lt;BR /&gt; SIM_SCGC |= SIM_SCGC_KBI1_MASK; /* Enable bus clock on KBI1 */&lt;BR /&gt; KBI1_SC = 0; /* Clearing mechanism */&lt;BR /&gt; KBI1_ES |= KBI_ES_KBEDG(1);/* Polarity setting, falling edge low level ,SW1 */&lt;BR /&gt; KBI1_ES |= KBI_ES_KBEDG(2);/* Polarity setting, falling edge low level ,SW1 */&lt;BR /&gt; PORT_PUEL=0; /* No internal pullup*/&lt;BR /&gt; KBI1_PE |= KBI_PE_KBIPE(1); /* Enable KBI1 channel 0 , SW1 */&lt;BR /&gt; KBI1_PE |= KBI_PE_KBIPE(2); /* Enable KBI1 channel 1 , SW2 */&lt;BR /&gt; KBI1_SC = 0; /* Clearing flags and RSTKBSP bit */&lt;BR /&gt; KBI1_SC |= KBI_SC_KBIE_MASK; /* Enable KBI1 Interrupts */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;/&lt;STRONG&gt;/** Change to setup NEW port &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; SIM_SCGC |= SIM_SCGC_KBI0_MASK; /* Enable bus clock on KBI1 */&lt;BR /&gt; KBI0_SC = 0; /* Clearing mechanism */&lt;BR /&gt; KBI0_ES |= KBI_ES_KBEDG(4);/* Polarity setting, falling edge low level ,SW1 */&lt;BR /&gt; KBI0_ES |= KBI_ES_KBEDG(5);/* Polarity setting, falling edge low level ,SW1 */&lt;BR /&gt; PORT_PUEL=0; /* No internal pullup*/&lt;BR /&gt; KBI0_PE |= KBI_PE_KBIPE(4); /* Enable KBI4 channel 4 , SW1 */&lt;BR /&gt; KBI0_PE |= KBI_PE_KBIPE(5); /* Enable KBI5 channel 5 , SW2 */&lt;BR /&gt; KBI0_SC = 0; /* Clearing flags and RSTKBSP bit */&lt;BR /&gt; KBI0_SC |= KBI_SC_KBIE_MASK; /* Enable KBI1 Interrupts */&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;void KBI1_IRQHandler()&lt;BR /&gt;{&lt;BR /&gt; KBI1_SC |= KBI_SC_KBACK_MASK; /*Clear flag*/&lt;BR /&gt; if((GPIOA_PDIR &amp;amp; GPIO_PDIR_PDI(0x100000))&amp;gt;&amp;gt;20) /* If SW1 has been pressed */&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LED0_TOGGLE;&lt;BR /&gt; PIT_Config0.bTimerEn = TRUE;&lt;BR /&gt; SCB-&amp;gt;SCR &amp;amp;= ~SCB_SCR_SLEEPDEEP_Msk;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; }&lt;BR /&gt; else if((GPIOA_PDIR &amp;amp; GPIO_PDIR_PDI(0x200000))&amp;gt;&amp;gt;21) /* If SW2 has been pressed *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;{&lt;BR /&gt;__asm("nop");&lt;BR /&gt;Flag_sleep=1;&lt;BR /&gt;__asm("nop");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: #ff0000;"&gt;//** To setup NEW port &amp;nbsp;IRQ Handler&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;void KBI0_IRQHandler()&lt;BR /&gt;{&lt;BR /&gt; KBI1_SC |= KBI_SC_KBACK_MASK; /*Clear flag*/&lt;BR /&gt; if((GPIOA_PDIR &amp;amp; GPIO_PDIR_PDI(0x100))&amp;gt;&amp;gt;8) /* If Folding_SW1(PTB0) has been pressed */&lt;BR /&gt; //if(GPIOA_PDIR == 0x101020) /* If SW1 has been pressed */&lt;BR /&gt; //0x101020&lt;BR /&gt; {&lt;BR /&gt; //GPIOA_PTOR |=1&amp;lt;&amp;lt;16; /* LED Toggle at port C0*/&lt;BR /&gt; LED0_TOGGLE;&lt;BR /&gt; PIT_Config0.bTimerEn = TRUE;&lt;BR /&gt; SCB-&amp;gt;SCR &amp;amp;= ~SCB_SCR_SLEEPDEEP_Msk;&lt;/P&gt;&lt;P&gt;//LED1_TOGGLE;&lt;BR /&gt; }&lt;BR /&gt; else if((GPIOA_PDIR &amp;amp; GPIO_PDIR_PDI(0x200))&amp;gt;&amp;gt;9) /* If Walk_IN_SW2(PTB1) has been pressed *&lt;BR /&gt; //else if(GPIOA_PDIR == 0x201020) /* If SW2 has been pressed */&lt;BR /&gt; {&lt;BR /&gt; //GPIOA_PTOR |=1&amp;lt;&amp;lt;16; /* LED Toggle at port C0*/&lt;BR /&gt; __asm("nop");&lt;BR /&gt; //LED1_TOGGLE;&lt;BR /&gt; Flag_sleep=1;&lt;BR /&gt; //__asm__("wfi");&lt;BR /&gt; __asm("nop");&lt;BR /&gt; //reset;&lt;/P&gt;&lt;P&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 24 Jun 2017 12:28:32 GMT</pubDate>
    <dc:creator>ahnjoseph</dc:creator>
    <dc:date>2017-06-24T12:28:32Z</dc:date>
    <item>
      <title>KEA8 KBI &amp; GPIO port Active</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KEA8-KBI-GPIO-port-Active/m-p/672864#M41322</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have tested success of &amp;nbsp;Functions KBI &amp;amp; GPIO with EVM KIT TRK-KEA8&lt;/P&gt;&lt;P&gt;I want to ports change&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I had tried code to change of Initial port &lt;BR /&gt;But what cannot enter to KB0_IRQ Handler() and can't read port state..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you please advice&amp;nbsp;below my code&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;* Port changes&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;----------------------------------------------------&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;SPAN style="color: #ff9900;"&gt;** Input&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;KBI SW1 : &amp;nbsp;PORTC4 --&amp;gt; PORTB0&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;KBI SW2 : &amp;nbsp;PORTC5 --&amp;gt; PORTB1&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff9900;"&gt;** Output&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PORTC0 --&amp;gt; PORTB5&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PORTC1&amp;nbsp;--&amp;gt; PORTB6&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PORTC2 --&amp;gt; PORTB7&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #993366; font-size: 22px;"&gt;&lt;STRONG&gt;Origin code&amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;void GPIO_Init()&lt;BR /&gt;{&lt;BR /&gt; CONFIG_PIN_AS_GPIO(PORT_C,16,OUTPUT); /* Configure LED 0 (PTC0) as an output */&lt;BR /&gt; CONFIG_PIN_AS_GPIO(PORT_C,17,OUTPUT); /* Configure LED 1 (PTC1) as an output */&lt;BR /&gt; CONFIG_PIN_AS_GPIO(PORT_C,18,OUTPUT); /* Configure LED 2 (PTC2) as an output */&lt;BR /&gt; CONFIG_PIN_AS_GPIO(PORT_C,19,OUTPUT); /* Configure LED 3 (PTC3) as an output */&lt;BR /&gt; CONFIG_PIN_AS_GPIO(PORT_A,6,OUTPUT);&lt;/P&gt;&lt;P&gt;CONFIG_PIN_AS_GPIO(PORT_C,20,INPUT); /* Configure SW1 (PTC4) as an input */&lt;BR /&gt; CONFIG_PIN_AS_GPIO(PORT_C,21,INPUT); /* Configure SW2 (PTC5) as an input */&lt;BR /&gt; ENABLE_INPUT(PORT_C,20); /* Enable input SW1*/&lt;BR /&gt; ENABLE_INPUT(PORT_C,21); /* Enable input SW2*/&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;void KBI_Init()&lt;BR /&gt;{&lt;BR /&gt; SIM_SCGC |= SIM_SCGC_KBI1_MASK; /* Enable bus clock on KBI1 */&lt;BR /&gt; KBI1_SC = 0; /* Clearing mechanism */&lt;BR /&gt; KBI1_ES |= KBI_ES_KBEDG(1);/* Polarity setting, falling edge low level ,SW1 */&lt;BR /&gt; KBI1_ES |= KBI_ES_KBEDG(2);/* Polarity setting, falling edge low level ,SW1 */&lt;BR /&gt; PORT_PUEL=0; /* No internal pullup*/&lt;BR /&gt; KBI1_PE |= KBI_PE_KBIPE(1); /* Enable KBI1 channel 0 , SW1 */&lt;BR /&gt; KBI1_PE |= KBI_PE_KBIPE(2); /* Enable KBI1 channel 1 , SW2 */&lt;BR /&gt; KBI1_SC = 0; /* Clearing flags and RSTKBSP bit */&lt;BR /&gt; KBI1_SC |= KBI_SC_KBIE_MASK; /* Enable KBI1 Interrupts */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;/&lt;STRONG&gt;/** Change to setup NEW port &amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; SIM_SCGC |= SIM_SCGC_KBI0_MASK; /* Enable bus clock on KBI1 */&lt;BR /&gt; KBI0_SC = 0; /* Clearing mechanism */&lt;BR /&gt; KBI0_ES |= KBI_ES_KBEDG(4);/* Polarity setting, falling edge low level ,SW1 */&lt;BR /&gt; KBI0_ES |= KBI_ES_KBEDG(5);/* Polarity setting, falling edge low level ,SW1 */&lt;BR /&gt; PORT_PUEL=0; /* No internal pullup*/&lt;BR /&gt; KBI0_PE |= KBI_PE_KBIPE(4); /* Enable KBI4 channel 4 , SW1 */&lt;BR /&gt; KBI0_PE |= KBI_PE_KBIPE(5); /* Enable KBI5 channel 5 , SW2 */&lt;BR /&gt; KBI0_SC = 0; /* Clearing flags and RSTKBSP bit */&lt;BR /&gt; KBI0_SC |= KBI_SC_KBIE_MASK; /* Enable KBI1 Interrupts */&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;void KBI1_IRQHandler()&lt;BR /&gt;{&lt;BR /&gt; KBI1_SC |= KBI_SC_KBACK_MASK; /*Clear flag*/&lt;BR /&gt; if((GPIOA_PDIR &amp;amp; GPIO_PDIR_PDI(0x100000))&amp;gt;&amp;gt;20) /* If SW1 has been pressed */&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LED0_TOGGLE;&lt;BR /&gt; PIT_Config0.bTimerEn = TRUE;&lt;BR /&gt; SCB-&amp;gt;SCR &amp;amp;= ~SCB_SCR_SLEEPDEEP_Msk;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; }&lt;BR /&gt; else if((GPIOA_PDIR &amp;amp; GPIO_PDIR_PDI(0x200000))&amp;gt;&amp;gt;21) /* If SW2 has been pressed *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;{&lt;BR /&gt;__asm("nop");&lt;BR /&gt;Flag_sleep=1;&lt;BR /&gt;__asm("nop");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: #ff0000;"&gt;//** To setup NEW port &amp;nbsp;IRQ Handler&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;void KBI0_IRQHandler()&lt;BR /&gt;{&lt;BR /&gt; KBI1_SC |= KBI_SC_KBACK_MASK; /*Clear flag*/&lt;BR /&gt; if((GPIOA_PDIR &amp;amp; GPIO_PDIR_PDI(0x100))&amp;gt;&amp;gt;8) /* If Folding_SW1(PTB0) has been pressed */&lt;BR /&gt; //if(GPIOA_PDIR == 0x101020) /* If SW1 has been pressed */&lt;BR /&gt; //0x101020&lt;BR /&gt; {&lt;BR /&gt; //GPIOA_PTOR |=1&amp;lt;&amp;lt;16; /* LED Toggle at port C0*/&lt;BR /&gt; LED0_TOGGLE;&lt;BR /&gt; PIT_Config0.bTimerEn = TRUE;&lt;BR /&gt; SCB-&amp;gt;SCR &amp;amp;= ~SCB_SCR_SLEEPDEEP_Msk;&lt;/P&gt;&lt;P&gt;//LED1_TOGGLE;&lt;BR /&gt; }&lt;BR /&gt; else if((GPIOA_PDIR &amp;amp; GPIO_PDIR_PDI(0x200))&amp;gt;&amp;gt;9) /* If Walk_IN_SW2(PTB1) has been pressed *&lt;BR /&gt; //else if(GPIOA_PDIR == 0x201020) /* If SW2 has been pressed */&lt;BR /&gt; {&lt;BR /&gt; //GPIOA_PTOR |=1&amp;lt;&amp;lt;16; /* LED Toggle at port C0*/&lt;BR /&gt; __asm("nop");&lt;BR /&gt; //LED1_TOGGLE;&lt;BR /&gt; Flag_sleep=1;&lt;BR /&gt; //__asm__("wfi");&lt;BR /&gt; __asm("nop");&lt;BR /&gt; //reset;&lt;/P&gt;&lt;P&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 24 Jun 2017 12:28:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KEA8-KBI-GPIO-port-Active/m-p/672864#M41322</guid>
      <dc:creator>ahnjoseph</dc:creator>
      <dc:date>2017-06-24T12:28:32Z</dc:date>
    </item>
    <item>
      <title>Re: KEA8 KBI &amp; GPIO port Active</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KEA8-KBI-GPIO-port-Active/m-p/672865#M41323</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It looks a bit suspect that you reference the original KBI inputs as 1 and 2 for channels 0 and 1, and the new ones as 4 and 5 for channels 4 and 5 (and not as 5 and 6). I would check that first.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I put a quick video for you on Youtube showing how to do this in the uTasker project [ &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fyoutu.be%2FUU69QHUbVb0" rel="nofollow" target="_blank"&gt;https://youtu.be/UU69QHUbVb0&lt;/A&gt;&lt;SPAN&gt; ] and test the operation in its simulator. It shows also that there are in fact only three registers to be set as follows:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;PORT_PUEL |= 0x300;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;KBI0_SC = 0x02;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;KBI0_PE = 0x30;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is the code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;static void test_kb(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;// User interrupt call-back handler&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;// - arrives here when either of the two inputs detects a falling edge&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;//&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;extern void fnConfigureTwoKBI_Interrupts(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTERRUPT_SETUP interrupt_setup;&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; // interrupt configuration parameters&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; interrupt_setup.int_type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = KEYBOARD_INTERRUPT;&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; // define keyboard interrupt rather than IRQ&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; interrupt_setup.int_handler&amp;nbsp;&amp;nbsp;&amp;nbsp; = test_kb;&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; // handling function&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; interrupt_setup.int_priority&amp;nbsp;&amp;nbsp; = PRIORITY_KEYBOARD_INT;&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; // interrupt priority level&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; interrupt_setup.int_port&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = KE_PORTB;&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; // the port that the interrupt input is on (KE_PORTA, KE_PORTB, KE_PORTC and KE_PORTD are the same)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; interrupt_setup.int_port_bits&amp;nbsp; = (KE_PORTB_BIT0 | KE_PORTB_BIT1);&amp;nbsp;&amp;nbsp;&amp;nbsp; // the IRQs input connected&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; interrupt_setup.int_port_sense = (IRQ_FALLING_EDGE | PULLUP_ON);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // interrupt is to be falling edge sensitive with pull-up enabled on inputs&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fnConfigureInterrupt((void *)&amp;amp;interrupt_setup);&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; // configure interrupt&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace; font-size: 13px;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;The method also allows assigning each KBI to a different interrupt call-back too, to simplify the interrupt handling.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;If you watch the video and check the register being written against yours you should also be able to solve the issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To save time in the future consider using the uTasker project and its simulator - it is open source at the links below, will improve your code and slash development times needed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Beware however that the KBI will lose interrupts if two occur together. This is a characteristic of its design (or a bug (?)) that needs to be considered....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis.html&lt;/A&gt;&lt;BR /&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FTRK-KEA8.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/TRK-KEA8.html&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 24 Jun 2017 19:41:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KEA8-KBI-GPIO-port-Active/m-p/672865#M41323</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-06-24T19:41:31Z</dc:date>
    </item>
    <item>
      <title>Re: KEA8 KBI &amp; GPIO port Active</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KEA8-KBI-GPIO-port-Active/m-p/672866#M41324</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you so much !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;But I use IDE that is KDS &amp;nbsp;3.2.0&lt;/P&gt;&lt;P&gt;So I &amp;nbsp;can`t apply your code&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Jun 2017 03:02:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KEA8-KBI-GPIO-port-Active/m-p/672866#M41324</guid>
      <dc:creator>ahnjoseph</dc:creator>
      <dc:date>2017-06-27T03:02:43Z</dc:date>
    </item>
    <item>
      <title>Re: KEA8 KBI &amp; GPIO port Active</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KEA8-KBI-GPIO-port-Active/m-p/672867#M41325</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I use the code with KDS3.2.0, S32 Design Studio, CodeWarrior, IAR, Keil, Rowley, Green Hills, CooCox, GCC, VisualStdio and Atollic.&lt;BR /&gt;There is no restrictions to a certain IDE. &lt;EM&gt;Only basic libraries will be restricted to a certain environment.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As I mention, if you are looking just for a quick fix and not a powerful complete solution you just need to write the 3 lines of code shown to do it correctly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Jun 2017 15:42:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KEA8-KBI-GPIO-port-Active/m-p/672867#M41325</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-06-27T15:42:18Z</dc:date>
    </item>
  </channel>
</rss>

