Die Zugriffe auf die Variable Zähler sind nicht atomar. Es kann also passieren, das high und low Bytes nicht zusammengehören.
Zugriffe auf Zaehler müßte man also immer in CLI / SEI einschließen.

Damit die Zeiten besser stimmen sollte man beim Timer wenn irgendmöglich den CTC modus wählen, dann summieren sich Verzögerungen beim ISR-aufruf nicht auf.