aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCristian Maglie <c.maglie@bug.st>2012-11-02 19:48:04 +0100
committerCristian Maglie <c.maglie@bug.st>2012-11-02 19:48:04 +0100
commitb77b1817d5db3d777c9ca5dc9792cb49fc4f990e (patch)
tree6d2035e7d37bf67e1fa69b051e5b3a77a69113df
parent5a9055118ed04678f366d4017b8d31bf7b4e24f2 (diff)
{attach,detach}Interrupt() on Due selects directly pin number instead of interrupt number.
-rw-r--r--sam/cores/arduino/WInterrupts.c14
-rw-r--r--sam/cores/arduino/WInterrupts.h4
2 files changed, 4 insertions, 14 deletions
diff --git a/sam/cores/arduino/WInterrupts.c b/sam/cores/arduino/WInterrupts.c
index 68bd78c..7653d18 100644
--- a/sam/cores/arduino/WInterrupts.c
+++ b/sam/cores/arduino/WInterrupts.c
@@ -20,8 +20,6 @@
typedef void (*interruptCB)(void);
-static int pinMapping[EXTERNAL_NUM_INTERRUPTS] = { 2, 3, 4, 5, 6, 7, 8 };
-
static interruptCB callbacksPioA[32];
static interruptCB callbacksPioB[32];
static interruptCB callbacksPioC[32];
@@ -55,11 +53,8 @@ static void __initialize() {
}
-void attachInterrupt(uint32_t interruptNum, void (*callback)(void), uint32_t mode)
+void attachInterrupt(uint32_t pin, void (*callback)(void), uint32_t mode)
{
- if (interruptNum >= EXTERNAL_NUM_INTERRUPTS)
- return;
-
static int enabled = 0;
if (!enabled) {
__initialize();
@@ -67,7 +62,6 @@ void attachInterrupt(uint32_t interruptNum, void (*callback)(void), uint32_t mod
}
// Retrieve pin information
- uint32_t pin = pinMapping[interruptNum];
Pio *pio = g_APinDescription[pin].pPort;
uint32_t mask = g_APinDescription[pin].ulPin;
uint32_t pos = 0;
@@ -115,13 +109,9 @@ void attachInterrupt(uint32_t interruptNum, void (*callback)(void), uint32_t mod
pio->PIO_IER = mask;
}
-void detachInterrupt( uint32_t interruptNum )
+void detachInterrupt(uint32_t pin)
{
- if (interruptNum >= EXTERNAL_NUM_INTERRUPTS)
- return;
-
// Retrieve pin information
- uint32_t pin = pinMapping[interruptNum];
Pio *pio = g_APinDescription[pin].pPort;
uint32_t mask = g_APinDescription[pin].ulPin;
diff --git a/sam/cores/arduino/WInterrupts.h b/sam/cores/arduino/WInterrupts.h
index 3220e85..bb698cd 100644
--- a/sam/cores/arduino/WInterrupts.h
+++ b/sam/cores/arduino/WInterrupts.h
@@ -25,9 +25,9 @@
extern "C" {
#endif
-void attachInterrupt(uint32_t interruptNum, void (*callback)(void), uint32_t mode);
+void attachInterrupt(uint32_t pin, void (*callback)(void), uint32_t mode);
-void detachInterrupt(uint32_t interruptNum);
+void detachInterrupt(uint32_t pin);
#ifdef __cplusplus
}