Dobrý večer.
Před pár jsem si napsal svůj první prográmek, kde jsem začal blikat diodou. Potom jsem zkusil tlačítka, přerušení a trošku časovače.
No nyní jsem si koupil rotační enkodér, že si s sním zkusím pohrát, ale mám problémy.
Program nic nedělá. :-D
Má to fungovat takto. Rotařním enkodérem nastavuji proměnnou encoder (0-9999) a tuto proměnnou zobrazuji na LCD. (k obsluze LCD zatím používám cizí knihovnu, na to se teprve chystám).
No a problém je, že hodnota encoder se mi nějak nehýbe. :-D
Jako MCU je použit ATmega8A s taktem 16MHz.
//ratační enkoder (vlevo/vpravo) ======= PD2 & PD4
ISR (INT0_vect) {
if (((PIND & (1 << PD2)) == 0x00) && (encoder < 9999)) encoder = encoder + 1; //inc
if (((PIND & (1 << PD2)) == (1 << PD2)) && (encoder > 0 )) encoder = encoder - 1; //dec
}
encoder je připojen na piny:
PD2 (INT0) = encoder A
PD4 = encoder B