Skip to content

Commit 1926773

Browse files
committed
Added attachInterruptToPin() function (Rob Tillaart)
1 parent d16bd34 commit 1926773

File tree

4 files changed

+41
-0
lines changed

4 files changed

+41
-0
lines changed

build/shared/revisions.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ ARDUINO 1.5.5 BETA
1515
(http://www.djerickson.com/arduino/)
1616
* avr: Fixed wrong extended fuses on Arduino Yún when using external programmer
1717
* Added digitalPinToInterrupt variant macro (Paul Stoffregen)
18+
* Added attachInterruptToPin command (Rob Tillaart)
1819
* avr: Added yun variant with LED_BUILTIN definition
1920

2021
ARDUINO 1.5.4 BETA 2013.09.10

hardware/arduino/avr/cores/arduino/Arduino.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,4 +216,22 @@ long map(long, long, long, long, long);
216216

217217
#include "pins_arduino.h"
218218

219+
static inline boolean attachInterruptToPin(uint8_t pin, void (*userFunc)(void), int mode)
220+
{
221+
int irq = digitalPinToInterrupt(pin);
222+
if (irq == NOT_AN_INTERRUPT)
223+
return false;
224+
attachInterrupt(irq, userFunc, mode);
225+
return true;
226+
}
227+
228+
static inline boolean detachInterruptFromPin(uint8_t pin)
229+
{
230+
int irq = digitalPinToInterrupt(pin);
231+
if (irq == NOT_AN_INTERRUPT)
232+
return false;
233+
detachInterrupt(irq);
234+
return true;
235+
}
236+
219237
#endif

hardware/arduino/sam/cores/arduino/WInterrupts.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,24 @@ void detachInterrupt(uint32_t pin)
129129
pio->PIO_IDR = mask;
130130
}
131131

132+
boolean attachInterruptToPin(uint8_t pin, void (*userFunc)(void), int mode)
133+
{
134+
int irq = digitalPinToInterrupt(pin);
135+
if (irq == NOT_AN_INTERRUPT)
136+
return false;
137+
attachInterrupt(irq, userFunc, mode);
138+
return true;
139+
}
140+
141+
boolean detachInterruptFromPin(uint8_t pin)
142+
{
143+
int irq = digitalPinToInterrupt(pin);
144+
if (irq == NOT_AN_INTERRUPT)
145+
return false;
146+
detachInterrupt(irq);
147+
return true;
148+
}
149+
132150
#ifdef __cplusplus
133151
extern "C" {
134152
#endif

hardware/arduino/sam/cores/arduino/WInterrupts.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ void attachInterrupt(uint32_t pin, void (*callback)(void), uint32_t mode);
2929

3030
void detachInterrupt(uint32_t pin);
3131

32+
boolean attachInterruptToPin(uint8_t pin, void (*userFunc)(void), int mode);
33+
34+
boolean detachInterruptFromPin(uint8_t pin);
35+
3236
#ifdef __cplusplus
3337
}
3438
#endif

0 commit comments

Comments
 (0)