# `CircuitsFT232H.GPIO.Backend`

`Circuits.GPIO.Backend` implementation for the FT232H.

Configure with:

    config :circuits_gpio, default_backend: CircuitsFT232H.GPIO.Backend

Each connected FT232H is a GPIO controller named `"ftdi-<id>"`, exposing
the 16 pins `AD0..AD7` and `AC0..AC7`. The pins are addressable as
integers `0..15` or by their `AD?`/`AC?` labels — see
`CircuitsFT232H.GPIO` for the full mapping.

GPIO operations coexist with `CircuitsFT232H.SPI.Backend` and
`CircuitsFT232H.I2C.Backend` on the same chip — pins reserved by an
active protocol fail with `{:error, {:pin_reserved_by_protocol, mode, pin}}`
if you try to open them as GPIO.

## Interrupts are emulated by polling

`Circuits.GPIO.set_interrupts/3` is supported via a per-chip polling
GenServer (`CircuitsFT232H.GPIO.Poller`) that samples pin state at a
fixed interval — **the FT232H has no hardware pin-change notifications,
so pulses shorter than the poll interval will be missed.** Default
interval is 10 ms; configure via:

    config :circuits_ft232h, gpio_poll_interval_ms: 5

See `CircuitsFT232H.GPIO.Poller` for the full caveats.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
