Witam, podszedłem do tego enkodera z nieco inną, dużo prostszą metodą. Kanał A podłączyłem do INT0, ustawiłem przerwania zewnętrzne wyzwalane zboczem narastającym w celu sprawdzania stanu na sąsiednim pinie PD3, do którego jest podłączony kanał B.
Z tabelki kodu Graya wynika, że przy obracaniu w lewo/prawo, przy zboczu narastającym dla kanału A sekwencje bitowe są odmienne przez co prostą funkcją warunkową mogę sprawdzić kierunek obrotu, a przy okazji w przerwaniu zliczać impulsy. Napisałem kod i wszystko idealnie działało, sprawdzanie kierunków, czy dodawanie licznika w jednym kierunku, a odejmowanie w drugim. Wszystko było ok, do pewnego momentu bo kombinowałem sobie z kodem, i w końcu nagle program przestał działać

nic nie zrobiłem, atmega przestała wykrywać kierunek obrotu
Ale już myślę co może być nie tak: jeszcze przed pisaniem tego programu, chciałem sprawdzić czy podczas obracania, sekwencja zmieniających się bitów jest zgodna z kodem Graya, i rzeczywiście tak było. Teraz nie wiem dlaczego, w przejściach brakuje stanu "00", co jak dla mnie może być powodem bo przy kręceniu w prawo, z tego stanu(00), jest zbocze narastające na kanał A, a na kanale B nadal zostaje '0', co program powinien zinterpretować. Co może powodować że na wyjściu enkoder podaje niekompletny kod Graya?
Pozdrawiam.