Dear i have following code ,
first time it automatically generate interrupt , and second time when i press that button it generate interrupt .after that it stops generating any interrupt
* P1.6 */
#define HAL_KEY_FA_6_PORT P1
#define HAL_KEY_FA_6_BIT BV(6)
#define HAL_KEY_FA_6_SEL P1SEL
#define HAL_KEY_FA_6_DIR P1DIR
/* edge interrupt */
#define HAL_KEY_FA_6_EDGEBIT BV(2)
#define HAL_KEY_FA_6_EDGE HAL_KEY_RISING_EDGE
/* interrupts */
#define HAL_KEY_FA_6_IEN IEN2 /* CPU interrupt mask register */
#define HAL_KEY_FA_6_IENBIT BV(4) /* Mask bit for all of Port_1 */
#define HAL_KEY_FA_6_ICTL P1IEN /* Port Interrupt Control register */
#define HAL_KEY_FA_6_ICTLBIT BV(6) /* P1IEN - P1.6 enable/disable bit */
#define HAL_KEY_FA_6_PXIFG P1IFG /* Interrupt flag at source */
______________________________________________________________________________
PICTL &= ~(HAL_KEY_FA_6_EDGEBIT); /* Clear the edge bit */
/* For falling edge, the bit must be set. */
#if (HAL_KEY_FA_6_EDGE == HAL_KEY_FALLING_EDGE)
PICTL |= HAL_KEY_FA_6_EDGEBIT;
#endif
________________________________________________________________________________
HAL_KEY_FA_6_ICTL |= HAL_KEY_FA_6_ICTLBIT;
HAL_KEY_FA_6_IEN |= HAL_KEY_FA_6_IENBIT;
HAL_KEY_FA_6_PXIFG = ~(HAL_KEY_FA_6_BIT);
__________________________________________________________________________________
void halProcessKeyInterrupt (void)
{
bool valid=FALSE;
if (HAL_KEY_FA_6_PXIFG & HAL_KEY_FA_6_BIT) /* Interrupt Flag has been set */
{
HAL_KEY_FA_6_PXIFG = ~(HAL_KEY_FA_6_BIT); /* Clear Interrupt Flag */
Led = 1;
valid = TRUE;
}
if (valid)
{
osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_DEBOUNCE_VALUE);
}
}
__________________________________________________________________________________
HAL_ISR_FUNCTION( halKeyPort1Isr, P1INT_VECTOR )
{
HAL_ENTER_ISR();
if ((HAL_KEY_FA_6_PXIFG & HAL_KEY_FA_6_BIT))
{
halProcessKeyInterrupt();
}
/*
Clear the CPU interrupt flag for Port_1
PxIFG has to be cleared before PxIF
*/
HAL_KEY_FA_6_PXIFG = 0;
// HAL_KEY_SW_7_PXIFG = 0;
HAL_KEY_CPU_PORT_1_IF = 0;
CLEAR_SLEEP_MODE();
HAL_EXIT_ISR();
}
___________________________________________________________________________________
Thanks in advance