> PORTD |= (1 << ICP_PIN); //Input Capture Pin als Eingang
Der Kommentar stimmt nicht. Du schaltest damit den Pullup ein.
Verkraftet das Signal den Pullup?
> StartTime = ICR1; // Timerwert wird in StartTime gesichert
> EndTime = ICR1; //End Wert sicehrn
Du kannst der Empfehlung von Atmel ("ICR1 so früh wie möglich lesen")
besser nachkommen, wenn du ICR1 vor dem If-then-else liest und später
auf StartTime und EndTime aufteilst.
> if (TCCR1B & (1<<ICES1))
Du kannst das beschleunigen, wenn du das Bit ohne Abfragen einfach
toggelst. Du weisst ja, wie du gestartet bist. Dito PA0 ans PORTA.
> TIFR |= (1 << ICF1 ); // Interrupt Flag löschen
Das würde ich nicht machen. Die ISR alleine löscht schon ihr
Interruptflag. Wenn du reinfummelst, löschst du vielleicht den nachsten
anstehenden ICP IRQ. Bei 300Hz and 1300Hz und 1 MHz/8 vielleicht
unkritisch, bei schnelleren Signalen vielleicht tödlich.
> Aber es wird nur Blödsinn am OSzilloskop angezeigt.
Das hört sich nach einem Bedienerfehler an. Masseleitung vergessen?
Oszilloskop falsch eingestellt?