aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCristian Maglie <c.maglie@bug.st>2013-09-28 21:11:33 +0200
committerCristian Maglie <c.maglie@bug.st>2013-10-31 12:43:41 +0100
commitc7baecc1f62e8a98ce1cc13a5a5df8359d83f54e (patch)
treeb18e7272f65a06c7d3dc7dee94f516ed805dbcea
parent513089156b69385e6074849a9e1a40a2ef6c536a (diff)
Added pinToInterrupt() variant macro (Paul Stoffregen)
-rw-r--r--variants/leonardo/pins_arduino.h2
-rw-r--r--variants/mega/pins_arduino.h4
-rw-r--r--variants/standard/pins_arduino.h2
3 files changed, 7 insertions, 1 deletions
diff --git a/variants/leonardo/pins_arduino.h b/variants/leonardo/pins_arduino.h
index 2c7f837..a0e1594 100644
--- a/variants/leonardo/pins_arduino.h
+++ b/variants/leonardo/pins_arduino.h
@@ -132,6 +132,8 @@ static const uint8_t A11 = 29; // D12
extern const uint8_t PROGMEM analog_pin_to_channel_PGM[];
#define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) )
+#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : -1)))))
+
#ifdef ARDUINO_MAIN
// On the Arduino board, digital pins are also used
diff --git a/variants/mega/pins_arduino.h b/variants/mega/pins_arduino.h
index 5a9b4cb..47151d4 100644
--- a/variants/mega/pins_arduino.h
+++ b/variants/mega/pins_arduino.h
@@ -83,6 +83,8 @@ static const uint8_t A15 = 69;
( (((p) >= 62) && ((p) <= 69)) ? ((p) - 62) : \
0 ) ) ) ) ) )
+#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : ((p) >= 18 && (p) <= 21 ? 23 - (p) : -1)))
+
#ifdef ARDUINO_MAIN
const uint16_t PROGMEM port_to_mode_PGM[] = {
@@ -360,4 +362,4 @@ const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
#endif
-#endif \ No newline at end of file
+#endif
diff --git a/variants/standard/pins_arduino.h b/variants/standard/pins_arduino.h
index 30b4266..7923b03 100644
--- a/variants/standard/pins_arduino.h
+++ b/variants/standard/pins_arduino.h
@@ -60,6 +60,8 @@ static const uint8_t A7 = 21;
#define digitalPinToPCMSK(p) (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)0))))
#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14)))
+#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : -1))
+
#ifdef ARDUINO_MAIN
// On the Arduino board, digital pins are also used