23.6.3 External Pin Processing

Each external pin can be configured to generate an interrupt/event on edge detection (rising, falling or both edges) or level detection (high or low). The sense of external interrupt pins is configured by writing the Input Sense x bits in the Configuration register (CONFIGn.SENSEx). The corresponding interrupt flag (INTFLAG.EXTINT[x]) in the Interrupt Flag Status and Clear register (INTFLAG) is set when the interrupt condition is met.

When the interrupt flag has been cleared in edge-sensitive mode, INTFLAG.EXTINT[x] will only be set if a new interrupt condition is met.

In level-sensitive mode, when interrupt has been cleared, INTFLAG.EXTINT[x] will be set immediately if the EXTINTx pin still matches the interrupt condition.

Each external pin can be filtered by a majority vote filtering, clocked by GCLK_EIC or CLK_ULP32K. Filtering is enabled if bit Filter Enable x in the configuration register (CONFIGn.FILTENx) is written to '1'. The majority vote filter samples the external pin three times with GCLK_EIC or CLK_ULP32K and outputs the value when two or more samples are equal.

Table 23-1. Majority Vote Filter Logic
Samples [0, 1, 2]Filter Output
[0,0,0]0
[0,0,1]0
[0,1,0]0
[0,1,1]1
[1,0,0]0
[1,0,1]1
[1,1,0]1
[1,1,1]1

When an external interrupt is configured for level detection and when filtering is disabled, detection is done asynchronously. Level detection and asynchronous edge detection do not require GCLK_EIC or CLK_ULP32K, and can generate asynchronous interrupts and events.

If filtering, synchronous edge detection or debouncing is enabled, the EIC automatically requests GCLK_EIC or CLK_ULP32K to operate. The selection between these two clocks is done by writing the Clock Selection bits in the Control A register (CTRLA.CKSEL). GCLK_EIC must be enabled in the GCLK module. In these modes the external pin is sampled at the EIC clock rate, thus pulses with duration lower than two EIC clock periods may not be properly detected.

Figure 23-2. Interrupt Detection Latency by modes (Rising Edge)

Detection latency depends on the detection mode.

Table 23-2. Detection Latency
Detection modeLatency (worst case)
Level without filterFive CLK_EIC_APB periods
Level with filterFour GCLK_EIC/CLK_ULP32K periods + five CLK_EIC_APB periods
Edge without filterFour GCLK_EIC/CLK_ULP32K periods + five CLK_EIC_APB periods
Edge with filterSix GCLK_EIC/CLK_ULP32K periods + five CLK_EIC_APB periods