у меня вот так все работает PD0,PD1 входа тодтянутые к плюсу через 4к7 возвращает +1 при повороте по часовой и -1 против
#define PIN_Coder PIND// PD0,PD1 #define Port_Coder PORTD #define Ddr_Coder DDRD char status,encoder = 0; signed char EN = 0; ... ... //----------------------------------------------------------------------------------- signed char ReadEncoder(void) { register signed char temp = 0; encoder = (~PIN_Coder & 0x03);//проверяем PD0,PD1 if(status != encoder) { switch(encoder) { case 0: if(status == 1) temp = 1; else if(status == 2) temp = -1; break; case 1: if(status == 3) temp = 1; else if(status == 0) temp = -1; break; case 2: if(status == 0) temp = 1; else if(status == 3) temp = -1; break; case 3: if(status == 2)temp = 1; else if(status == 1) temp = -1; break; } status = encoder; } return temp; } //-----------------------------------------------------------------------------------
|