Hi,
When using the Interrupt On Change feature you must read the pins in interrupt handler in order to end the mismatch condition. You're not doing that as far as I can see so the interrupt refires as soon as it exits which is why you get the 2.9kHz squarewave output.

/Henrik.