Hi
To enable falling edge interrupt on P2.10 you need to set
IO2IntEnF |= 0x0000400;
rather than clear it.
To clear the interrupt in the EXINT3 IRQ you can write
IO2IntClr = 0x0000400;
There is no need to read and OR the content beforehand.
The EXINT3 shares interrupts with the port change interrupts. Both can be used at the same time by checking the interrupt source when handling it.
EXINT3 has the advantage that it supports also level sensitive interrupt rather than just port changes, which means that it can also operate when the device is in an idle state (no active clocks) to wake up the device, which port changes will not be able to (I didn’t verify this but it is usually the case).
Regards
Mark
http://www.uTasker.com
P.S. Below is some more general information about sharing port change interrupts and EXTIN3:
Each port on P0 and P2 can generate a rising of falling edge interrupt - this is
however only the case when these are programmed on a pin by pin basis.
The port change interrupts share the EINT3 interrupt vector.
If P2.13 is configured as EINT3 it will generate interrupts according to its
mask (which can also include level sensitive interrupts, which the port change
interrupts can’t do).
If P2.13 is left as GPIO it can either be used as state change interrupt or left
as non-interrupt generating GPIO.
When handing EINT3 IRQ the code has to check whether the source is from EINT3,
from a port 0 change or from a port 2 change. It can use the following registers
to identify which source (or sources) caused the IRQ and then handle the one(s)
which are pending:
EXTINT (for possible EINT3)
IOIntStatus (for possible port 0 and port 2 sources)
In the case of port changes, the following register then indicate exactly which
pin change caused the IRQ:
IO0IntStatR - rising edge pins detected on port 0
IO0IntStatF - falling edge pins detected on port 0
IO2IntStatR - rising edge pins detected on port 2
IO2IntStatF - falling edge pins detected on port 2