Der Timer/Counter arbeitet mit einer Input Capture Einheit zusammen, mit der externe Ereignisse erfasst und mit einem Zeitstempel versehen werden können. Das externen Signal kennzeichnet ein oder mehrer externe Ereignisse das über den ICP1 Pin angelegt werden kann oder alternativ aus der Analog Comparator Einheit stammen kann. Der Zeitstempel kann dann genutzt werden, um die Frequenz, das Tastverhältnis oder andere Eigenschaften des externen Signals zu ermitteln. Außerdem können die Zeitstempel auch verwendet werden, um eine Aufzeichnung der eingetretenen Ereignisse zu erstellten.
In nachfolgendem Abbild ist die Input Capture Einheit dargestellt. Die Elemente, die nicht unmittelbar zur Input Capture Einheit gehören sind grau schattiert. Das „n“ in den Registern und Bitnamen steht für die Nummer des Timer/Counters.
Blockschaltbild Input Capture Einheit
Wenn ein Wechsel des logischen Pegels (Ereignis) am Input Capture Pin (ICP1) oder am Analog Comparator Output (ACO) auftritt, und diese Wechsel mit den Einstellungen des Flankendetektors zusammepassen, dann wird die Erfassung getriggert. Wenn die Erfassung getriggert wird, wird der aktuelle 16-bit Wert des Zählers (TCNT1) in das Input Capture Register (ICR1) geschrieben. Das Input Capture Flag (IVF1) wird im selben Taktzyklus gesetzt, in dem der Wert von TCNT1 in das ICR1 Register kopiert wird. Wenn freigegeben (TICIE1=1) erzeugt das Input Capture Flag einen Interrupt. Das ICF1 Flag wird automatisch gelöscht, wenn die Interruptroutine ausgeführt wird. Alternativ kann das ICF1 Flag auch dadurch gelöscht werden, indem eine logische 1 in das Flag geschrieben wird.
Das Auslesen des 16-bit Wertes aus dem Input Capture Register (ICR1) erfolgt, indem zunächst das Low-Byte (ICR1L) und danach das High-Byte (ICR1H) gelesen wird. In dem Moment, in dem das Low-Byte gelesen wird, wird das High-Byte in das temporäre Register (TEMP) kopiert. Wenn dann das High-Byte gelesen wird, greift die CPU auf dieses temporäre Register zu.
Das ICR1 Register kann nur beschrieben werden, wenn ein Waveform Generation Modus benutzt wird, der das ICR1 Register zum festlegen des TOP Wertes für den Timer/Counter verwendet. In diesem Fällen müssen die Waveform Generation Modus Bits WGM13 bis WGM10 gesetzt werden, bevor der Wert in das ICR1 Register geschrieben werden kann. Beim Schreiben wird zunächst das High-Byte geschrieben und in dem temporären Register abgelegt. Beim Schreiben des Low-Byte werden beiden Bytes in das ICR1 Register übernommen.