Danke erstmal,

Pollen des Timeroverflowflags im letzten "while" würde auch gehen.
Ich hoffe ich habe deinen Tipp richtig verstanden und umgesetzt. Der Code funktioniert so weit, allerdings bin ich mit der geringen Auflösung nicht ganz zufrieden.

Code:
#include <stdlib.h>
#include <stdio.h>
#include <avr/io.h>
#include <inttypes.h>
#include <util/delay.h>
#include "asuro.h"

int main(void)
{

  Init();
  
  uint16_t ergebnis;
  char buffer [20];
  ergebnis = 0;
 

  while (1)
  {     

     DDRC |= (1<<PC3);              // PC3 Ausgang
     PORTC |= (1<<PC3);             // PC3 High
     _delay_us(20);                 // warte 20 µSekunden
     PORTC &= ~(1<<PC3);           // PC3 Low
     DDRC &= ~(1<<PC3);            // PC3 Eingang
     while(!(PINC & (1<<PC3)));   // tue solange PC3 nicht 1 ist nichts
     TCCR1B = (1<<CS11);            // starte timer Prescaler 8 (Quarz 8Mhz)
     TCNT1 = 0;                    // setze Timer0 auf 0
     while((PINC & (1<<PC3)))
     {
         if (TIFR & (1<<TOV1))
         {
             ergebnis = ergebnis + 1;
             TIFR = (1<<TOV1);
         }
     }
     TCCR1B &= ~(1<<CS11);           // Stoppe timer
     
     itoa(ergebnis, buffer, 10); //übersetze (int)ergebnis in ASCII
     ergebnis = 0;
     SerPrint("\n\r Wen Ergebnis: \n\r"); 
     SerPrint(buffer);              //übertragung des Ergebnisses über RS232
     _delay_ms(500);            //warte 500ms
  }
}
Ich habe mich auch im Wiki über Overflow ISR schlau gemacht. Das bedeutet doch, dass eine Variable in einem Interrupt die Overflows zählt? Ich dachte mir, dass es so wie ich es jetzt gemacht habe einfacher ist.

Was ist "normal" in diesem Zusammenhang, bzw. warum sollte der Timerbetrieb hier un-normal sein ?
Der Timer könnte doch auch im CTC Modus laufen. Wenn der Timer im CTC modus läuft, bedeutet das dann, dass ich eine Zahl vorgeben kann bis der Overflow passiert. Zum Beispiel so, dass der Timer von 0 - 500 zählt bis ein Overflow geschieht? (Da bin ich noch ein wenig verwirrt)

MfG Maxtronik