Have you tried using a different GPIO, do you have the same results?
How are you measuring the signal of your external device? Are you sure the output of it is the one you expect?
I have tried attaching interrupts to digital pins 2,4 and 7,8 (Edison Arduino board). The results are the same. Are some GPIOs faster than others?
I have verified the output of the external device with an oscilloscope; it produces clean 5V edge transitions.
We tested to have one hundred interrupts per second without any issue. This means that there is a 10 ms window between interrupts to perform whatever you need to do. If you use print statements, they might take time and they may impact the desired amount of interrupts per second. Are you giving commands to the Edison between every interrupt?
Also, when it comes to toggle a pin (On/Off) on the Arduino Expansion board using the MCU SDK, the DIG3 and DIG5 pins show better performance than the rest. I'd suggest you to try these two pins and let us know if that works for you.
Thanks for your assistance. My experimentation seems consistent with your findings that a 100 Hz interrupt rate can be handled without issue. I have an extremely lightweight ISR attached to both interrupt pins, with only handful of instructions.
Unfortunately, as I am trying to use the MCU to handle interrupts at a much faster rate ( 3 kHz +), this performance is not good enough. As a workaround for my current project, I am using an Arduino Uno R3 with an ATmega16U2 running at 16 MHz to handle the two interrupt lines from my encoder. With an ISR written in assembler, it has no trouble keeping up with the high interrupt frequency. The Arduino is then sending data to the Edison over UART at a lower rate (~20bytes @50 Hz).
I was hoping to use the MCU to perform this function, and the internal UART between the Atom and MCU to transer data, but from what you are saying it seems that the MCU is not up to the task.