What's different PCR[ISF] & ISFR in interrupt usage in GPIO mode ?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

What's different PCR[ISF] & ISFR in interrupt usage in GPIO mode ?

1,327 Views
rqbh
Contributor III

Now I using 4 GPIOs ( PORTC 1,2,3,4 )  as keypads in a K20DX128VLF5, configuring them enter interrupt with falling edge,

when enter interrupt , we do flow code:

//----------------------------------------

void PORTC_ISR(void)

{

  if(PORT_PDD_GetPinInterruptFlag(PORTC_BASE_PTR, PORT_PDD_PIN_1)

            || (PORT_PDD_GetInterruptFlags(PORTC_BASE_PTR)&PORT_PDD_PIN_1)){

       PORT_PDD_ClearPinInterruptFlag(PORTC_BASE_PTR, PORT_PDD_PIN_1);

       PORT_PDD_ClearInterruptFlags(PORTC_BASE_PTR, PORT_PDD_PIN_1);

       KEY_1();

  }

  if(PORT_PDD_GetPinInterruptFlag(PORTC_BASE_PTR, PORT_PDD_PIN_2)

            || (PORT_PDD_GetInterruptFlags(PORTC_BASE_PTR)&PORT_PDD_PIN_2)){

       PORT_PDD_ClearPinInterruptFlag(PORTC_BASE_PTR, PORT_PDD_PIN_2);

       PORT_PDD_ClearInterruptFlags(PORTC_BASE_PTR, PORT_PDD_PIN_2);

       KEY_2();

  }

  if(PORT_PDD_GetPinInterruptFlag(PORTC_BASE_PTR, PORT_PDD_PIN_3)

            || (PORT_PDD_GetInterruptFlags(PORTC_BASE_PTR)&PORT_PDD_PIN_3)){

       PORT_PDD_ClearPinInterruptFlag(PORTC_BASE_PTR, PORT_PDD_PIN_3);

       PORT_PDD_ClearInterruptFlags(PORTC_BASE_PTR, PORT_PDD_PIN_3);

       KEY_3();

  }

  if(PORT_PDD_GetPinInterruptFlag(PORTC_BASE_PTR, PORT_PDD_PIN_4)

            || (PORT_PDD_GetInterruptFlags(PORTC_BASE_PTR)&PORT_PDD_PIN_4)){

       PORT_PDD_ClearPinInterruptFlag(PORTC_BASE_PTR, PORT_PDD_PIN_4);

       PORT_PDD_ClearInterruptFlags(PORTC_BASE_PTR, PORT_PDD_PIN_4);

       KEY_4();

  }

}

//--------------------------------

The problem is :

1 \ KEY_2 and KEY_4 cann't be detected , but the all out circuit are same( 10K pull-up, 0.1uf filter ).

2 \ Are we must to check both ISFR and PCR[ISR] to confirm the interrupt index?

3 \ As bove, are we must to clear both register bit when enter ISR routine ?

Labels (1)
0 Kudos
Reply
1 Reply

773 Views
Kan_Li
NXP TechSupport
NXP TechSupport

Hi Kevin,

Clearing ISFR by writing one is enough to clear the Port interrupt flags, as well as checking interrupt status. I can not figure out why KEY_2 and KEY_4 can not be detected with the above information, would you please send a snapshot of the schematics for a review, if you can send me the project or more code snippets for POTRC 1,2,3,4 initlization, that would be better.

Thanks for your patience!!


Have a great day,
Kan

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos
Reply