Die Drehzahlmessung kann man ganz gut per Input Capture im Interrupt machen. Dazu muss aber Timer 1 durchgehend laufen, am besten über die ganzen 16 Bit also ohne variable obere Grenze. Das Ergebnis hat eine sehr gute Auflösung und man bekommt nach jedem (oder jedem 2.) Puls einen neuen Messwert.
Wenn man sich mit wenig Auflösung zufrieden gibt, kann man die Impulse in einer festen Zeit (z.B. 1 s) Zählen lassen - das benötigt ggf. etwas weniger Rechenzeit. Dafür ist die Auflösung aber begrenzt auf eine ganze Zahl bis etwa 120.