Read(LOW) --> du bekommst LOW und TEMP:=HIGH
Read(HIGH) --> du bekommst den Inhalt von TEMP
Ist schon richtig so wie's dasteht.

'Systick' sagt mir nix, ich kenn die Sprache nicht nur die AVR-Hardware ist mir etwas vertraut. Möglicherweise unterstützt die Sprache direkt das Lesen eines 16 Bit mit foo := ICR1

InCapt zusammen mit PWM hab ich noch nicht verwendet. In einem Beitrag hiess es mal, das würde zusammen nicht funktionieren. Im Manual konnte ich aber keine Aussage dazu finden, möglicherweise war's ne Ente. Ich seh keinen Grund, warum es nicht gehen sollte -- ausser natürlich für Modi, wo ICR1 den TOP für Timer1 definiert. PWM-Modi, die ein TOP von 0xff 0der 0x1ff haben sind auch nicht so angesagt. Und je nach PWM-Mode zählt Timer1 abwechselnd hoch und runter, für InCapt ist das nicht sonderlich hilfreich.

Welchen PWM-Modus verwendest du denn?

Timer2 für die PWM ist keine Option?

Ansonsten sind zu erwartende 5ms zwischen zwei InCapt-IRQs massig Zeit. In weniger als 5ms sind schon Weltreiche erblüht und wieder versunken...