Potrzebuję zrobić enkoder kwadraturowy na Raspberry Pi Pico. Spróbowałem tego:
Oczywiście chcąc nie chcąc zacząłem rozgryzać jak to PIO działa - dlaczego w ogóle nazywają to maszyną stanów?
Maszyna stanów to ja bym rozumiał jakiś rejestr do zapamiętania stanu i jeżeli maszyna jest w danym stanie to wykonuje jakiś tam kod, następnie sprawdza w kółko jakieś warunki, które powodują przejścia do innych stanów - przynajmniej ja to tak rozumiem i tak zawsze programowałem. Oczywiście taka sprzętowa maszyna powinna sprzętowo sprawdzać np. piny i zmieniać stan jaki się tam ustawi. Niestety w tym PIO czegoś takiego nie ma - sprawdza jedynie jeden pin blokujący warunek wait i instrukcja jmp, która jest jeszcze bardziej ograniczona, bo można jej przyporządkować tylko raz konkretny pin.