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

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

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

1,737 次查看
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 ?

标签 (1)
0 项奖励
回复
1 回复

1,183 次查看
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 项奖励
回复