Code:
timestamp = TCNT1; 
   if (position == 0) 
   { 
      MCUCR = (0<<ISC10); //fallende Flanke 
      TCNT1 = 0; //zurücksetzen (Anti-Überlauf) 
      position = 0; 
   } 
   else 
   { 
      MCUCR = (1<<ISC10); //steigende Flanke 
      position = 1; 
   }
Sollte da in der Zuweisung bei position = 0; nicht position = 1 stehen und umgekehrt ?
Sonst wird ja beim nächsten Interrupt wieder die "if (position == 0)" durchlaufen.