PWM ist eine Ausgabe und interessiert dich hier nicht.
Der Arduino Uno hat 2 Pins (2 und 3), an die du direkt eine Interrupt-Routine anschliessen kannst. Damit kriegst du einfach den Zeitpunkt jeder Pulsflanke mit ( wahlweise kommend oder gehend ).
Ob die Pulse kurz sind oder so lang dass beide Kanäle gleichzeitig 1 sind, ist eigentlich egal.
Jeder Puls stellt also fest, wann der letzte Puls war --> Geschwindigkeit
und ob der andere Kanal seinen letzen Puls kurz vorher, oder kurz nach dem vorigen hatte --> Richtung
millis() oder micros() und attachInterrupt() sind die Funktionen, die dich interessieren.