по моему проблема в самом факте использования прерывания. попробуй в функции с прерыванием определить некую переменную, которая бы не давала сработать прерыванию миллион раз в секунду
Прерывание то срабатывает только по нисподающему фронту на пине, а то что написанно в обработчике это просто то что оно должно сделать