It is likely to be your coding problem.
Perheps you should start with polling method.
After understand how it works,
migrate slowly to interrupt step by step.
Should not be difficult to debug if you
progress logically.
Comparing the 2, polling is easier to write and understand.
Interrupt is more robust and less problematic if
you write your codes properly.