Я немного по другом считаю импульсы. Использую аппаратные прерывания по входу. Когда приходит на вход фронт импульса с высокого на низкий или наоборот, обрабатывается прерывание, в котором счетчик импульсов увеличивается на единицу.
Функцией с интервалом 200 мс значение счетчика передается в порт, а сам счетчик обнуляется. В аппаратном прерывании используется оба фронта, и соответственно частота срабатывания прерывания в 2 раза выше реальной частоты на входе, выше точность. Пробовал прерывания одновременно с двух входов с разной частотой, и никакого взаимного влияния не обнаружил.