Der Timer (bevorzugt ein 16 Bit Timer) ist für die Zeitmessung schon mal nicht schlecht. Am Genauesten geht es mit der ICP Funktion. Nicht ganz so genau mit einem Interrupt der bei jeder Flanke ausgelöst wird.
Der Timer läuft durch, und aus den gemessenen Zeiten wird dann die Pulslänge durch Subtraktion bestimmt.