Все привет! Вопрос такой: В системе стоит механический валкодер. Опрашиваю его я вот так
signed char ReadEncoder(void) { register signed char temp = 0; encoder = (~PIN_Coder & 0x03);//i?iaa?yai 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; } Єту программку скачал с нета. При медленном вращении валкодера показания на индикаторе меняются стабильно, а при быстром вращении - не изменяются. Похоже на дребезг контактов. Как можно от этого избавиться?
|