From 2e620d7019fd9106d1501c1c21061f357d00bdd9 Mon Sep 17 00:00:00 2001 From: Sandeep Mistry <s.mistry@arduino.cc> Date: Tue, 23 Feb 2016 17:04:19 -0500 Subject: [PATCH] Move digitalPinToInterrupt definition to Arduino.h if variant compliance it 1.6.5 or higher --- cores/arduino/Arduino.h | 5 +++++ cores/arduino/WInterrupts.c | 8 ++++++++ variants/arduino_zero/variant.h | 7 ++----- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/cores/arduino/Arduino.h b/cores/arduino/Arduino.h index 1be6d717..c630f737 100644 --- a/cores/arduino/Arduino.h +++ b/cores/arduino/Arduino.h @@ -114,6 +114,11 @@ void loop( void ) ; #define bit(b) (1UL << (b)) +#if (ARDUINO_SAMD_VARIANT_COMPLIANCE >= 10605) +// Interrupts +#define digitalPinToInterrupt(P) ( g_APinDescription[P].ulExtInt ) +#endif + // USB Device #include "USB/USBDesc.h" #include "USB/USBCore.h" diff --git a/cores/arduino/WInterrupts.c b/cores/arduino/WInterrupts.c index 0f1bf188..430195ca 100644 --- a/cores/arduino/WInterrupts.c +++ b/cores/arduino/WInterrupts.c @@ -57,7 +57,11 @@ void attachInterrupt(uint32_t pin, voidFuncPtr callback, uint32_t mode) uint32_t config; uint32_t pos; +#if ARDUINO_SAMD_VARIANT_COMPLIANCE >= 10605 EExt_Interrupts in = g_APinDescription[pin].ulExtInt; +#else + EExt_Interrupts in = digitalPinToInterrupt(pin); +#endif if (in == NOT_AN_INTERRUPT || in == EXTERNAL_INT_NMI) return; @@ -116,7 +120,11 @@ void attachInterrupt(uint32_t pin, voidFuncPtr callback, uint32_t mode) */ void detachInterrupt(uint32_t pin) { +#if (ARDUINO_SAMD_VARIANT_COMPLIANCE >= 10605) EExt_Interrupts in = g_APinDescription[pin].ulExtInt; +#else + EExt_Interrupts in = digitalPinToInterrupt(pin); +#endif if (in == NOT_AN_INTERRUPT || in == EXTERNAL_INT_NMI) return; diff --git a/variants/arduino_zero/variant.h b/variants/arduino_zero/variant.h index 6897f4f5..8bfe71c5 100644 --- a/variants/arduino_zero/variant.h +++ b/variants/arduino_zero/variant.h @@ -19,8 +19,8 @@ #ifndef _VARIANT_ARDUINO_ZERO_ #define _VARIANT_ARDUINO_ZERO_ -// The definitions here needs a SAMD core >=1.6.3 -#define ARDUINO_SAMD_VARIANT_COMPLIANCE 10603 +// The definitions here needs a SAMD core >=1.6.5 +#define ARDUINO_SAMD_VARIANT_COMPLIANCE 10605 /*---------------------------------------------------------------------------- * Definitions @@ -76,9 +76,6 @@ extern "C" */ // #define digitalPinToTimer(P) -// Interrupts -#define digitalPinToInterrupt(P) ( P ) - // LEDs #define PIN_LED_13 (13u) #define PIN_LED_RXL (25u) -- GitLab