To enable and use capture operations, the corresponding Capture Channel x
Enable bit in the Control A register (CTRLA.CAPTENx) must be written to '1'.
A capture trigger can be provided by input event line TC_EV or by asynchronous I/O pin
WO[x] for each capture channel or by a TC event. To enable the capture from input event
line, Event Input Enable bit in the Event Control register (EVCTRL.TCEI) must be written to
'1'. To enable the capture from the I/O pin, the Capture On Pin x Enable bit in the CTRLA
register (CTRLA.COPENx) must be written to '1'.
Notes:
- 1.Capture on I/Os is only possible in
'Event' and 'Time-Stamp' capture action modes. Other modes can only use internal
events. (If I/Os toggling is needed in other modes, then the I/Os edge must be
configured for generating internal events).
- 2.Capture on an event from the Event
System is possible in 'Event', 'PPW/PWP/PW', and 'Time-Stamp' capture action modes.
In this case, the event system channels must be configured to operate in asynchronous
mode of operation.
- 3.Depending on CTRLA.COPENx, channel x can be configured for I/Os or internal event
capture (both are mutually exclusive). One channel can be configured for I/Os capture
while the other uses internal event capture.
By default, a capture operation is done when a rising edge is detected on the
input signal. Capture on falling edge is available, its activation is depending on the
input source:
- When the channel is used with a I/O
pin, write a '1' to the corresponding Invert Enable bit in the Drive Control register
(DRVCTRL.INVENx).
- When the channel is counting events
from the Event System, write a '1' to the TC Event Input Invert Enable bit in Event
Control register (EVCTRL.TCINV).
Figure 1. Capture
Double Buffering
For input capture, the buffer register and
the corresponding CCx act like a FIFO. When CCx is empty or read, any content in CCBUFx is
transferred to CCx. The buffer valid flag is passed to set the CCx interrupt flag (IF) and
generate the optional interrupt, event or DMA request. The CCBUFx register value can't be
read, all captured data must be read from CCx register.