Danke nochmal
Race-Conditions.... so heißt das also Schon wieder was dazu gelernt.
Aber wo genau siehst du da denn eine Race-Condition? Ich meine der Zähler hört doch nach der while schleife auf zu zählen und die Variable 'ergebnis' enthält einen Maximalen Wert von etwa 60 (liegt am Ultraschallsensor).

Die Auswertung des Timers ist mir auch schon in den Kopf gegangen:
Code:
    
 while((PINC & (1<<PC3)))
     {
         if (TIFR & (1<<TOV1))
         {
             ergebnis = ergebnis + 1;    //ergebnis1
             TIFR = (1<<TOV1);
         }
     }
     TCCR1B &= ~(1<<CS11);           // Stoppe timer
     ergebnis2 = TCNT1;                  //ergebnis2
Aber so wirklich schön finde ich das nicht. Hat auch nicht wirklich funktioniert.
Hast du da vielleicht noch einen Tipp/Codeschnipsel