diff --git a/cores/esp32/esp32-hal-gpio.c b/cores/esp32/esp32-hal-gpio.c index f0f99db9abf..eaaef7fcc5a 100644 --- a/cores/esp32/esp32-hal-gpio.c +++ b/cores/esp32/esp32-hal-gpio.c @@ -167,6 +167,9 @@ extern void __attachInterruptFunctionalArg(uint8_t pin, voidFuncPtrArg userFunc, { static bool interrupt_initialized = false; + // makes sure that pin -1 (255) will never work -- this follows Arduino standard + if (pin >= SOC_GPIO_PIN_COUNT) return; + if(!interrupt_initialized) { esp_err_t err = gpio_install_isr_service((int)ARDUINO_ISR_FLAG); interrupt_initialized = (err == ESP_OK) || (err == ESP_ERR_INVALID_STATE); diff --git a/variants/Bee_Data_Logger/pins_arduino.h b/variants/Bee_Data_Logger/pins_arduino.h index b49fd08d030..46aba611444 100644 --- a/variants/Bee_Data_Logger/pins_arduino.h +++ b/variants/Bee_Data_Logger/pins_arduino.h @@ -14,7 +14,7 @@ #define NUM_ANALOG_INPUTS 7 #define analogInputToDigitalPin(p) (((p)<20)?(analogChannelToDigitalPin(p)):-1) -#define digitalPinToInterrupt(p) (((p)<48)?(p):-1) +#define digitalPinToInterrupt(p) (((p)<49)?(p):-1) #define digitalPinHasPWM(p) (p < 46) static const uint8_t TX = 43; diff --git a/variants/Bee_Motion/pins_arduino.h b/variants/Bee_Motion/pins_arduino.h index 18cc71f24f5..cb61f9efd1e 100644 --- a/variants/Bee_Motion/pins_arduino.h +++ b/variants/Bee_Motion/pins_arduino.h @@ -14,7 +14,7 @@ #define NUM_ANALOG_INPUTS 12 #define analogInputToDigitalPin(p) (((p)<20)?(analogChannelToDigitalPin(p)):-1) -#define digitalPinToInterrupt(p) (((p)<48)?(p):-1) +#define digitalPinToInterrupt(p) (((p)<49)?(p):-1) #define digitalPinHasPWM(p) (p < 46) static const uint8_t TX = 43; diff --git a/variants/Bee_Motion_S3/pins_arduino.h b/variants/Bee_Motion_S3/pins_arduino.h index 19025426c65..e3a1dacf351 100644 --- a/variants/Bee_Motion_S3/pins_arduino.h +++ b/variants/Bee_Motion_S3/pins_arduino.h @@ -14,7 +14,7 @@ #define NUM_ANALOG_INPUTS 11 #define analogInputToDigitalPin(p) (((p)<20)?(analogChannelToDigitalPin(p)):-1) -#define digitalPinToInterrupt(p) (((p)<48)?(p):-1) +#define digitalPinToInterrupt(p) (((p)<49)?(p):-1) #define digitalPinHasPWM(p) (p < 46) static const uint8_t TX = 43; diff --git a/variants/Bee_S3/pins_arduino.h b/variants/Bee_S3/pins_arduino.h index b095fb8fd7f..22126d14008 100644 --- a/variants/Bee_S3/pins_arduino.h +++ b/variants/Bee_S3/pins_arduino.h @@ -14,7 +14,7 @@ #define NUM_ANALOG_INPUTS 8 #define analogInputToDigitalPin(p) (((p)<20)?(analogChannelToDigitalPin(p)):-1) -#define digitalPinToInterrupt(p) (((p)<48)?(p):-1) +#define digitalPinToInterrupt(p) (((p)<49)?(p):-1) #define digitalPinHasPWM(p) (p < 46) static const uint8_t TX = 43; diff --git a/variants/Edgebox-ESP-100/pins_arduino.h b/variants/Edgebox-ESP-100/pins_arduino.h index ae212f44dea..c781113e040 100644 --- a/variants/Edgebox-ESP-100/pins_arduino.h +++ b/variants/Edgebox-ESP-100/pins_arduino.h @@ -8,7 +8,7 @@ #define NUM_ANALOG_INPUTS 2 #define analogInputToDigitalPin(p) (((p)<2)?(analogChannelToDigitalPin(p)):-1) -#define digitalPinToInterrupt(p) (((p)<34)?(p):-1) +#define digitalPinToInterrupt(p) (((p)<49)?(p):-1) #define digitalPinHasPWM(p) (p < 34) //Programming and Debugging Port diff --git a/variants/Nebula_S3/pins_arduino.h b/variants/Nebula_S3/pins_arduino.h index 513aef8409e..2d905050651 100644 --- a/variants/Nebula_S3/pins_arduino.h +++ b/variants/Nebula_S3/pins_arduino.h @@ -11,7 +11,7 @@ #define NUM_ANALOG_INPUTS 6 #define analogInputToDigitalPin(p) (((p)<6)?(analogChannelToDigitalPin(p)):-1) -#define digitalPinToInterrupt(p) (((p)<20)?(p):-1) +#define digitalPinToInterrupt(p) (((p)<49)?(p):-1) #define digitalPinHasPWM(p) (p < 20) diff --git a/variants/XIAO_ESP32S3/pins_arduino.h b/variants/XIAO_ESP32S3/pins_arduino.h index 975b5717097..5ddeaaf2316 100644 --- a/variants/XIAO_ESP32S3/pins_arduino.h +++ b/variants/XIAO_ESP32S3/pins_arduino.h @@ -7,8 +7,8 @@ #define USB_VID 0x2886 #define USB_PID 0x0056 -#define EXTERNAL_NUM_INTERRUPTS 46 -#define NUM_DIGITAL_PINS 48 +#define EXTERNAL_NUM_INTERRUPTS 49 +#define NUM_DIGITAL_PINS 49 #define NUM_ANALOG_INPUTS 20 static const uint8_t LED_BUILTIN = 21; diff --git a/variants/adafruit_feather_esp32s3/pins_arduino.h b/variants/adafruit_feather_esp32s3/pins_arduino.h index 16ae97b640f..4b652308a51 100644 --- a/variants/adafruit_feather_esp32s3/pins_arduino.h +++ b/variants/adafruit_feather_esp32s3/pins_arduino.h @@ -14,7 +14,7 @@ #define NUM_ANALOG_INPUTS 20 #define analogInputToDigitalPin(p) (((p)<20)?(analogChannelToDigitalPin(p)):-1) -#define digitalPinToInterrupt(p) (((p)<48)?(p):-1) +#define digitalPinToInterrupt(p) (((p)<49)?(p):-1) #define digitalPinHasPWM(p) (p < 46) #define LED_BUILTIN 13 diff --git a/variants/adafruit_feather_esp32s3_nopsram/pins_arduino.h b/variants/adafruit_feather_esp32s3_nopsram/pins_arduino.h index 58a23a17f7c..573a4a77fe2 100644 --- a/variants/adafruit_feather_esp32s3_nopsram/pins_arduino.h +++ b/variants/adafruit_feather_esp32s3_nopsram/pins_arduino.h @@ -14,7 +14,7 @@ #define NUM_ANALOG_INPUTS 20 #define analogInputToDigitalPin(p) (((p)<20)?(analogChannelToDigitalPin(p)):-1) -#define digitalPinToInterrupt(p) (((p)<48)?(p):-1) +#define digitalPinToInterrupt(p) (((p)<49)?(p):-1) #define digitalPinHasPWM(p) (p < 46) #define LED_BUILTIN 13 diff --git a/variants/adafruit_feather_esp32s3_reversetft/pins_arduino.h b/variants/adafruit_feather_esp32s3_reversetft/pins_arduino.h index 594940f5710..8390b8ae3e3 100644 --- a/variants/adafruit_feather_esp32s3_reversetft/pins_arduino.h +++ b/variants/adafruit_feather_esp32s3_reversetft/pins_arduino.h @@ -16,7 +16,7 @@ #define NUM_ANALOG_INPUTS 20 #define analogInputToDigitalPin(p) (((p)<20)?(analogChannelToDigitalPin(p)):-1) -#define digitalPinToInterrupt(p) (((p)<48)?(p):-1) +#define digitalPinToInterrupt(p) (((p)<49)?(p):-1) #define digitalPinHasPWM(p) (p < 46) #define LED_BUILTIN 13 diff --git a/variants/adafruit_feather_esp32s3_tft/pins_arduino.h b/variants/adafruit_feather_esp32s3_tft/pins_arduino.h index d1a9dc5ff81..dc37d85a7dc 100644 --- a/variants/adafruit_feather_esp32s3_tft/pins_arduino.h +++ b/variants/adafruit_feather_esp32s3_tft/pins_arduino.h @@ -16,7 +16,7 @@ #define NUM_ANALOG_INPUTS 20 #define analogInputToDigitalPin(p) (((p)<20)?(analogChannelToDigitalPin(p)):-1) -#define digitalPinToInterrupt(p) (((p)<48)?(p):-1) +#define digitalPinToInterrupt(p) (((p)<49)?(p):-1) #define digitalPinHasPWM(p) (p < 46) #define LED_BUILTIN 13 diff --git a/variants/adafruit_matrixportal_esp32s3/pins_arduino.h b/variants/adafruit_matrixportal_esp32s3/pins_arduino.h index fc7e69f5c1d..0f5963bdab3 100644 --- a/variants/adafruit_matrixportal_esp32s3/pins_arduino.h +++ b/variants/adafruit_matrixportal_esp32s3/pins_arduino.h @@ -9,8 +9,8 @@ #define USB_PRODUCT "MatrixPortal ESP32-S3" #define USB_SERIAL "" // Empty string for MAC adddress -#define EXTERNAL_NUM_INTERRUPTS 46 -#define NUM_DIGITAL_PINS 48 +#define EXTERNAL_NUM_INTERRUPTS 49 +#define NUM_DIGITAL_PINS 49 #define NUM_ANALOG_INPUTS 6 #define analogInputToDigitalPin(p) (((p)