c - MSP430F5418 port interrupt occurs for both high-to-low and low-to-high transitions -
i had set msp430f5418 p2.5 high low transition. getting interrupts both low-to-high , high-to-low transitions. please code snippet below.
p2out |= bit5 /* enable p2.5 internal resistances */ p2ren |= bit5 /* set p2.5 pull-up resistances */ p2ies |= bit5; p2ie |= bit5; p2ifg &= ~bit5; /* p2.5 ifg cleared */ #pragma vector=port2_vector __interrupt void port2_interrupt (void) { switch (p2iv) { case 0x0cu: { /* here */ p2ifg &= ~bit5; break; } default: { /* no action */ break; } } }
hans, not using switch assert pin. done processor. got reply in ti (texas instruments) forum there hidden high-to-low signal within low-to-high transition , vice versa.
so, modified code follows , worked fine.
... p2out |= bit5 ; /* enable p2.5 internal resistance */ p2ren |= bit5; /* set p2.5 pull-up resistance */ p2ies |= bit5; /* sets p2ifg high low transition */ p2ie |= bit5; /* p2.5 interrupt enabled */ p2ifg &= ~bit5; /* p2.5 ifg cleared */ ... #pragma vector=port2_vector __interrupt void port2_isr (void) { switch (p2iv) { case 0x0cu: { ta1cctl0 &= ~ccie; ta1ccr0 = 0u; ta1cctl0 |= ccie; ta1cctl0 &= ~ccifg; ta1ccr0 = ta1r + 15u; p2ifg &= ~bit5; break; } ... ... } } #pragma vector = timer1_a0_vector /* timer1_a3 cc0 */ static __interrupt void _timer1_ao_isr (void) { ta1cctl0 &= ~ccie; if ((p2in & bit5) == 0u) { // got valid high-to-low assert here!!! } }
Comments
Post a Comment