Skip to content

Commit 94bd161

Browse files
committed
Added pinToInterrupt() variant macro (Paul Stoffregen)
1 parent 2cf461d commit 94bd161

File tree

5 files changed

+13
-1
lines changed

5 files changed

+13
-1
lines changed

build/shared/revisions.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ ARDUINO 1.5.5 BETA
1414
* sam: Fixed wrong initialization for ADC timings (analogRead speed Arduino DUE improved by a factor x10)
1515
(http://www.djerickson.com/arduino/)
1616
* avr: Fixed wrong extended fuses on Arduino Yún when using external programmer
17+
* Added digitalPinToInterrupt variant macro (Paul Stoffregen)
1718

1819
ARDUINO 1.5.4 BETA 2013.09.10
1920

hardware/arduino/avr/variants/leonardo/pins_arduino.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ static const uint8_t A11 = 29; // D12
132132
extern const uint8_t PROGMEM analog_pin_to_channel_PGM[];
133133
#define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) )
134134

135+
#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : -1)))))
136+
135137
#ifdef ARDUINO_MAIN
136138

137139
// On the Arduino board, digital pins are also used

hardware/arduino/avr/variants/mega/pins_arduino.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ static const uint8_t A15 = 69;
8383
( (((p) >= 62) && ((p) <= 69)) ? ((p) - 62) : \
8484
0 ) ) ) ) ) )
8585

86+
#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : ((p) >= 18 && (p) <= 21 ? 23 - (p) : -1)))
87+
8688
#ifdef ARDUINO_MAIN
8789

8890
const uint16_t PROGMEM port_to_mode_PGM[] = {
@@ -360,4 +362,4 @@ const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
360362

361363
#endif
362364

363-
#endif
365+
#endif

hardware/arduino/avr/variants/standard/pins_arduino.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ static const uint8_t A7 = 21;
6060
#define digitalPinToPCMSK(p) (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)0))))
6161
#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14)))
6262

63+
#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : -1))
64+
6365
#ifdef ARDUINO_MAIN
6466

6567
// On the Arduino board, digital pins are also used

hardware/arduino/sam/variants/arduino_due_x/variant.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ extern "C"{
5656

5757
// Number of pins defined in PinDescription array
5858
#define PINS_COUNT (79u)
59+
#define NUM_DIGITAL_PINS (53u)
60+
#define NUM_ANALOG_INPUTS (12u)
61+
62+
// Interrupts
63+
#define digitalPinToInterrupt(p) ((p) < NUM_DIGITAL_PINS ? (p) : -1)
5964

6065
// LEDs
6166
#define PIN_LED_13 (13u)

0 commit comments

Comments
 (0)