From 4c87c4d3970f33f62b4733018687feaacad6f8c2 Mon Sep 17 00:00:00 2001 From: WestfW Date: Fri, 17 Jul 2020 19:27:09 -0700 Subject: [PATCH 1/3] Properly translate analog pins 8-15 on GCM4 https://github.com/adafruit/ArduinoCore-samd/issues/236 --- cores/arduino/wiring_analog.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cores/arduino/wiring_analog.c b/cores/arduino/wiring_analog.c index f809c32a4..e7c2ce46d 100644 --- a/cores/arduino/wiring_analog.c +++ b/cores/arduino/wiring_analog.c @@ -274,6 +274,11 @@ uint32_t analogRead(uint32_t pin) if (pin <= 5) { pin += A0; } +#if NUM_ANALOG_PINS > 8 + else if (pin < 16) { // Grand Central's extra 8 pins are discontinuous + pin += PIN_A8 - 8; // and are on LOWER digital Pins than A0..A7 + } +#endif pinPeripheral(pin, PIO_ANALOG); //ATSAMR, for example, doesn't have a DAC From 183dd56c0197b3b0a22d8fb72e3175c61c75e31d Mon Sep 17 00:00:00 2001 From: WestfW Date: Fri, 17 Jul 2020 22:14:18 -0700 Subject: [PATCH 2/3] Fix the symbol: NUM_ANALOG_INPUTS, not NUM_ANALOG_PINS --- cores/arduino/wiring_analog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/arduino/wiring_analog.c b/cores/arduino/wiring_analog.c index e7c2ce46d..d6836ebda 100644 --- a/cores/arduino/wiring_analog.c +++ b/cores/arduino/wiring_analog.c @@ -274,7 +274,7 @@ uint32_t analogRead(uint32_t pin) if (pin <= 5) { pin += A0; } -#if NUM_ANALOG_PINS > 8 +#if NUM_ANALOG_INPUTS > 8 else if (pin < 16) { // Grand Central's extra 8 pins are discontinuous pin += PIN_A8 - 8; // and are on LOWER digital Pins than A0..A7 } From c74dbfdb22a53b57994c814d004a071007cc3bd4 Mon Sep 17 00:00:00 2001 From: WestfW Date: Thu, 29 Oct 2020 19:57:48 -0700 Subject: [PATCH 3/3] Define PINS_COUNT as a constant that reflects the actual number of pins defined in the g_APinDescription[] array. https://github.com/adafruit/ArduinoCore-samd/issues/268 --- variants/arduino_mzero/variant.h | 2 +- variants/blm_badge/variant.cpp | 1 + variants/blm_badge/variant.h | 2 +- variants/circuitplay/variant.cpp | 1 + variants/circuitplay/variant.h | 2 +- variants/crickit_m0/variant.cpp | 1 + variants/crickit_m0/variant.h | 2 +- variants/feather_m0/variant.cpp | 1 + variants/feather_m0/variant.h | 2 +- variants/feather_m0_express/variant.cpp | 1 + variants/feather_m0_express/variant.h | 2 +- variants/feather_m4/variant.cpp | 1 + variants/feather_m4/variant.h | 2 +- variants/feather_m4_can/variant.h | 2 +- variants/gemma_m0/variant.cpp | 1 + variants/gemma_m0/variant.h | 2 +- variants/grand_central_m4/variant.cpp | 1 + variants/grand_central_m4/variant.h | 2 +- variants/hallowing_m0_express/variant.cpp | 1 + variants/hallowing_m0_express/variant.h | 2 +- variants/hallowing_m4/variant.cpp | 1 + variants/hallowing_m4/variant.h | 2 +- variants/itsybitsy_m0/variant.cpp | 1 + variants/itsybitsy_m0/variant.h | 2 +- variants/itsybitsy_m4/variant.cpp | 1 + variants/itsybitsy_m4/variant.h | 2 +- variants/matrixportal_m4/variant.cpp | 1 + variants/matrixportal_m4/variant.h | 2 +- variants/metro_m0/variant.cpp | 1 + variants/metro_m0/variant.h | 2 +- variants/metro_m4/variant.cpp | 1 + variants/metro_m4/variant.h | 2 +- variants/metro_m4_airlift/variant.cpp | 1 + variants/metro_m4_airlift/variant.h | 2 +- variants/mkr1000/variant.h | 2 +- variants/mkrzero/variant.h | 2 +- variants/monster_m4sk/variant.cpp | 1 + variants/monster_m4sk/variant.h | 2 +- variants/pirkey/variant.cpp | 1 + variants/pirkey/variant.h | 2 +- variants/pybadge_airlift_m4/variant.cpp | 1 + variants/pybadge_airlift_m4/variant.h | 2 +- variants/pybadge_m4/variant.cpp | 1 + variants/pybadge_m4/variant.h | 2 +- variants/pygamer_advance_m4/variant.cpp | 1 + variants/pygamer_advance_m4/variant.h | 2 +- variants/pygamer_m4/variant.cpp | 1 + variants/pygamer_m4/variant.h | 2 +- variants/pyportal_m4/variant.cpp | 1 + variants/pyportal_m4/variant.h | 2 +- variants/pyportal_m4_titano/variant.cpp | 1 + variants/pyportal_m4_titano/variant.h | 2 +- variants/qtpy_m0/variant.cpp | 1 + variants/qtpy_m0/variant.h | 2 +- variants/trellis_m4/variant.cpp | 1 + variants/trellis_m4/variant.h | 2 +- variants/trinket_m0/variant.cpp | 1 + variants/trinket_m0/variant.h | 2 +- variants/zero_radio/variant.cpp | 1 + variants/zero_radio/variant.h | 2 +- 60 files changed, 60 insertions(+), 32 deletions(-) diff --git a/variants/arduino_mzero/variant.h b/variants/arduino_mzero/variant.h index b48fde2ed..d8ab56cb4 100755 --- a/variants/arduino_mzero/variant.h +++ b/variants/arduino_mzero/variant.h @@ -53,7 +53,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (34u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (19u) #define NUM_ANALOG_INPUTS (5u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/blm_badge/variant.cpp b/variants/blm_badge/variant.cpp index f42fbf835..d27585fbd 100644 --- a/variants/blm_badge/variant.cpp +++ b/variants/blm_badge/variant.cpp @@ -98,3 +98,4 @@ void SERCOM1_Handler() WIRE_IT_HANDLER(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/blm_badge/variant.h b/variants/blm_badge/variant.h index c9b6b9906..268a7b99e 100644 --- a/variants/blm_badge/variant.h +++ b/variants/blm_badge/variant.h @@ -53,7 +53,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (20u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (17u) #define NUM_ANALOG_INPUTS (5u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/circuitplay/variant.cpp b/variants/circuitplay/variant.cpp index 4562bca19..41e001ce9 100644 --- a/variants/circuitplay/variant.cpp +++ b/variants/circuitplay/variant.cpp @@ -119,3 +119,4 @@ void SERCOM4_Handler() Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/circuitplay/variant.h b/variants/circuitplay/variant.h index 70deefcf9..34f384a41 100644 --- a/variants/circuitplay/variant.h +++ b/variants/circuitplay/variant.h @@ -37,7 +37,7 @@ // ---- // Number of pins defined in PinDescription array -#define PINS_COUNT (39u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (39u) #define NUM_ANALOG_INPUTS (11u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/crickit_m0/variant.cpp b/variants/crickit_m0/variant.cpp index 944e731e4..0e5734ba1 100644 --- a/variants/crickit_m0/variant.cpp +++ b/variants/crickit_m0/variant.cpp @@ -110,3 +110,4 @@ void SERCOM5_Handler() Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/crickit_m0/variant.h b/variants/crickit_m0/variant.h index 9b7646578..7a506dec6 100644 --- a/variants/crickit_m0/variant.h +++ b/variants/crickit_m0/variant.h @@ -53,7 +53,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (26u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (20u) #define NUM_ANALOG_INPUTS (12u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/feather_m0/variant.cpp b/variants/feather_m0/variant.cpp index f9e76061c..0b8f08256 100644 --- a/variants/feather_m0/variant.cpp +++ b/variants/feather_m0/variant.cpp @@ -137,3 +137,4 @@ void SERCOM5_Handler() Serial5.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/feather_m0/variant.h b/variants/feather_m0/variant.h index 20ecbbbaf..ba6d72219 100644 --- a/variants/feather_m0/variant.h +++ b/variants/feather_m0/variant.h @@ -53,7 +53,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (26u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (20u) #define NUM_ANALOG_INPUTS (8u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/feather_m0_express/variant.cpp b/variants/feather_m0_express/variant.cpp index a3e87b89e..ac57d8c45 100644 --- a/variants/feather_m0_express/variant.cpp +++ b/variants/feather_m0_express/variant.cpp @@ -126,3 +126,4 @@ void SERCOM0_Handler() Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/feather_m0_express/variant.h b/variants/feather_m0_express/variant.h index b666a281e..ea8122a8b 100644 --- a/variants/feather_m0_express/variant.h +++ b/variants/feather_m0_express/variant.h @@ -53,7 +53,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (42u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (42u) #define NUM_ANALOG_INPUTS (12u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/feather_m4/variant.cpp b/variants/feather_m4/variant.cpp index 88ba1ff6c..b2293f449 100644 --- a/variants/feather_m4/variant.cpp +++ b/variants/feather_m4/variant.cpp @@ -138,3 +138,4 @@ void SERCOM5_3_Handler() { Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/feather_m4/variant.h b/variants/feather_m4/variant.h index 6be35dccb..025b7c835 100644 --- a/variants/feather_m4/variant.h +++ b/variants/feather_m4/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (40u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (20u) #define NUM_ANALOG_INPUTS (6u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/feather_m4_can/variant.h b/variants/feather_m4_can/variant.h index 1e87cc62a..a607fad25 100644 --- a/variants/feather_m4_can/variant.h +++ b/variants/feather_m4_can/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (43u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (23u) #define NUM_ANALOG_INPUTS (6u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/gemma_m0/variant.cpp b/variants/gemma_m0/variant.cpp index c0fa9700e..ca4345d64 100644 --- a/variants/gemma_m0/variant.cpp +++ b/variants/gemma_m0/variant.cpp @@ -95,3 +95,4 @@ void SERCOM0_Handler() WIRE_IT_HANDLER(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/gemma_m0/variant.h b/variants/gemma_m0/variant.h index 43bdd68a6..ae47dde18 100644 --- a/variants/gemma_m0/variant.h +++ b/variants/gemma_m0/variant.h @@ -53,7 +53,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (16u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (16u) #define NUM_ANALOG_INPUTS (3u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/grand_central_m4/variant.cpp b/variants/grand_central_m4/variant.cpp index 78aa1495d..9d586f7af 100644 --- a/variants/grand_central_m4/variant.cpp +++ b/variants/grand_central_m4/variant.cpp @@ -217,3 +217,4 @@ void SERCOM0_3_Handler() { Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/grand_central_m4/variant.h b/variants/grand_central_m4/variant.h index 3092191b1..2c918705a 100644 --- a/variants/grand_central_m4/variant.h +++ b/variants/grand_central_m4/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (96) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (53) #define NUM_ANALOG_INPUTS (19) #define NUM_ANALOG_OUTPUTS (2) diff --git a/variants/hallowing_m0_express/variant.cpp b/variants/hallowing_m0_express/variant.cpp index 441e2faee..a316e34c2 100644 --- a/variants/hallowing_m0_express/variant.cpp +++ b/variants/hallowing_m0_express/variant.cpp @@ -128,3 +128,4 @@ void SERCOM2_Handler() Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/hallowing_m0_express/variant.h b/variants/hallowing_m0_express/variant.h index 8a84c6023..066ffbe17 100644 --- a/variants/hallowing_m0_express/variant.h +++ b/variants/hallowing_m0_express/variant.h @@ -53,7 +53,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (42u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (42u) #define NUM_ANALOG_INPUTS (12u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/hallowing_m4/variant.cpp b/variants/hallowing_m4/variant.cpp index 8f9ab0838..bc50b7668 100644 --- a/variants/hallowing_m4/variant.cpp +++ b/variants/hallowing_m4/variant.cpp @@ -146,3 +146,4 @@ void SERCOM4_3_Handler() { Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/hallowing_m4/variant.h b/variants/hallowing_m4/variant.h index 221821d59..c99cf1c8a 100644 --- a/variants/hallowing_m4/variant.h +++ b/variants/hallowing_m4/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (50u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (50u) #define NUM_ANALOG_INPUTS (10u) #define NUM_ANALOG_OUTPUTS (2u) diff --git a/variants/itsybitsy_m0/variant.cpp b/variants/itsybitsy_m0/variant.cpp index fa35301d7..34d703f04 100644 --- a/variants/itsybitsy_m0/variant.cpp +++ b/variants/itsybitsy_m0/variant.cpp @@ -124,3 +124,4 @@ void SERCOM0_Handler() Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/itsybitsy_m0/variant.h b/variants/itsybitsy_m0/variant.h index 4c0d1c15f..ff4f5f1d6 100644 --- a/variants/itsybitsy_m0/variant.h +++ b/variants/itsybitsy_m0/variant.h @@ -53,7 +53,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (26u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (20u) #define NUM_ANALOG_INPUTS (12u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/itsybitsy_m4/variant.cpp b/variants/itsybitsy_m4/variant.cpp index 35323cfcd..c6224853a 100644 --- a/variants/itsybitsy_m4/variant.cpp +++ b/variants/itsybitsy_m4/variant.cpp @@ -129,3 +129,4 @@ void SERCOM3_3_Handler() { Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/itsybitsy_m4/variant.h b/variants/itsybitsy_m4/variant.h index e031adc9f..4f6aacda9 100644 --- a/variants/itsybitsy_m4/variant.h +++ b/variants/itsybitsy_m4/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (38u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (26u) #define NUM_ANALOG_INPUTS (7u) #define NUM_ANALOG_OUTPUTS (2u) diff --git a/variants/matrixportal_m4/variant.cpp b/variants/matrixportal_m4/variant.cpp index df23508fe..3d0e4157d 100644 --- a/variants/matrixportal_m4/variant.cpp +++ b/variants/matrixportal_m4/variant.cpp @@ -171,3 +171,4 @@ void SERCOM4_3_Handler() { Serial2.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/matrixportal_m4/variant.h b/variants/matrixportal_m4/variant.h index 8d9abbc6a..6214b7334 100644 --- a/variants/matrixportal_m4/variant.h +++ b/variants/matrixportal_m4/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (40u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (20u) #define NUM_ANALOG_INPUTS (6u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/metro_m0/variant.cpp b/variants/metro_m0/variant.cpp index b4836efe8..69cb0af25 100644 --- a/variants/metro_m0/variant.cpp +++ b/variants/metro_m0/variant.cpp @@ -125,3 +125,4 @@ void SERCOM0_Handler() Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/metro_m0/variant.h b/variants/metro_m0/variant.h index 5aa2e8525..2e832e94a 100644 --- a/variants/metro_m0/variant.h +++ b/variants/metro_m0/variant.h @@ -53,7 +53,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (26u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (20u) #define NUM_ANALOG_INPUTS (8u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/metro_m4/variant.cpp b/variants/metro_m4/variant.cpp index 528a25ce7..8410a57e2 100644 --- a/variants/metro_m4/variant.cpp +++ b/variants/metro_m4/variant.cpp @@ -146,3 +146,4 @@ void SERCOM3_3_Handler() { Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/metro_m4/variant.h b/variants/metro_m4/variant.h index 2b510e744..9b273afd1 100644 --- a/variants/metro_m4/variant.h +++ b/variants/metro_m4/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (26u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (20u) #define NUM_ANALOG_INPUTS (8u) #define NUM_ANALOG_OUTPUTS (2u) diff --git a/variants/metro_m4_airlift/variant.cpp b/variants/metro_m4_airlift/variant.cpp index a160346fd..75dffb2a7 100644 --- a/variants/metro_m4_airlift/variant.cpp +++ b/variants/metro_m4_airlift/variant.cpp @@ -170,3 +170,4 @@ void SERCOM0_3_Handler() { Serial2.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/metro_m4_airlift/variant.h b/variants/metro_m4_airlift/variant.h index d078f2099..123192b10 100644 --- a/variants/metro_m4_airlift/variant.h +++ b/variants/metro_m4_airlift/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (49u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (20u) #define NUM_ANALOG_INPUTS (8u) #define NUM_ANALOG_OUTPUTS (2u) diff --git a/variants/mkr1000/variant.h b/variants/mkr1000/variant.h index ce9f6c12c..75d0681bc 100644 --- a/variants/mkr1000/variant.h +++ b/variants/mkr1000/variant.h @@ -36,7 +36,7 @@ // ---- // Number of pins defined in PinDescription array -#define PINS_COUNT (26u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (22u) #define NUM_ANALOG_INPUTS (7u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/mkrzero/variant.h b/variants/mkrzero/variant.h index ca59b5ab2..a8396dde4 100644 --- a/variants/mkrzero/variant.h +++ b/variants/mkrzero/variant.h @@ -36,7 +36,7 @@ // ---- // Number of pins defined in PinDescription array -#define PINS_COUNT (26u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (15u) #define NUM_ANALOG_INPUTS (7u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/monster_m4sk/variant.cpp b/variants/monster_m4sk/variant.cpp index 45a5dc0ce..c95f2c562 100644 --- a/variants/monster_m4sk/variant.cpp +++ b/variants/monster_m4sk/variant.cpp @@ -105,3 +105,4 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/monster_m4sk/variant.h b/variants/monster_m4sk/variant.h index eb3a283fe..c49f348b3 100644 --- a/variants/monster_m4sk/variant.h +++ b/variants/monster_m4sk/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (37u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (37u) #define NUM_ANALOG_INPUTS (4u) #define NUM_ANALOG_OUTPUTS (2u) diff --git a/variants/pirkey/variant.cpp b/variants/pirkey/variant.cpp index 61734c020..69c7a5f18 100644 --- a/variants/pirkey/variant.cpp +++ b/variants/pirkey/variant.cpp @@ -94,3 +94,4 @@ void SERCOM1_Handler() Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/pirkey/variant.h b/variants/pirkey/variant.h index e6d0ce74a..8fd22604a 100644 --- a/variants/pirkey/variant.h +++ b/variants/pirkey/variant.h @@ -53,7 +53,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (22u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (22u) #define NUM_ANALOG_INPUTS (5u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/pybadge_airlift_m4/variant.cpp b/variants/pybadge_airlift_m4/variant.cpp index ce2304ba1..a277b9fb4 100644 --- a/variants/pybadge_airlift_m4/variant.cpp +++ b/variants/pybadge_airlift_m4/variant.cpp @@ -152,3 +152,4 @@ void SERCOM5_3_Handler() { Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/pybadge_airlift_m4/variant.h b/variants/pybadge_airlift_m4/variant.h index 0887238d5..9fe8a58bf 100644 --- a/variants/pybadge_airlift_m4/variant.h +++ b/variants/pybadge_airlift_m4/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (55u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (25u) #define NUM_ANALOG_INPUTS (10u) #define NUM_ANALOG_OUTPUTS (2u) diff --git a/variants/pybadge_m4/variant.cpp b/variants/pybadge_m4/variant.cpp index ebc2c7f48..17ae813c9 100644 --- a/variants/pybadge_m4/variant.cpp +++ b/variants/pybadge_m4/variant.cpp @@ -150,3 +150,4 @@ void SERCOM5_3_Handler() { Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/pybadge_m4/variant.h b/variants/pybadge_m4/variant.h index fbfb6824a..e25029d81 100644 --- a/variants/pybadge_m4/variant.h +++ b/variants/pybadge_m4/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (51u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (25u) #define NUM_ANALOG_INPUTS (10u) #define NUM_ANALOG_OUTPUTS (2u) diff --git a/variants/pygamer_advance_m4/variant.cpp b/variants/pygamer_advance_m4/variant.cpp index 34f7e9831..b9a6f029f 100644 --- a/variants/pygamer_advance_m4/variant.cpp +++ b/variants/pygamer_advance_m4/variant.cpp @@ -149,3 +149,4 @@ void SERCOM5_3_Handler() { Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/pygamer_advance_m4/variant.h b/variants/pygamer_advance_m4/variant.h index cd5e271dd..2587a5363 100644 --- a/variants/pygamer_advance_m4/variant.h +++ b/variants/pygamer_advance_m4/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (54u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (25u) #define NUM_ANALOG_INPUTS (12u) #define NUM_ANALOG_OUTPUTS (2u) diff --git a/variants/pygamer_m4/variant.cpp b/variants/pygamer_m4/variant.cpp index ffbccefe8..29a0590ef 100644 --- a/variants/pygamer_m4/variant.cpp +++ b/variants/pygamer_m4/variant.cpp @@ -149,3 +149,4 @@ void SERCOM5_3_Handler() { Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/pygamer_m4/variant.h b/variants/pygamer_m4/variant.h index 12c5b4ffb..6b9a84cfe 100644 --- a/variants/pygamer_m4/variant.h +++ b/variants/pygamer_m4/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (54u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (25u) #define NUM_ANALOG_INPUTS (12u) #define NUM_ANALOG_OUTPUTS (2u) diff --git a/variants/pyportal_m4/variant.cpp b/variants/pyportal_m4/variant.cpp index a74da78f6..8c21191db 100644 --- a/variants/pyportal_m4/variant.cpp +++ b/variants/pyportal_m4/variant.cpp @@ -149,3 +149,4 @@ void SERCOM4_3_Handler() { Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/pyportal_m4/variant.h b/variants/pyportal_m4/variant.h index b159bd7e3..d5322fb80 100644 --- a/variants/pyportal_m4/variant.h +++ b/variants/pyportal_m4/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (52u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (42u) #define NUM_ANALOG_INPUTS (9u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/pyportal_m4_titano/variant.cpp b/variants/pyportal_m4_titano/variant.cpp index 53cfdaca5..868ed8e48 100644 --- a/variants/pyportal_m4_titano/variant.cpp +++ b/variants/pyportal_m4_titano/variant.cpp @@ -149,3 +149,4 @@ void SERCOM4_3_Handler() { Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/pyportal_m4_titano/variant.h b/variants/pyportal_m4_titano/variant.h index 3072826fa..6f18e6837 100644 --- a/variants/pyportal_m4_titano/variant.h +++ b/variants/pyportal_m4_titano/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (52u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (42u) #define NUM_ANALOG_INPUTS (9u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/qtpy_m0/variant.cpp b/variants/qtpy_m0/variant.cpp index af5996a28..3f6a49984 100644 --- a/variants/qtpy_m0/variant.cpp +++ b/variants/qtpy_m0/variant.cpp @@ -84,3 +84,4 @@ void initVariant(void) { pinMode(12, OUTPUT); digitalWrite(12, HIGH); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/qtpy_m0/variant.h b/variants/qtpy_m0/variant.h index b6a8c6995..3cfc40836 100644 --- a/variants/qtpy_m0/variant.h +++ b/variants/qtpy_m0/variant.h @@ -53,7 +53,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (21u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (21u) #define NUM_ANALOG_INPUTS (9u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/trellis_m4/variant.cpp b/variants/trellis_m4/variant.cpp index cbe7be633..d38f90b40 100644 --- a/variants/trellis_m4/variant.cpp +++ b/variants/trellis_m4/variant.cpp @@ -128,3 +128,4 @@ void SERCOM4_3_Handler() { Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/trellis_m4/variant.h b/variants/trellis_m4/variant.h index 46e66b754..b543d0292 100644 --- a/variants/trellis_m4/variant.h +++ b/variants/trellis_m4/variant.h @@ -57,7 +57,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (32u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (30u) #define NUM_ANALOG_INPUTS (3u) #define NUM_ANALOG_OUTPUTS (2u) diff --git a/variants/trinket_m0/variant.cpp b/variants/trinket_m0/variant.cpp index 5363f8daf..ed4de82fd 100644 --- a/variants/trinket_m0/variant.cpp +++ b/variants/trinket_m0/variant.cpp @@ -101,3 +101,4 @@ void SERCOM0_Handler() Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/trinket_m0/variant.h b/variants/trinket_m0/variant.h index f11b1ef09..e4f40482c 100644 --- a/variants/trinket_m0/variant.h +++ b/variants/trinket_m0/variant.h @@ -53,7 +53,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (22u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (22u) #define NUM_ANALOG_INPUTS (5u) #define NUM_ANALOG_OUTPUTS (1u) diff --git a/variants/zero_radio/variant.cpp b/variants/zero_radio/variant.cpp index 8e3150122..f4a9b7ff0 100644 --- a/variants/zero_radio/variant.cpp +++ b/variants/zero_radio/variant.cpp @@ -223,3 +223,4 @@ void SERCOM5_Handler() { Serial1.IrqHandler(); } +const int PINS_COUNT = sizeof(g_APinDescription)/sizeof(*g_APinDescription); diff --git a/variants/zero_radio/variant.h b/variants/zero_radio/variant.h index dfc5b93d7..f3e8ec762 100644 --- a/variants/zero_radio/variant.h +++ b/variants/zero_radio/variant.h @@ -53,7 +53,7 @@ extern "C" *----------------------------------------------------------------------------*/ // Number of pins defined in PinDescription array -#define PINS_COUNT (51u) +extern const int PINS_COUNT; #define NUM_DIGITAL_PINS (51u) #define NUM_ANALOG_INPUTS (8u)