By my limited experience on controllers i would recommend reading datasheet again...
Understand on paper how interrupt system works, how timers, etc... effect on it. It not rocket science, but requires accuracy.
Common pitfalls on my programs in past:
-Timer set up incorrectly, was doing something else then what expected...
-Interrupt set up incorrectly, forgot to enable them...
-Interrupt routine itself, does it do what datasheet describes as minimal work to enable interrupt again for next time... Forgot this myself once... Took me a day to find, even when it was right there under my eyes in source code....
-Rest of the chip configured properly? Output pins set as outputs, etc...