Похоже я программный энкодер не так реализовал, считаю только импульсы каждой фазы... Аппаратный и не смотрел как работает...
По этой картинке становиться ясно, как программный энкодер определяет направление вращения - по очередности фаз. И считать соответственно должен и в "+1" и в "-1".