Papst-Lüfter Drehzahlerfassung!

Ich hab mir das mit dem Counter nochmal angesehen.
Sowohl TIMER0 (8bit) als auch TIMER1 (16bit) können als Zähler für externe Signale verwendet werden. Dafür zuständig ist das Register TCCR (Im Fall des TIMER1) das TCCR1B
In diesen Registern gibt es 3 Clock-Select Bits welche die Input-Pins T0 für Timer0 (Pin 4) und T1 für Timer1 (Pin 5) als "Taktquelle" für den Timer (oder in diesem Fall ehe Counter) für steigende oder fallende Flanke auswählen können.
Hängt nun an diesen Pins eine Taktquelle (dein Tachosignal) kann der Atmega das mit bis zu 50% seiner eigenen Taktfrequenz zählen (Beim Arduino also mit 16/2 = 8 MHz). Bei jedem Überlauf wird ein Interrupt ausgelöst, der dann Deine ISR anspringen kann.
Nehmen wir mal an, Du verwendest TIMER0 und Pin 4 als Eingang und läßt den Timer im "normal" Mode laufen (immer zählen von 0 bis 255 und Interrupt auslösen bei Überlauf) und nehmen wir weiterhin an, der Lüfter läuft mit 1000 U/min.
Das wären 1000 * 2 Impulse / 60 Sekunden = 33,3333 Impusle pro Sekunde. Bei 256 Counts bis zum Überlauf, sind das dann 256 / 33,33333 = 7,68 Sekunden bis zum Überlauf. Bei 2000 U/min wären es dann 3,34 Sekunden. Das ist schon recht lange, bis man wieder einen aktualisierten Wert bekommt. Je langsamer der Lüfter läuft, desto länger die Wartezeit. Dafür gibt es aber den sogenannten CTC Modus. Hier kann man den Wert, bei dem ein Interrupt ausgelöst wird, selbst festlegen. Damit kann man die Zahl der Counts herunter setzen um schneller ein Ergebnis zu bekommen.