From 399d59028f2f99565969f72242e7b5814b28bb6e Mon Sep 17 00:00:00 2001 From: Matt Thompson Date: Sat, 10 Feb 2018 23:24:06 +0000 Subject: [PATCH] Merged in extent3d/nuttx/eic-edge (pull request #593) SAMDL: Fix EIC interrupt edge sensitivity for pin numbers > 8 Approved-by: Gregory Nutt --- arch/arm/src/samdl/sam_eic.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/arch/arm/src/samdl/sam_eic.c b/arch/arm/src/samdl/sam_eic.c index ff73950cc0..95a20504cb 100644 --- a/arch/arm/src/samdl/sam_eic.c +++ b/arch/arm/src/samdl/sam_eic.c @@ -228,12 +228,36 @@ int sam_eic_config(uint8_t eirq, port_pinset_t pinset) else if (eirq < 16) { reg = SAM_EIC_CONFIG1; - val = EIC_CONFIG1_FILTEN(eirq) | EIC_CONFIG1_SENSE_FALL(eirq); + + val = EIC_CONFIG1_SENSE_BOTH(eirq); + if (pinset & PORT_INT_RISING) + { + val = EIC_CONFIG1_SENSE_RISE(eirq); + } + + if (pinset & PORT_INT_FALLING) + { + val = EIC_CONFIG1_SENSE_FALL(eirq); + } + + val |= EIC_CONFIG1_FILTEN(eirq); } else { reg = SAM_EIC_CONFIG2; - val = EIC_CONFIG2_FILTEN(eirq) | EIC_CONFIG2_SENSE_FALL(eirq); + + val = EIC_CONFIG2_SENSE_BOTH(eirq); + if (pinset & PORT_INT_RISING) + { + val = EIC_CONFIG2_SENSE_RISE(eirq); + } + + if (pinset & PORT_INT_FALLING) + { + val = EIC_CONFIG2_SENSE_FALL(eirq); + } + + val |= EIC_CONFIG2_FILTEN(eirq); } /* Write the new config to the CONFIGn register */