1. Сканирование сделал так:
char Enc_Scan(void)
{
char n = 0;
if(Pin_ENC_F1) n = 1; //проверка линии F1
if(Pin_ENC_F2) n ^= 3; //проверка линии F2
return(n);
}
2. Это нормальная последовательность кодов при смене направления. А что не так? Не замечаю никаких недостатков в работе.
3. Т.е. когда Delta = 2 не запоминать состояние? Делал, на практике работает хуже.
А фильтрация имелась в виду какая, аналоговая и затем АЦП, или цифровая, а затем компаратор кодов? Если цифровая, то мало что можно успеть, состояния меняются за 300 мкс.