Для начала - в случае срабатывания вашей ловушки запоминайте и выводите прочитанное с датчика значение. Если есть цифровой осциллограф или анализатор - махайте лапкой (в смысле дергайте выводом порта микроконтроллера). Лапку на вход синхронизации осциллографа и смотрите, что было на интерфейсе перед срабатыванием триггера. Дальше сравнивайте прочитанное значение с тем, что увидели на осциллографе и делайте выводы, кто врет, датчик или ваша программа.
По поводу быстрого сравнения: Во-первых, long для avr в прерываниях - это чересчур. 4 регистра минимум (а скорее все 8), еще их сохранение/восстановление... По возможности перейдите хотя бы на двухбайтный int. А во-вторых, в большинстве проектов нет критериев быстро-медленно. Количественные изменения переходят в качественные - есть критерий достаточно быстро для работы или уже недостаточно быстро (т.е. не успевает). Если программа успевает - то нет смысла ее ускорять.