X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fsamd21%2Fao_exti_samd21.c;h=688f64337be88510c06529700228f8222ea68666;hb=3da00a912b07c77d06785933c92e287ab48b0f79;hp=d8109483a83a1e6a3c61de4097c69b507d3cda00;hpb=479bf2d88544f7f848ae42f77b0fbb74ca61ca27;p=fw%2Faltos diff --git a/src/samd21/ao_exti_samd21.c b/src/samd21/ao_exti_samd21.c index d8109483..688f6433 100644 --- a/src/samd21/ao_exti_samd21.c +++ b/src/samd21/ao_exti_samd21.c @@ -136,11 +136,13 @@ ao_exti_enable(struct samd21_port *port, uint8_t pin) uint8_t id = pin_id(port,pin); ao_arch_block_interrupts(); - samd21_eic.intenset = 1 << id; /* configure gpio to interrupt routing */ - ao_samd21_exti[id].pmux = samd21_port_pmux_get(port, pin); - ao_samd21_exti[id].pincfg = samd21_port_pincfg_get(port, pin); + if ((samd21_eic.intenset & (1 << id)) == 0) { + ao_samd21_exti[id].pmux = samd21_port_pmux_get(port, pin); + ao_samd21_exti[id].pincfg = samd21_port_pincfg_get(port, pin); + } samd21_port_pmux_set(port, pin, SAMD21_PORT_PMUX_FUNC_A); + samd21_eic.intenset = 1 << id; ao_arch_release_interrupts(); }