Vladimir Ljaschko (17.12.2010 12:46, просмотров: 75) ответил Лeoнид Ивaнoвич на Инициализировать текущим значением - не выход, так как в нормальном режиме эти переменные всегда не равны. У меня они инициализируются значением State0, при этом ложных импульсов при включении быть не может (ведь EncPrev != StateAB). При первом же
Да, я уже поводил пальцем по графиками убедился, но все равно переделал под учетверенное разрешение. И еще чтобы отлавливать сбои и неработающий канал. Как-то так. Правда, пока не работает :) const char hall_table[4][4] = // cur, prev
{//prev 0 a b ab cur:
{ 0 , MINUS , PLUS , ERROR }, // 0
{ PLUS , 0 , ERROR , MINUS }, // A
{ MINUS , ERROR , 0 , PLUS }, // B
{ ERROR , PLUS , MINUS , 0 } }; // AB
....
cur=GET_HALL_DU3();
if (cur != prev_prev)
{ change=hall_table[cur][prev];
if (change &PLUS)
hall.position++;
else
{ if (change & MINUS)
hall.position--;
else
{if (change & ERROR)
{ e_hall[ch].error=YES;
hall[ch].init=NO;
....
И мне нужно знать, что крутили без питания.