diff --git a/build/shared/revisions.txt b/build/shared/revisions.txt index 552c9b46d..d9ba8eac0 100644 --- a/build/shared/revisions.txt +++ b/build/shared/revisions.txt @@ -25,6 +25,7 @@ ARDUINO 1.5.5 BETA * avr: Added yun variant with LED_BUILTIN definition * avr: Refactored Mega* variants definitions in boards.txt (Kristian Sloth Lauszus) * avr: Removed File object destructor. In order to free memory allocated by a File object the safest way is to call its close() method +* Added digitalPinToInterrupt variant macro (Paul Stoffregen) ARDUINO 1.5.4 BETA 2013.09.10 diff --git a/hardware/arduino/avr/variants/leonardo/pins_arduino.h b/hardware/arduino/avr/variants/leonardo/pins_arduino.h index 2c7f8372f..a0e159431 100644 --- a/hardware/arduino/avr/variants/leonardo/pins_arduino.h +++ b/hardware/arduino/avr/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/hardware/arduino/avr/variants/mega/pins_arduino.h b/hardware/arduino/avr/variants/mega/pins_arduino.h index 5a9b4cb09..47151d4d0 100644 --- a/hardware/arduino/avr/variants/mega/pins_arduino.h +++ b/hardware/arduino/avr/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/hardware/arduino/avr/variants/standard/pins_arduino.h b/hardware/arduino/avr/variants/standard/pins_arduino.h index 30b426630..7923b0394 100644 --- a/hardware/arduino/avr/variants/standard/pins_arduino.h +++ b/hardware/arduino/avr/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 diff --git a/hardware/arduino/sam/variants/arduino_due_x/variant.h b/hardware/arduino/sam/variants/arduino_due_x/variant.h index ef2587688..8c4f25120 100644 --- a/hardware/arduino/sam/variants/arduino_due_x/variant.h +++ b/hardware/arduino/sam/variants/arduino_due_x/variant.h @@ -56,6 +56,11 @@ extern "C"{ // Number of pins defined in PinDescription array #define PINS_COUNT (79u) +#define NUM_DIGITAL_PINS (53u) +#define NUM_ANALOG_INPUTS (12u) + +// Interrupts +#define digitalPinToInterrupt(p) ((p) < NUM_DIGITAL_PINS ? (p) : -1) // LEDs #define PIN_LED_13 (13u)