Ja, der Chip sollte noch was machen.
Dann bleiben eigentlich nur Interrupts - gaaaanz grob würd´ ich es etwa so machen:

Der Original-Impuls wird auf einen Interrupt-Eingang gelegt, der auf wechselnde Flanke konfiguriert ist.

In der ISR wird abgefragt, ob der PIN 1 oder 0 ist.

Wenn der Pin gerade 1 ist, dann wird der Ausgangs-Port (beliebig) auf 1 gesetzt, ein Timer gestartet und dann return.

Wenn der Pin 0 ist, wird der wird der Timer gestoppt, sein Wert an eine Variable übergeben und der Timer auf 0 gesetzt. Diese Variable wird z.B. durch 10 geteilt (für 10%) und in das Output-Compare-Registers des Timers geschrieben. Der Timer wird gestartet und der Output-Compare-Interrupt freigegeben, und return.

In der Output-Compare-ISR (die logischerweise nach weiteren 10% Zeit erreicht wird) passiert folgendes:
Der Ausgangs-Port wird auf 0 gesetzt, der Timer gestoppt und auf 0 zurückgesetzt. Und, ganz wichtig, den Output-Compare-Interrupt deaktivieren, damit er beim "langen" hochzählen während des nächsten Impulses nicht "zuschlägt". Und return!

Ich hoffe, dass das jetzt nicht zu wirr war

Gutes Gelingen!