Daimer, Ждал этого вопроса
Понимаете в чём дело - обработка сигнала происходит в момент обращения программы к пину.
А программа работает циклически, т.е. если у Вас сейчас выводится значение на дисплей и происходит смена уровня, потом выводятся/вычисляются другие дела и произойдёт опять смена уровня, то программа этого не заметит, совсем. Читайте ссылки выше.
Если использовать счётчик на прерываниях, то его значение меняется независимо от момента времени основной программы. Другое дело, что Вы это значение увидите, когда Ваша программа начнёт его, значение, как-то переваривать. Но к этому времени может быть уже слишком поздно/много....
Нужно реально обдумать алгоритм: чего и что нужно делать, какие задачи и уже исходя из этого придумывать решение.
Как-то так.
Отправлено спустя 4 минуты 16 секунд:
Попробуйте разогнать I2C до 400к - может успеет по Вашему проекту...
Отправлено спустя 47 секунд:
Переведите ВСЕ пины на speed