ked rychlo potocim enkoderom nestihne to zareagovat na vsetky impulzy....
ako to zrychlit? (spustit casovac pri ENC_A zavernej hrane a pocitat impulzy?)
ako sa to robi?
tu je moja utilitka:
Kód: Vybrať všetko
unsigned char enkoder() //vracia hodnotu: 1- doprava 2-dolava 3-OK
{
while (1)
{
if (PINB & (1<<ENC_A))
{
do
{
if (!(PINB & (1<<ENC_OK)))
return (3); //pressed button
} while (PINB & (1<<ENC_A));
if (PINB & (1<<ENC_B))
return (1); //turned right
else
return (2); //turned left
}
if (!(PINB & (1<<ENC_A)))
{
do
{ //pressed button
if (!(PINB & (1<<ENC_OK)))
return (3);
} while (!(PINB & (1<<ENC_A)));
if (!(PINB & (1<<ENC_B)))
return (1); //turned right
else
return (2); //turned left
}
}
}
Kód: Vybrať všetko
do
{
x= enkoder();
switch (x)
{
case 1:
lcd_gotoxy(0,0);
index_main_menu++;
if (index_main_menu == MAX_MENU)
index_main_menu = 0;
lcd_putsf(p_main_menu[index_main_menu]);
break;
case 2:
lcd_gotoxy(0,0);
if (index_main_menu == 0)
index_main_menu = MAX_MENU;
index_main_menu--;
lcd_putsf(p_main_menu[index_main_menu]);
break;
default:
}
} while (x !=3);
delay_ms(250);
switch (index_main_menu)
{
case 0:
break;
case 1:
break;
case 2:
manualne_ovladanie();
break;
default:
}
dakujem....