diff --git a/cores/arduino/Uart.cpp b/cores/arduino/Uart.cpp index dd797da4d..dc9d63d60 100644 --- a/cores/arduino/Uart.cpp +++ b/cores/arduino/Uart.cpp @@ -24,6 +24,50 @@ #define NO_CTS_PIN 255 #define RTS_RX_THRESHOLD 10 +// Derive SERCOM ISR symbols from PERIPH_SERIAL* tokens (e.g. sercom4 -> +// SERCOM4_Handler) so variants only need to describe the UART routing. +#define UART_SERCOM_INDEX_sercom0 0 +#define UART_SERCOM_INDEX_sercom1 1 +#define UART_SERCOM_INDEX_sercom2 2 +#define UART_SERCOM_INDEX_sercom3 3 +#define UART_SERCOM_INDEX_sercom4 4 +#define UART_SERCOM_INDEX_sercom5 5 +#if defined(SERCOM6) +#define UART_SERCOM_INDEX_sercom6 6 +#endif +#if defined(SERCOM7) +#define UART_SERCOM_INDEX_sercom7 7 +#endif + +#define UART_SERCOM_INDEX(token) UART_SERCOM_INDEX_##token +#define UART_SERCOM_HANDLER_FROM_INDEX(idx) \ + UART_SERCOM_HANDLER_FROM_INDEX_2(idx) +#define UART_SERCOM_HANDLER_FROM_INDEX_2(idx) SERCOM##idx##_Handler +#define UART_SERCOM_HANDLER_FROM_TOKEN(token) \ + UART_SERCOM_HANDLER_FROM_INDEX(UART_SERCOM_INDEX(token)) + +#define UART_SERCOM_HANDLER0_FROM_INDEX(idx) \ + UART_SERCOM_HANDLER0_FROM_INDEX_2(idx) +#define UART_SERCOM_HANDLER0_FROM_INDEX_2(idx) SERCOM##idx##_0_Handler +#define UART_SERCOM_HANDLER1_FROM_INDEX(idx) \ + UART_SERCOM_HANDLER1_FROM_INDEX_2(idx) +#define UART_SERCOM_HANDLER1_FROM_INDEX_2(idx) SERCOM##idx##_1_Handler +#define UART_SERCOM_HANDLER2_FROM_INDEX(idx) \ + UART_SERCOM_HANDLER2_FROM_INDEX_2(idx) +#define UART_SERCOM_HANDLER2_FROM_INDEX_2(idx) SERCOM##idx##_2_Handler +#define UART_SERCOM_HANDLER3_FROM_INDEX(idx) \ + UART_SERCOM_HANDLER3_FROM_INDEX_2(idx) +#define UART_SERCOM_HANDLER3_FROM_INDEX_2(idx) SERCOM##idx##_3_Handler + +#define UART_SERCOM_HANDLER0_FROM_TOKEN(token) \ + UART_SERCOM_HANDLER0_FROM_INDEX(UART_SERCOM_INDEX(token)) +#define UART_SERCOM_HANDLER1_FROM_TOKEN(token) \ + UART_SERCOM_HANDLER1_FROM_INDEX(UART_SERCOM_INDEX(token)) +#define UART_SERCOM_HANDLER2_FROM_TOKEN(token) \ + UART_SERCOM_HANDLER2_FROM_INDEX(UART_SERCOM_INDEX(token)) +#define UART_SERCOM_HANDLER3_FROM_TOKEN(token) \ + UART_SERCOM_HANDLER3_FROM_INDEX(UART_SERCOM_INDEX(token)) + Uart::Uart(SERCOM *_s, uint8_t _pinRX, uint8_t _pinTX, SercomRXPad _padRX, SercomUartTXPad _padTX) : Uart(_s, _pinRX, _pinTX, _padRX, _padTX, NO_RTS_PIN, NO_CTS_PIN) { @@ -238,3 +282,195 @@ SercomParityMode Uart::extractParity(uint16_t config) return SERCOM_ODD_PARITY; } } + +#if defined(PERIPH_SERIAL) && !defined(UART_VARIANT_OWNS_SERIAL) +Uart Serial(&PERIPH_SERIAL, PIN_SERIAL_RX, PIN_SERIAL_TX, PAD_SERIAL_RX, + PAD_SERIAL_TX); + +#ifndef SERIAL_IT_HANDLER +#define SERIAL_IT_HANDLER UART_SERCOM_HANDLER_FROM_TOKEN(PERIPH_SERIAL) +#endif +void SERIAL_IT_HANDLER() +{ + Serial.IrqHandler(); +} + +#ifdef FAMILY_SAMD5X +#ifndef SERIAL_IT_HANDLER_0 +#define SERIAL_IT_HANDLER_0 UART_SERCOM_HANDLER0_FROM_TOKEN(PERIPH_SERIAL) +#define SERIAL_IT_HANDLER_1 UART_SERCOM_HANDLER1_FROM_TOKEN(PERIPH_SERIAL) +#define SERIAL_IT_HANDLER_2 UART_SERCOM_HANDLER2_FROM_TOKEN(PERIPH_SERIAL) +#define SERIAL_IT_HANDLER_3 UART_SERCOM_HANDLER3_FROM_TOKEN(PERIPH_SERIAL) +#endif +void SERIAL_IT_HANDLER_0() { Serial.IrqHandler(); } +void SERIAL_IT_HANDLER_1() { Serial.IrqHandler(); } +void SERIAL_IT_HANDLER_2() { Serial.IrqHandler(); } +void SERIAL_IT_HANDLER_3() { Serial.IrqHandler(); } +#endif +#endif + +#if defined(PERIPH_SERIAL_UART) && !defined(UART_VARIANT_OWNS_SERIAL_UART) +Uart SerialUART(&PERIPH_SERIAL_UART, PIN_SERIAL_UART_RX, PIN_SERIAL_UART_TX, + PAD_SERIAL_UART_RX, PAD_SERIAL_UART_TX); + +#ifndef SERIAL_UART_IT_HANDLER +#define SERIAL_UART_IT_HANDLER UART_SERCOM_HANDLER_FROM_TOKEN(PERIPH_SERIAL_UART) +#endif +#ifndef FAMILY_SAMD5X +void SERIAL_UART_IT_HANDLER() +{ + SerialUART.IrqHandler(); +} +#else +#ifndef SERIAL_UART_IT_HANDLER_0 +#define SERIAL_UART_IT_HANDLER_0 UART_SERCOM_HANDLER0_FROM_TOKEN(PERIPH_SERIAL_UART) +#define SERIAL_UART_IT_HANDLER_1 UART_SERCOM_HANDLER1_FROM_TOKEN(PERIPH_SERIAL_UART) +#define SERIAL_UART_IT_HANDLER_2 UART_SERCOM_HANDLER2_FROM_TOKEN(PERIPH_SERIAL_UART) +#define SERIAL_UART_IT_HANDLER_3 UART_SERCOM_HANDLER3_FROM_TOKEN(PERIPH_SERIAL_UART) +#endif +void SERIAL_UART_IT_HANDLER_0() { SerialUART.IrqHandler(); } +void SERIAL_UART_IT_HANDLER_1() { SerialUART.IrqHandler(); } +void SERIAL_UART_IT_HANDLER_2() { SerialUART.IrqHandler(); } +void SERIAL_UART_IT_HANDLER_3() { SerialUART.IrqHandler(); } +#endif +#endif + +#if defined(PERIPH_SERIAL1) && !defined(UART_VARIANT_OWNS_SERIAL1) +#ifdef PIN_SERIAL1_RTS +Uart Serial1(&PERIPH_SERIAL1, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, + PAD_SERIAL1_TX, PIN_SERIAL1_RTS, PIN_SERIAL1_CTS); +#else +Uart Serial1(&PERIPH_SERIAL1, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, + PAD_SERIAL1_TX); +#endif + +#ifndef SERIAL1_IT_HANDLER +#define SERIAL1_IT_HANDLER UART_SERCOM_HANDLER_FROM_TOKEN(PERIPH_SERIAL1) +#endif +#ifndef FAMILY_SAMD5X +void SERIAL1_IT_HANDLER() +{ + Serial1.IrqHandler(); +} +#else +#ifndef SERIAL1_IT_HANDLER_0 +#define SERIAL1_IT_HANDLER_0 UART_SERCOM_HANDLER0_FROM_TOKEN(PERIPH_SERIAL1) +#define SERIAL1_IT_HANDLER_1 UART_SERCOM_HANDLER1_FROM_TOKEN(PERIPH_SERIAL1) +#define SERIAL1_IT_HANDLER_2 UART_SERCOM_HANDLER2_FROM_TOKEN(PERIPH_SERIAL1) +#define SERIAL1_IT_HANDLER_3 UART_SERCOM_HANDLER3_FROM_TOKEN(PERIPH_SERIAL1) +#endif +void SERIAL1_IT_HANDLER_0() { Serial1.IrqHandler(); } +void SERIAL1_IT_HANDLER_1() { Serial1.IrqHandler(); } +void SERIAL1_IT_HANDLER_2() { Serial1.IrqHandler(); } +void SERIAL1_IT_HANDLER_3() { Serial1.IrqHandler(); } +#endif +#endif + +#if defined(PERIPH_SERIAL2) && !defined(UART_VARIANT_OWNS_SERIAL2) +#ifdef PIN_SERIAL2_RTS +Uart Serial2(&PERIPH_SERIAL2, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, + PAD_SERIAL2_TX, PIN_SERIAL2_RTS, PIN_SERIAL2_CTS); +#else +Uart Serial2(&PERIPH_SERIAL2, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, + PAD_SERIAL2_TX); +#endif + +#ifndef SERIAL2_IT_HANDLER +#define SERIAL2_IT_HANDLER UART_SERCOM_HANDLER_FROM_TOKEN(PERIPH_SERIAL2) +#endif +#ifndef FAMILY_SAMD5X +void SERIAL2_IT_HANDLER() +{ + Serial2.IrqHandler(); +} +#else +#ifndef SERIAL2_IT_HANDLER_0 +#define SERIAL2_IT_HANDLER_0 UART_SERCOM_HANDLER0_FROM_TOKEN(PERIPH_SERIAL2) +#define SERIAL2_IT_HANDLER_1 UART_SERCOM_HANDLER1_FROM_TOKEN(PERIPH_SERIAL2) +#define SERIAL2_IT_HANDLER_2 UART_SERCOM_HANDLER2_FROM_TOKEN(PERIPH_SERIAL2) +#define SERIAL2_IT_HANDLER_3 UART_SERCOM_HANDLER3_FROM_TOKEN(PERIPH_SERIAL2) +#endif +void SERIAL2_IT_HANDLER_0() { Serial2.IrqHandler(); } +void SERIAL2_IT_HANDLER_1() { Serial2.IrqHandler(); } +void SERIAL2_IT_HANDLER_2() { Serial2.IrqHandler(); } +void SERIAL2_IT_HANDLER_3() { Serial2.IrqHandler(); } +#endif +#endif + +#if defined(PERIPH_SERIAL3) && !defined(UART_VARIANT_OWNS_SERIAL3) +Uart Serial3(&PERIPH_SERIAL3, PIN_SERIAL3_RX, PIN_SERIAL3_TX, PAD_SERIAL3_RX, + PAD_SERIAL3_TX); + +#ifndef SERIAL3_IT_HANDLER +#define SERIAL3_IT_HANDLER UART_SERCOM_HANDLER_FROM_TOKEN(PERIPH_SERIAL3) +#endif +#ifndef FAMILY_SAMD5X +void SERIAL3_IT_HANDLER() +{ + Serial3.IrqHandler(); +} +#else +#ifndef SERIAL3_IT_HANDLER_0 +#define SERIAL3_IT_HANDLER_0 UART_SERCOM_HANDLER0_FROM_TOKEN(PERIPH_SERIAL3) +#define SERIAL3_IT_HANDLER_1 UART_SERCOM_HANDLER1_FROM_TOKEN(PERIPH_SERIAL3) +#define SERIAL3_IT_HANDLER_2 UART_SERCOM_HANDLER2_FROM_TOKEN(PERIPH_SERIAL3) +#define SERIAL3_IT_HANDLER_3 UART_SERCOM_HANDLER3_FROM_TOKEN(PERIPH_SERIAL3) +#endif +void SERIAL3_IT_HANDLER_0() { Serial3.IrqHandler(); } +void SERIAL3_IT_HANDLER_1() { Serial3.IrqHandler(); } +void SERIAL3_IT_HANDLER_2() { Serial3.IrqHandler(); } +void SERIAL3_IT_HANDLER_3() { Serial3.IrqHandler(); } +#endif +#endif + +#if defined(PERIPH_SERIAL4) && !defined(UART_VARIANT_OWNS_SERIAL4) +Uart Serial4(&PERIPH_SERIAL4, PIN_SERIAL4_RX, PIN_SERIAL4_TX, PAD_SERIAL4_RX, + PAD_SERIAL4_TX); + +#ifndef SERIAL4_IT_HANDLER +#define SERIAL4_IT_HANDLER UART_SERCOM_HANDLER_FROM_TOKEN(PERIPH_SERIAL4) +#endif +#ifndef FAMILY_SAMD5X +void SERIAL4_IT_HANDLER() +{ + Serial4.IrqHandler(); +} +#else +#ifndef SERIAL4_IT_HANDLER_0 +#define SERIAL4_IT_HANDLER_0 UART_SERCOM_HANDLER0_FROM_TOKEN(PERIPH_SERIAL4) +#define SERIAL4_IT_HANDLER_1 UART_SERCOM_HANDLER1_FROM_TOKEN(PERIPH_SERIAL4) +#define SERIAL4_IT_HANDLER_2 UART_SERCOM_HANDLER2_FROM_TOKEN(PERIPH_SERIAL4) +#define SERIAL4_IT_HANDLER_3 UART_SERCOM_HANDLER3_FROM_TOKEN(PERIPH_SERIAL4) +#endif +void SERIAL4_IT_HANDLER_0() { Serial4.IrqHandler(); } +void SERIAL4_IT_HANDLER_1() { Serial4.IrqHandler(); } +void SERIAL4_IT_HANDLER_2() { Serial4.IrqHandler(); } +void SERIAL4_IT_HANDLER_3() { Serial4.IrqHandler(); } +#endif +#endif + +#if defined(PERIPH_SERIAL5) && !defined(UART_VARIANT_OWNS_SERIAL5) +Uart Serial5(&PERIPH_SERIAL5, PIN_SERIAL_RX, PIN_SERIAL_TX, PAD_SERIAL_RX, + PAD_SERIAL_TX); + +#ifndef SERIAL5_IT_HANDLER +#define SERIAL5_IT_HANDLER UART_SERCOM_HANDLER_FROM_TOKEN(PERIPH_SERIAL5) +#endif +void SERIAL5_IT_HANDLER() +{ + Serial5.IrqHandler(); +} + +#ifdef FAMILY_SAMD5X +#ifndef SERIAL5_IT_HANDLER_0 +#define SERIAL5_IT_HANDLER_0 UART_SERCOM_HANDLER0_FROM_TOKEN(PERIPH_SERIAL5) +#define SERIAL5_IT_HANDLER_1 UART_SERCOM_HANDLER1_FROM_TOKEN(PERIPH_SERIAL5) +#define SERIAL5_IT_HANDLER_2 UART_SERCOM_HANDLER2_FROM_TOKEN(PERIPH_SERIAL5) +#define SERIAL5_IT_HANDLER_3 UART_SERCOM_HANDLER3_FROM_TOKEN(PERIPH_SERIAL5) +#endif +void SERIAL5_IT_HANDLER_0() { Serial5.IrqHandler(); } +void SERIAL5_IT_HANDLER_1() { Serial5.IrqHandler(); } +void SERIAL5_IT_HANDLER_2() { Serial5.IrqHandler(); } +void SERIAL5_IT_HANDLER_3() { Serial5.IrqHandler(); } +#endif +#endif diff --git a/variants/arduino_mzero/variant.cpp b/variants/arduino_mzero/variant.cpp index 7c094b172..41b128474 100644 --- a/variants/arduino_mzero/variant.cpp +++ b/variants/arduino_mzero/variant.cpp @@ -203,15 +203,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom0, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; -Uart Serial( &sercom5, PIN_SERIAL_RX, PIN_SERIAL_TX, PAD_SERIAL_RX, PAD_SERIAL_TX ) ; -void SERCOM0_Handler() -{ - Serial1.IrqHandler(); -} - -void SERCOM5_Handler() -{ - Serial.IrqHandler(); -} diff --git a/variants/arduino_mzero/variant.h b/variants/arduino_mzero/variant.h index b48fde2ed..0ffec41ae 100755 --- a/variants/arduino_mzero/variant.h +++ b/variants/arduino_mzero/variant.h @@ -114,12 +114,14 @@ static const uint8_t DAC0 = PIN_DAC0; #define PIN_SERIAL_TX (35ul) #define PAD_SERIAL_TX (UART_TX_PAD_2) #define PAD_SERIAL_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL sercom5 // Serial1 #define PIN_SERIAL1_RX (0ul) #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_TX (UART_TX_PAD_2) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom0 /* * SPI Interfaces @@ -132,6 +134,7 @@ static const uint8_t DAC0 = PIN_DAC0; #define PERIPH_SPI sercom4 #define PAD_SPI_TX SPI_PAD_2_SCK_3 #define PAD_SPI_RX SERCOM_RX_PAD_0 +#define SPI_IT_HANDLER SERCOM4_Handler static const uint8_t SS = 14; //GND static const uint8_t MOSI = PIN_SPI_MOSI; diff --git a/variants/arduino_zero/variant.cpp b/variants/arduino_zero/variant.cpp index dfbaf745a..de911f261 100644 --- a/variants/arduino_zero/variant.cpp +++ b/variants/arduino_zero/variant.cpp @@ -212,16 +212,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom0, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; -Uart Serial5( &sercom5, PIN_SERIAL_RX, PIN_SERIAL_TX, PAD_SERIAL_RX, PAD_SERIAL_TX ) ; -void SERCOM0_Handler() -{ - Serial1.IrqHandler(); -} - -void SERCOM5_Handler() -{ - Serial5.IrqHandler(); -} - diff --git a/variants/arduino_zero/variant.h b/variants/arduino_zero/variant.h index 196ef773b..57d479126 100644 --- a/variants/arduino_zero/variant.h +++ b/variants/arduino_zero/variant.h @@ -121,12 +121,14 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL_TX (30ul) #define PAD_SERIAL_TX (UART_TX_PAD_2) #define PAD_SERIAL_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL5 sercom5 // Serial1 #define PIN_SERIAL1_RX (0ul) #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_TX (UART_TX_PAD_2) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom0 /* * SPI Interfaces @@ -139,6 +141,7 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom4 #define PAD_SPI_TX SPI_PAD_2_SCK_3 #define PAD_SPI_RX SERCOM_RX_PAD_0 +#define SPI_IT_HANDLER SERCOM4_Handler static const uint8_t SS = PIN_A2 ; // SERCOM4 last PAD is present on A2 but HW SS isn't used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI ; diff --git a/variants/blm_badge/variant.cpp b/variants/blm_badge/variant.cpp index 805b6e262..1f1938468 100644 --- a/variants/blm_badge/variant.cpp +++ b/variants/blm_badge/variant.cpp @@ -85,11 +85,3 @@ SERCOM sercom0( SERCOM0 ) ; SERCOM sercom1( SERCOM1 ) ; SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; - -Uart Serial1( &sercom0, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM0_Handler() -{ - Serial1.IrqHandler(); -} - diff --git a/variants/blm_badge/variant.h b/variants/blm_badge/variant.h index dbee168d1..88441453d 100644 --- a/variants/blm_badge/variant.h +++ b/variants/blm_badge/variant.h @@ -118,6 +118,7 @@ static const uint8_t DAC0 = PIN_DAC0; #define PAD_SERIAL1_RX (SERCOM_RX_PAD_2) #define PIN_SERIAL1_TX (2ul) // captouch pad #define PAD_SERIAL1_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL1 sercom0 /* * SPI Interfaces diff --git a/variants/circuitplay/variant.cpp b/variants/circuitplay/variant.cpp index 0e39cf35e..81aa3b247 100644 --- a/variants/circuitplay/variant.cpp +++ b/variants/circuitplay/variant.cpp @@ -61,7 +61,7 @@ const PinDescription g_APinDescription[]= { PORTA, 11, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG), ADC_Channel19, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_11 }, // A8 / Light Sensor { PORTA, 9, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel17, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_9 }, // A9 / Thermistor { PORTA, 4, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG), ADC_Channel4, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_4 }, // A10 Proximity - + // GPIO 25 / IR Transmit { PORTA, 23, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM4_CH1, TC4_CH1, EXTERNAL_INT_7 }, // GPIO D25 - IR Transmitter // GPIO 26 / IR Remote in @@ -89,7 +89,7 @@ const PinDescription g_APinDescription[]= // 36..38 - USB - // -------------------- + // -------------------- { PORTA, 22, PIO_SERCOM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // GPIO 29 - Host USB (not used) { PORTA, 24, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DM { PORTA, 25, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DP @@ -111,11 +111,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom4, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM4_Handler() -{ - Serial1.IrqHandler(); -} - diff --git a/variants/circuitplay/variant.h b/variants/circuitplay/variant.h index 7a0a5a55c..7cbcd9aeb 100644 --- a/variants/circuitplay/variant.h +++ b/variants/circuitplay/variant.h @@ -154,6 +154,7 @@ static const uint8_t DAC0 = PIN_DAC0; #define PERIPH_SPI sercom3 #define PAD_SPI_TX SPI_PAD_2_SCK_3 // MOSI / SCK #define PAD_SPI_RX SERCOM_RX_PAD_0 // MISO +#define SPI_IT_HANDLER SERCOM3_Handler static const uint8_t SS = 33 ; static const uint8_t MOSI = PIN_SPI_MOSI ; @@ -168,6 +169,7 @@ static const uint8_t SCK = PIN_SPI_SCK ; #define PERIPH_SPI1 sercom5 #define PAD_SPI1_TX SPI_PAD_0_SCK_1 // MOSI / SCK #define PAD_SPI1_RX SERCOM_RX_PAD_2 // MISO not avail +#define SPI1_IT_HANDLER SERCOM5_Handler static const uint8_t SS1 = 42 ; static const uint8_t MOSI1 = PIN_SPI_MOSI ; @@ -183,6 +185,7 @@ static const uint8_t SCK1 = PIN_SPI_SCK ; #define PERIPH_SPI2 sercom0 #define PAD_SPI2_TX SPI_PAD_2_SCK_3 // MOSI / SCK #define PAD_SPI2_RX SERCOM_RX_PAD_1 // MISO not avail +#define SPI2_IT_HANDLER SERCOM0_Handler static const uint8_t SS2 = 5 ; static const uint8_t MOSI2 = PIN_SPI2_MOSI ; @@ -248,6 +251,7 @@ extern Uart Serial1; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_TX (UART_TX_PAD_0) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) +#define PERIPH_SERIAL1 sercom4 #endif // __cplusplus diff --git a/variants/crickit_m0/variant.cpp b/variants/crickit_m0/variant.cpp index 944e731e4..6c299b973 100644 --- a/variants/crickit_m0/variant.cpp +++ b/variants/crickit_m0/variant.cpp @@ -45,13 +45,13 @@ const PinDescription g_APinDescription[]= { PORTA, 27, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_15 }, // D11 External NeoPixel - { PORTA, 20, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH6, TCC0_CH6, EXTERNAL_INT_4 }, + { PORTA, 20, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH6, TCC0_CH6, EXTERNAL_INT_4 }, // D12 IRQ - { PORTA, 28, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_8 }, + { PORTA, 28, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_8 }, // 13 (LED) - { PORTB, 22, PIO_SERCOM_ALT, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // Yellow LED next to USB + { PORTB, 22, PIO_SERCOM_ALT, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // Yellow LED next to USB // A0-A8 - Analog signal pins // A0 is duplicated since we mark it starting at analog1, so might as well! @@ -102,11 +102,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM5_Handler() -{ - Serial1.IrqHandler(); -} - diff --git a/variants/crickit_m0/variant.h b/variants/crickit_m0/variant.h index 9b7646578..ff92c62bd 100644 --- a/variants/crickit_m0/variant.h +++ b/variants/crickit_m0/variant.h @@ -161,6 +161,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_RX (36ul) #define PAD_SERIAL1_TX (UART_TX_PAD_0) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom5 /* * SPI Interfaces diff --git a/variants/feather_m0/variant.cpp b/variants/feather_m0/variant.cpp index f9e76061c..9806c68b5 100644 --- a/variants/feather_m0/variant.cpp +++ b/variants/feather_m0/variant.cpp @@ -124,16 +124,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom0, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; -Uart Serial5( &sercom5, PIN_SERIAL_RX, PIN_SERIAL_TX, PAD_SERIAL_RX, PAD_SERIAL_TX ) ; -void SERCOM0_Handler() -{ - Serial1.IrqHandler(); -} - -void SERCOM5_Handler() -{ - Serial5.IrqHandler(); -} - diff --git a/variants/feather_m0/variant.h b/variants/feather_m0/variant.h index 20ecbbbaf..d323c8f41 100644 --- a/variants/feather_m0/variant.h +++ b/variants/feather_m0/variant.h @@ -122,12 +122,14 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL_TX (30ul) #define PAD_SERIAL_TX (UART_TX_PAD_2) #define PAD_SERIAL_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL5 sercom5 // Serial1 #define PIN_SERIAL1_RX (0ul) #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_TX (UART_TX_PAD_2) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom0 /* * SPI Interfaces @@ -140,6 +142,7 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom4 #define PAD_SPI_TX SPI_PAD_2_SCK_3 #define PAD_SPI_RX SERCOM_RX_PAD_0 +#define SPI_IT_HANDLER SERCOM4_Handler static const uint8_t SS = PIN_A2 ; // SERCOM4 last PAD is present on A2 but HW SS isn't used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI ; diff --git a/variants/feather_m0_express/variant.cpp b/variants/feather_m0_express/variant.cpp index a3e87b89e..ecedbb2d1 100644 --- a/variants/feather_m0_express/variant.cpp +++ b/variants/feather_m0_express/variant.cpp @@ -118,11 +118,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom0, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM0_Handler() -{ - Serial1.IrqHandler(); -} - diff --git a/variants/feather_m0_express/variant.h b/variants/feather_m0_express/variant.h index f4d3ae9bf..f253347b2 100644 --- a/variants/feather_m0_express/variant.h +++ b/variants/feather_m0_express/variant.h @@ -142,6 +142,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_TX (UART_TX_PAD_2) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom0 /* * SPI Interfaces @@ -154,6 +155,7 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom4 #define PAD_SPI_TX SPI_PAD_2_SCK_3 #define PAD_SPI_RX SERCOM_RX_PAD_0 +#define SPI_IT_HANDLER SERCOM4_Handler static const uint8_t SS = PIN_A2 ; // SERCOM4 last PAD is present on A2 but HW SS isn't used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI ; @@ -167,6 +169,7 @@ static const uint8_t SCK = PIN_SPI_SCK ; #define PERIPH_SPI1 sercom2 #define PAD_SPI1_TX SPI_PAD_0_SCK_1 #define PAD_SPI1_RX SERCOM_RX_PAD_2 +#define SPI1_IT_HANDLER SERCOM2_Handler static const uint8_t SS1 = 39 ; // HW SS isn't used. Set here only for reference. static const uint8_t MOSI1 = PIN_SPI1_MOSI ; diff --git a/variants/feather_m4/variant.cpp b/variants/feather_m4/variant.cpp index 88ba1ff6c..a2e53d446 100644 --- a/variants/feather_m4/variant.cpp +++ b/variants/feather_m4/variant.cpp @@ -119,22 +119,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM5_0_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_1_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_2_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_3_Handler() -{ - Serial1.IrqHandler(); -} diff --git a/variants/feather_m4/variant.h b/variants/feather_m4/variant.h index 6be35dccb..5ed31420c 100644 --- a/variants/feather_m4/variant.h +++ b/variants/feather_m4/variant.h @@ -130,6 +130,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) #define PAD_SERIAL1_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL1 sercom5 /* * SPI Interfaces @@ -142,6 +143,10 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom1 #define PAD_SPI_TX SPI_PAD_3_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_2 +#define SPI_IT_HANDLER_0 SERCOM1_0_Handler +#define SPI_IT_HANDLER_1 SERCOM1_1_Handler +#define SPI_IT_HANDLER_2 SERCOM1_2_Handler +#define SPI_IT_HANDLER_3 SERCOM1_3_Handler static const uint8_t SS = 9 ; // SERCOM1 last PAD is present on d9 but HW SS isn't used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI ; diff --git a/variants/feather_m4_can/variant.cpp b/variants/feather_m4_can/variant.cpp index 64d982e5e..bfaa62d63 100644 --- a/variants/feather_m4_can/variant.cpp +++ b/variants/feather_m4_can/variant.cpp @@ -128,24 +128,6 @@ SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; -Uart Serial1( &sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM5_0_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_1_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_2_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_3_Handler() -{ - Serial1.IrqHandler(); -} void initVariant(void) { // special initialization code just for us diff --git a/variants/feather_m4_can/variant.h b/variants/feather_m4_can/variant.h index 853086c65..0c0060fd2 100644 --- a/variants/feather_m4_can/variant.h +++ b/variants/feather_m4_can/variant.h @@ -131,6 +131,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) #define PAD_SERIAL1_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL1 sercom5 /* * SPI Interfaces @@ -143,6 +144,10 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom1 #define PAD_SPI_TX SPI_PAD_3_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_2 +#define SPI_IT_HANDLER_0 SERCOM1_0_Handler +#define SPI_IT_HANDLER_1 SERCOM1_1_Handler +#define SPI_IT_HANDLER_2 SERCOM1_2_Handler +#define SPI_IT_HANDLER_3 SERCOM1_3_Handler static const uint8_t SS = 9 ; // SERCOM1 last PAD is present on d9 but HW SS isn't used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI ; diff --git a/variants/gemma_m0/variant.cpp b/variants/gemma_m0/variant.cpp index c0fa9700e..d04220ff4 100644 --- a/variants/gemma_m0/variant.cpp +++ b/variants/gemma_m0/variant.cpp @@ -83,15 +83,13 @@ SERCOM sercom1( SERCOM1 ) ; SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; -Uart Serial1( &sercom0, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - +Uart Serial1( &PERIPH_SERIAL1, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; // If wire.h isnt included, just do nothing void WIRE_IT_HANDLER(void) __attribute__ ((weak)); -void SERCOM0_Handler() +void SERIAL1_IT_HANDLER() { Serial1.IrqHandler(); WIRE_IT_HANDLER(); } - diff --git a/variants/gemma_m0/variant.h b/variants/gemma_m0/variant.h index ee1273b55..dd00fc670 100644 --- a/variants/gemma_m0/variant.h +++ b/variants/gemma_m0/variant.h @@ -116,6 +116,9 @@ static const uint8_t DAC0 = PIN_DAC0; #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) #define PIN_SERIAL1_TX (0ul) // PA04 #define PAD_SERIAL1_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL1 sercom0 +#define SERIAL1_IT_HANDLER SERCOM0_Handler +#define UART_VARIANT_OWNS_SERIAL1 /* * SPI Interfaces @@ -128,6 +131,7 @@ static const uint8_t DAC0 = PIN_DAC0; #define PERIPH_SPI sercom0 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_2 +#define SPI_IT_HANDLER SERCOM0_Handler static const uint8_t SS = 1 ; // only pin remaining (shrug) static const uint8_t MOSI = PIN_SPI_MOSI ; @@ -200,4 +204,3 @@ extern Uart Serial1; #define SERIAL_PORT_HARDWARE_OPEN Serial1 #endif /* _VARIANT_ARDUINO_ZERO_ */ - diff --git a/variants/grand_central_m4/variant.cpp b/variants/grand_central_m4/variant.cpp index 78aa1495d..7163d11f3 100644 --- a/variants/grand_central_m4/variant.cpp +++ b/variants/grand_central_m4/variant.cpp @@ -198,22 +198,3 @@ SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; SERCOM sercom6( SERCOM6 ) ; SERCOM sercom7( SERCOM7 ) ; - -Uart Serial1( &sercom0, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM0_0_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM0_1_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM0_2_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM0_3_Handler() -{ - Serial1.IrqHandler(); -} diff --git a/variants/grand_central_m4/variant.h b/variants/grand_central_m4/variant.h index 3092191b1..cdbf7b0a9 100644 --- a/variants/grand_central_m4/variant.h +++ b/variants/grand_central_m4/variant.h @@ -150,6 +150,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1) #define PAD_SERIAL1_TX (UART_TX_PAD_0) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) +#define PERIPH_SERIAL1 sercom0 // Serial2 #define PIN_SERIAL2_RX (19) @@ -182,6 +183,10 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom7 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_3 +#define SPI_IT_HANDLER_0 SERCOM7_0_Handler +#define SPI_IT_HANDLER_1 SERCOM7_1_Handler +#define SPI_IT_HANDLER_2 SERCOM7_2_Handler +#define SPI_IT_HANDLER_3 SERCOM7_3_Handler static const uint8_t SS = (53); static const uint8_t MOSI = PIN_SPI_MOSI; @@ -195,6 +200,10 @@ static const uint8_t SCK = PIN_SPI_SCK; #define PERIPH_SPI1 sercom2 #define PAD_SPI1_TX SPI_PAD_0_SCK_1 #define PAD_SPI1_RX SERCOM_RX_PAD_3 +#define SPI1_IT_HANDLER_0 SERCOM2_0_Handler +#define SPI1_IT_HANDLER_1 SERCOM2_1_Handler +#define SPI1_IT_HANDLER_2 SERCOM2_2_Handler +#define SPI1_IT_HANDLER_3 SERCOM2_3_Handler static const uint8_t SS1 = PIN_SPI1_SS; static const uint8_t MOSI1 = PIN_SPI1_MOSI; diff --git a/variants/hallowing_m0_express/variant.cpp b/variants/hallowing_m0_express/variant.cpp index 441e2faee..2dec78875 100644 --- a/variants/hallowing_m0_express/variant.cpp +++ b/variants/hallowing_m0_express/variant.cpp @@ -120,11 +120,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom2, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM2_Handler() -{ - Serial1.IrqHandler(); -} - diff --git a/variants/hallowing_m0_express/variant.h b/variants/hallowing_m0_express/variant.h index 8a84c6023..9be3eb0b2 100644 --- a/variants/hallowing_m0_express/variant.h +++ b/variants/hallowing_m0_express/variant.h @@ -139,6 +139,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) #define PAD_SERIAL1_TX (UART_TX_PAD_2) +#define PERIPH_SERIAL1 sercom2 /* * SPI Interfaces @@ -151,6 +152,7 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom5 #define PAD_SPI_TX SPI_PAD_2_SCK_3 #define PAD_SPI_RX SERCOM_RX_PAD_1 +#define SPI_IT_HANDLER SERCOM5_Handler static const uint8_t SS = PIN_A2 ; // SERCOM4 last PAD is present on A2 but HW SS isn't used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI ; @@ -164,6 +166,7 @@ static const uint8_t SCK = PIN_SPI_SCK ; #define PERIPH_SPI1 sercom4 #define PAD_SPI1_TX SPI_PAD_2_SCK_3 #define PAD_SPI1_RX SERCOM_RX_PAD_1 +#define SPI1_IT_HANDLER SERCOM4_Handler static const uint8_t SS1 = 36; static const uint8_t MOSI1 = PIN_SPI1_MOSI ; diff --git a/variants/hallowing_m4/variant.cpp b/variants/hallowing_m4/variant.cpp index 8f9ab0838..0a3679c95 100644 --- a/variants/hallowing_m4/variant.cpp +++ b/variants/hallowing_m4/variant.cpp @@ -35,7 +35,7 @@ const PinDescription g_APinDescription[]= { PORTB, 2, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel14, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, // D3 { PORTA, 14, PIO_DIGITAL, PIN_ATTR_PWM_E, No_ADC_Channel, TC3_CH0, TC3_CH0, EXTERNAL_INT_14 }, // D4 { PORTA, 16, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_0 }, // D5 - { PORTA, 17, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_1 }, // D6 + { PORTA, 17, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_1 }, // D6 { PORTB, 15, PIO_DIGITAL, PIN_ATTR_PWM_F, No_ADC_Channel, TCC4_CH0, TC5_CH0, EXTERNAL_INT_15 }, // D7 (LISIRQ) // Digital High @@ -47,7 +47,7 @@ const PinDescription g_APinDescription[]= { PORTA, 21, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 }, // D12 // 13 (LED) - { PORTA, 23, PIO_SERCOM, PIN_ATTR_PWM_G, No_ADC_Channel, TCC0_CH3, TC4_CH1, EXTERNAL_INT_7 }, + { PORTA, 23, PIO_SERCOM, PIN_ATTR_PWM_G, No_ADC_Channel, TCC0_CH3, TC4_CH1, EXTERNAL_INT_7 }, // 14..23 - Analog pins @@ -127,22 +127,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom4, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM4_0_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM4_1_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM4_2_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM4_3_Handler() -{ - Serial1.IrqHandler(); -} diff --git a/variants/hallowing_m4/variant.h b/variants/hallowing_m4/variant.h index 221821d59..31cedb68a 100644 --- a/variants/hallowing_m4/variant.h +++ b/variants/hallowing_m4/variant.h @@ -127,6 +127,7 @@ static const uint8_t DAC1 = PIN_DAC1; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) #define PAD_SERIAL1_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL1 sercom4 /* * SPI Interfaces @@ -139,6 +140,10 @@ static const uint8_t DAC1 = PIN_DAC1; #define PERIPH_SPI sercom5 #define PAD_SPI_TX SPI_PAD_3_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_2 +#define SPI_IT_HANDLER_0 SERCOM5_0_Handler +#define SPI_IT_HANDLER_1 SERCOM5_1_Handler +#define SPI_IT_HANDLER_2 SERCOM5_2_Handler +#define SPI_IT_HANDLER_3 SERCOM5_3_Handler static const uint8_t SS = 10 ; static const uint8_t MOSI = PIN_SPI_MOSI ; @@ -152,6 +157,10 @@ static const uint8_t SCK = PIN_SPI_SCK ; #define PERIPH_SPI1 sercom1 #define PAD_SPI1_TX SPI_PAD_0_SCK_1 #define PAD_SPI1_RX SERCOM_RX_PAD_2 +#define SPI1_IT_HANDLER_0 SERCOM1_0_Handler +#define SPI1_IT_HANDLER_1 SERCOM1_1_Handler +#define SPI1_IT_HANDLER_2 SERCOM1_2_Handler +#define SPI1_IT_HANDLER_3 SERCOM1_3_Handler static const uint8_t SS1 = 44 ; static const uint8_t MOSI1 = PIN_SPI1_MOSI ; diff --git a/variants/itsybitsy_m0/variant.cpp b/variants/itsybitsy_m0/variant.cpp index fa35301d7..623e26d59 100644 --- a/variants/itsybitsy_m0/variant.cpp +++ b/variants/itsybitsy_m0/variant.cpp @@ -116,11 +116,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom0, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM0_Handler() -{ - Serial1.IrqHandler(); -} - diff --git a/variants/itsybitsy_m0/variant.h b/variants/itsybitsy_m0/variant.h index e9b945fed..382789a02 100644 --- a/variants/itsybitsy_m0/variant.h +++ b/variants/itsybitsy_m0/variant.h @@ -137,6 +137,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_TX (UART_TX_PAD_2) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom0 /* * SPI Interfaces @@ -149,6 +150,7 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom4 #define PAD_SPI_TX SPI_PAD_2_SCK_3 #define PAD_SPI_RX SERCOM_RX_PAD_0 +#define SPI_IT_HANDLER SERCOM4_Handler static const uint8_t SS = PIN_A2 ; // SERCOM4 last PAD is present on A2 but HW SS isn't used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI ; @@ -162,6 +164,7 @@ static const uint8_t SCK = PIN_SPI_SCK ; #define PERIPH_SPI1 sercom5 #define PAD_SPI1_TX SPI_PAD_2_SCK_3 #define PAD_SPI1_RX SERCOM_RX_PAD_1 +#define SPI1_IT_HANDLER SERCOM5_Handler static const uint8_t SS1 = 39 ; // HW SS isn't used. Set here only for reference. static const uint8_t MOSI1 = PIN_SPI_MOSI ; diff --git a/variants/itsybitsy_m4/variant.cpp b/variants/itsybitsy_m4/variant.cpp index 35323cfcd..dadba4510 100644 --- a/variants/itsybitsy_m4/variant.cpp +++ b/variants/itsybitsy_m4/variant.cpp @@ -110,22 +110,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom3, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM3_0_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM3_1_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM3_2_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM3_3_Handler() -{ - Serial1.IrqHandler(); -} diff --git a/variants/itsybitsy_m4/variant.h b/variants/itsybitsy_m4/variant.h index dd6da9ba7..021619f01 100644 --- a/variants/itsybitsy_m4/variant.h +++ b/variants/itsybitsy_m4/variant.h @@ -129,6 +129,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) #define PAD_SERIAL1_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL1 sercom3 /* * SPI Interfaces @@ -141,6 +142,10 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom1 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_3 +#define SPI_IT_HANDLER_0 SERCOM1_0_Handler +#define SPI_IT_HANDLER_1 SERCOM1_1_Handler +#define SPI_IT_HANDLER_2 SERCOM1_2_Handler +#define SPI_IT_HANDLER_3 SERCOM1_3_Handler static const uint8_t SS = PIN_A2 ; static const uint8_t MOSI = PIN_SPI_MOSI ; diff --git a/variants/matrixportal_m4/variant.cpp b/variants/matrixportal_m4/variant.cpp index df23508fe..be25f6652 100644 --- a/variants/matrixportal_m4/variant.cpp +++ b/variants/matrixportal_m4/variant.cpp @@ -132,42 +132,5 @@ SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; -Uart Serial1( &sercom1, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM1_0_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM1_1_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM1_2_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM1_3_Handler() -{ - Serial1.IrqHandler(); -} - // sercom for internal ESP32 UART connection -Uart Serial2( &sercom4, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX ) ; - -void SERCOM4_0_Handler() -{ - Serial2.IrqHandler(); -} -void SERCOM4_1_Handler() -{ - Serial2.IrqHandler(); -} -void SERCOM4_2_Handler() -{ - Serial2.IrqHandler(); -} -void SERCOM4_3_Handler() -{ - Serial2.IrqHandler(); -} diff --git a/variants/matrixportal_m4/variant.h b/variants/matrixportal_m4/variant.h index deedf8502..21a2ae294 100644 --- a/variants/matrixportal_m4/variant.h +++ b/variants/matrixportal_m4/variant.h @@ -140,12 +140,14 @@ static const uint8_t DAC1 = PIN_DAC1; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) #define PAD_SERIAL1_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL1 sercom1 // Serial2 #define PIN_SERIAL2_RX (27ul) #define PIN_SERIAL2_TX (28ul) #define PAD_SERIAL2_RX (SERCOM_RX_PAD_1) #define PAD_SERIAL2_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL2 sercom4 /* @@ -159,6 +161,10 @@ static const uint8_t DAC1 = PIN_DAC1; #define PERIPH_SPI sercom3 #define PAD_SPI_TX SPI_PAD_3_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_0 +#define SPI_IT_HANDLER_0 SERCOM3_0_Handler +#define SPI_IT_HANDLER_1 SERCOM3_1_Handler +#define SPI_IT_HANDLER_2 SERCOM3_2_Handler +#define SPI_IT_HANDLER_3 SERCOM3_3_Handler static const uint8_t SS = 33 ; static const uint8_t MOSI = PIN_SPI_MOSI ; @@ -172,6 +178,10 @@ static const uint8_t SCK = PIN_SPI_SCK ; #define PERIPH_SPI1 sercom0 #define PAD_SPI1_TX SPI_PAD_0_SCK_1 #define PAD_SPI1_RX SERCOM_RX_PAD_3 +#define SPI1_IT_HANDLER_0 SERCOM0_0_Handler +#define SPI1_IT_HANDLER_1 SERCOM0_1_Handler +#define SPI1_IT_HANDLER_2 SERCOM0_2_Handler +#define SPI1_IT_HANDLER_3 SERCOM0_3_Handler static const uint8_t SS1 = PIN_A3 ; static const uint8_t MOSI1 = PIN_SPI1_MOSI ; diff --git a/variants/metro_m0/variant.cpp b/variants/metro_m0/variant.cpp index b4836efe8..de192fa60 100644 --- a/variants/metro_m0/variant.cpp +++ b/variants/metro_m0/variant.cpp @@ -117,11 +117,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom0, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM0_Handler() -{ - Serial1.IrqHandler(); -} - diff --git a/variants/metro_m0/variant.h b/variants/metro_m0/variant.h index 5aa2e8525..92ba44d84 100644 --- a/variants/metro_m0/variant.h +++ b/variants/metro_m0/variant.h @@ -139,6 +139,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_TX (UART_TX_PAD_2) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom0 /* * SPI Interfaces @@ -151,6 +152,7 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom4 #define PAD_SPI_TX SPI_PAD_2_SCK_3 #define PAD_SPI_RX SERCOM_RX_PAD_0 +#define SPI_IT_HANDLER SERCOM4_Handler static const uint8_t SS = PIN_A2 ; // SERCOM4 last PAD is present on A2 but HW SS isn't used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI ; @@ -164,6 +166,7 @@ static const uint8_t SCK = PIN_SPI_SCK ; #define PERIPH_SPI1 sercom5 #define PAD_SPI1_TX SPI_PAD_2_SCK_3 #define PAD_SPI1_RX SERCOM_RX_PAD_1 +#define SPI1_IT_HANDLER SERCOM5_Handler static const uint8_t SS1 = 39 ; // HW SS isn't used. Set here only for reference. static const uint8_t MOSI1 = PIN_SPI_MOSI ; diff --git a/variants/metro_m4/variant.cpp b/variants/metro_m4/variant.cpp index 528a25ce7..7a99558c9 100644 --- a/variants/metro_m4/variant.cpp +++ b/variants/metro_m4/variant.cpp @@ -127,22 +127,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom3, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM3_0_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM3_1_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM3_2_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM3_3_Handler() -{ - Serial1.IrqHandler(); -} diff --git a/variants/metro_m4/variant.h b/variants/metro_m4/variant.h index 2b510e744..2f162f487 100644 --- a/variants/metro_m4/variant.h +++ b/variants/metro_m4/variant.h @@ -131,6 +131,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_TX (UART_TX_PAD_0) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) +#define PERIPH_SERIAL1 sercom3 /* * SPI Interfaces @@ -143,6 +144,10 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom2 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_2 +#define SPI_IT_HANDLER_0 SERCOM2_0_Handler +#define SPI_IT_HANDLER_1 SERCOM2_1_Handler +#define SPI_IT_HANDLER_2 SERCOM2_2_Handler +#define SPI_IT_HANDLER_3 SERCOM2_3_Handler static const uint8_t SS = PIN_A2 ; static const uint8_t MOSI = PIN_SPI_MOSI ; diff --git a/variants/metro_m4_airlift/variant.cpp b/variants/metro_m4_airlift/variant.cpp index a160346fd..cf038d8c8 100644 --- a/variants/metro_m4_airlift/variant.cpp +++ b/variants/metro_m4_airlift/variant.cpp @@ -94,7 +94,7 @@ const PinDescription g_APinDescription[]= { PORTB, 4, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_4 }, { PORTB, 5, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 }, - // 39 - SWO + // 39 - SWO { PORTB, 30, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_6 }, // used as output only // 40 - Internal NeoPixel @@ -132,41 +132,5 @@ SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; // sercom for pins 0 & 1 UART -Uart Serial1( &sercom3, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM3_0_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM3_1_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM3_2_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM3_3_Handler() -{ - Serial1.IrqHandler(); -} // sercom for internal ESP32 UART connection -Uart Serial2( &sercom0, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX ) ; - -void SERCOM0_0_Handler() -{ - Serial2.IrqHandler(); -} -void SERCOM0_1_Handler() -{ - Serial2.IrqHandler(); -} -void SERCOM0_2_Handler() -{ - Serial2.IrqHandler(); -} -void SERCOM0_3_Handler() -{ - Serial2.IrqHandler(); -} diff --git a/variants/metro_m4_airlift/variant.h b/variants/metro_m4_airlift/variant.h index d078f2099..b978bb456 100644 --- a/variants/metro_m4_airlift/variant.h +++ b/variants/metro_m4_airlift/variant.h @@ -143,12 +143,14 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) #define PAD_SERIAL1_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL1 sercom3 // Serial2 #define PIN_SERIAL2_RX (32ul) #define PIN_SERIAL2_TX (33ul) #define PAD_SERIAL2_RX (SERCOM_RX_PAD_3) #define PAD_SERIAL2_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL2 sercom0 /* * SPI Interfaces @@ -161,6 +163,10 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom2 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_2 +#define SPI_IT_HANDLER_0 SERCOM2_0_Handler +#define SPI_IT_HANDLER_1 SERCOM2_1_Handler +#define SPI_IT_HANDLER_2 SERCOM2_2_Handler +#define SPI_IT_HANDLER_3 SERCOM2_3_Handler static const uint8_t SS = SPIWIFI_SS ; static const uint8_t MOSI = PIN_SPI_MOSI ; diff --git a/variants/mkr1000/variant.cpp b/variants/mkr1000/variant.cpp index 51d0b37eb..76af54188 100644 --- a/variants/mkr1000/variant.cpp +++ b/variants/mkr1000/variant.cpp @@ -171,10 +171,3 @@ SERCOM sercom4(SERCOM4); SERCOM sercom5(SERCOM5); // Serial1 -Uart Serial1(&sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX); - -void SERCOM5_Handler() -{ - Serial1.IrqHandler(); -} - diff --git a/variants/mkr1000/variant.h b/variants/mkr1000/variant.h index ce9f6c12c..52ab20e3c 100644 --- a/variants/mkr1000/variant.h +++ b/variants/mkr1000/variant.h @@ -99,6 +99,7 @@ static const uint8_t DAC0 = PIN_DAC0; #define PERIPH_SPI sercom1 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_3 +#define SPI_IT_HANDLER SERCOM1_Handler static const uint8_t SS = PIN_SPI_SS; // SPI Slave SS not used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI; static const uint8_t MISO = PIN_SPI_MISO; @@ -112,6 +113,7 @@ static const uint8_t SCK = PIN_SPI_SCK; #define PERIPH_SPI1 sercom4 #define PAD_SPI1_TX SPI_PAD_0_SCK_1 #define PAD_SPI1_RX SERCOM_RX_PAD_3 +#define SPI1_IT_HANDLER SERCOM4_Handler static const uint8_t SS1 = PIN_SPI1_SS; static const uint8_t MOSI1 = PIN_SPI1_MOSI; static const uint8_t MISO1 = PIN_SPI1_MISO; @@ -174,6 +176,7 @@ extern Uart Serial1; #define PIN_SERIAL1_TX (14ul) #define PAD_SERIAL1_TX (UART_TX_PAD_2) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom5 #endif // __cplusplus // These serial port names are intended to allow libraries and architecture-neutral diff --git a/variants/mkrfox1200/variant.cpp b/variants/mkrfox1200/variant.cpp index 9b46cafd9..a17081b82 100644 --- a/variants/mkrfox1200/variant.cpp +++ b/variants/mkrfox1200/variant.cpp @@ -149,7 +149,7 @@ const PinDescription g_APinDescription[] = { { PORTA, 14, PIO_DIGITAL, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // SS: as GPIO { PORTA, 15, PIO_SERCOM_ALT, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // MISO: SERCOM4/PAD[3] { PORTA, 27, PIO_DIGITAL, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, - + { PORTA, 28, PIO_DIGITAL, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, { PORTB, 8, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG ), ADC_Channel2, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, { PORTB, 9, PIO_ANALOG, (PIN_ATTR_PWM|PIN_ATTR_TIMER ), ADC_Channel3, PWM4_CH1, TC4_CH1, EXTERNAL_INT_9 }, @@ -169,10 +169,3 @@ SERCOM sercom4(SERCOM4); SERCOM sercom5(SERCOM5); // Serial1 -Uart Serial1(&sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX); - -void SERCOM5_Handler() -{ - Serial1.IrqHandler(); -} - diff --git a/variants/mkrfox1200/variant.h b/variants/mkrfox1200/variant.h index ade82e8ba..dbc3afacf 100644 --- a/variants/mkrfox1200/variant.h +++ b/variants/mkrfox1200/variant.h @@ -98,6 +98,7 @@ static const uint8_t A6 = PIN_A6; #define PERIPH_SPI sercom1 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_3 +#define SPI_IT_HANDLER SERCOM1_Handler static const uint8_t SS = PIN_SPI_SS; // SPI Slave SS not used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI; @@ -115,6 +116,7 @@ static const uint8_t SCK = PIN_SPI_SCK; #define PERIPH_SPI1 sercom4 #define PAD_SPI1_TX SPI_PAD_0_SCK_1 #define PAD_SPI1_RX SERCOM_RX_PAD_3 +#define SPI1_IT_HANDLER SERCOM4_Handler static const uint8_t SS1 = PIN_SPI1_SS; static const uint8_t MOSI1 = PIN_SPI1_MOSI; static const uint8_t MISO1 = PIN_SPI1_MISO; @@ -176,6 +178,7 @@ extern Uart Serial1; #define PIN_SERIAL1_TX (14ul) #define PAD_SERIAL1_TX (UART_TX_PAD_2) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom5 #endif // __cplusplus // These serial port names are intended to allow libraries and architecture-neutral diff --git a/variants/mkrgsm1400/variant.cpp b/variants/mkrgsm1400/variant.cpp index c534367c2..4af7e72f8 100644 --- a/variants/mkrgsm1400/variant.cpp +++ b/variants/mkrgsm1400/variant.cpp @@ -234,19 +234,3 @@ void initVariant() { pinMode(PIN_SERIAL2_DTR, OUTPUT); digitalWrite(PIN_SERIAL2_DTR, LOW); } - -// Serial1 -Uart Serial1(&sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX); - -void SERCOM5_Handler() -{ - Serial1.IrqHandler(); -} - -// SerialGSM -Uart Serial2(&sercom4, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX, PIN_SERIAL2_RTS, PIN_SERIAL2_CTS); - -void SERCOM4_Handler() -{ - Serial2.IrqHandler(); -} diff --git a/variants/mkrgsm1400/variant.h b/variants/mkrgsm1400/variant.h index f3c2832aa..6a973c24c 100644 --- a/variants/mkrgsm1400/variant.h +++ b/variants/mkrgsm1400/variant.h @@ -104,6 +104,7 @@ static const uint8_t A6 = PIN_A6; #define PERIPH_SPI sercom1 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_3 +#define SPI_IT_HANDLER SERCOM1_Handler static const uint8_t SS = PIN_SPI_SS; // SPI Slave SS not used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI; @@ -156,6 +157,7 @@ extern Uart Serial1; #define PIN_SERIAL1_TX (14ul) #define PAD_SERIAL1_TX (UART_TX_PAD_2) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom5 // Serial2 - GSM extern Uart Serial2; @@ -163,6 +165,7 @@ extern Uart Serial2; #define PIN_SERIAL2_TX (26ul) #define PAD_SERIAL2_TX (UART_TX_RTS_CTS_PAD_0_2_3) #define PAD_SERIAL2_RX (SERCOM_RX_PAD_1) +#define PERIPH_SERIAL2 sercom4 #define PIN_SERIAL2_RTS (28u) #define PIN_SERIAL2_CTS (29u) #define PIN_SERIAL2_DTR (35u) diff --git a/variants/mkrnb1500/variant.cpp b/variants/mkrnb1500/variant.cpp index 3cc0a5921..d23633e63 100644 --- a/variants/mkrnb1500/variant.cpp +++ b/variants/mkrnb1500/variant.cpp @@ -238,19 +238,3 @@ void initVariant() { pinMode(SARA_RTS, OUTPUT); digitalWrite(SARA_RTS, LOW); } - -// Serial1 -Uart Serial1(&sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX); - -void SERCOM5_Handler() -{ - Serial1.IrqHandler(); -} - -// SerialSARA -Uart Serial2(&sercom4, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX); - -void SERCOM4_Handler() -{ - Serial2.IrqHandler(); -} diff --git a/variants/mkrnb1500/variant.h b/variants/mkrnb1500/variant.h index 3482528ce..4eaa1dc2d 100644 --- a/variants/mkrnb1500/variant.h +++ b/variants/mkrnb1500/variant.h @@ -105,6 +105,7 @@ static const uint8_t A6 = PIN_A6; #define PERIPH_SPI sercom1 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_3 +#define SPI_IT_HANDLER SERCOM1_Handler static const uint8_t SS = PIN_SPI_SS; // SPI Slave SS not used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI; @@ -157,6 +158,7 @@ extern Uart Serial1; #define PIN_SERIAL1_TX (14ul) #define PAD_SERIAL1_TX (UART_TX_PAD_2) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom5 // Serial2 - GSM extern Uart Serial2; @@ -164,6 +166,7 @@ extern Uart Serial2; #define PIN_SERIAL2_TX (26ul) #define PAD_SERIAL2_TX (UART_TX_PAD_0) #define PAD_SERIAL2_RX (SERCOM_RX_PAD_1) +#define PERIPH_SERIAL2 sercom4 #define PIN_SERIAL2_RTS (28u) #define PIN_SERIAL2_CTS (29u) diff --git a/variants/mkrwan1300/variant.cpp b/variants/mkrwan1300/variant.cpp index c9a19c5be..7be6e72eb 100644 --- a/variants/mkrwan1300/variant.cpp +++ b/variants/mkrwan1300/variant.cpp @@ -148,7 +148,7 @@ const PinDescription g_APinDescription[] = { { PORTA, 14, PIO_DIGITAL, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // SS: as GPIO { PORTA, 15, PIO_SERCOM_ALT, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // MISO: SERCOM4/PAD[3] { PORTA, 27, PIO_DIGITAL, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, - + { PORTA, 28, PIO_DIGITAL, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, { PORTB, 8, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG ), ADC_Channel2, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, { PORTB, 9, PIO_DIGITAL, (PIN_ATTR_PWM|PIN_ATTR_TIMER ), ADC_Channel3, PWM4_CH1, TC4_CH1, EXTERNAL_INT_9 }, @@ -172,17 +172,5 @@ SERCOM sercom4(SERCOM4); SERCOM sercom5(SERCOM5); // Serial1 -Uart Serial1(&sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX); - -void SERCOM5_Handler() -{ - Serial1.IrqHandler(); -} // SerialLoRa -Uart Serial2(&sercom4, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX); - -void SERCOM4_Handler() -{ - Serial2.IrqHandler(); -} \ No newline at end of file diff --git a/variants/mkrwan1300/variant.h b/variants/mkrwan1300/variant.h index 7368e02f5..39e1c8778 100644 --- a/variants/mkrwan1300/variant.h +++ b/variants/mkrwan1300/variant.h @@ -102,6 +102,7 @@ static const uint8_t A6 = PIN_A6; #define PERIPH_SPI sercom1 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_3 +#define SPI_IT_HANDLER SERCOM1_Handler static const uint8_t SS = PIN_SPI_SS; // SPI Slave SS not used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI; @@ -116,6 +117,7 @@ static const uint8_t SCK = PIN_SPI_SCK; #define PERIPH_SPI1 sercom4 #define PAD_SPI1_TX SPI_PAD_0_SCK_1 #define PAD_SPI1_RX SERCOM_RX_PAD_3 +#define SPI1_IT_HANDLER SERCOM4_Handler static const uint8_t MOSI1 = PIN_SPI1_MOSI; static const uint8_t MISO1 = PIN_SPI1_MISO; static const uint8_t SCK1 = PIN_SPI1_SCK; @@ -166,6 +168,7 @@ extern Uart Serial1; #define PIN_SERIAL1_TX (14ul) #define PAD_SERIAL1_TX (UART_TX_PAD_2) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom5 // Serial2 extern Uart Serial2; @@ -173,6 +176,7 @@ extern Uart Serial2; #define PIN_SERIAL2_TX (26ul) #define PAD_SERIAL2_TX (UART_TX_PAD_0) #define PAD_SERIAL2_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL2 sercom4 #endif // __cplusplus diff --git a/variants/mkrwifi1010/variant.cpp b/variants/mkrwifi1010/variant.cpp index f1938506b..668e78dcd 100644 --- a/variants/mkrwifi1010/variant.cpp +++ b/variants/mkrwifi1010/variant.cpp @@ -234,19 +234,3 @@ void initVariant() { pinMode(NINA_RESETN, OUTPUT); digitalWrite(NINA_RESETN, HIGH); } - -// Serial1 -Uart Serial1(&sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX); - -void SERCOM5_Handler() -{ - Serial1.IrqHandler(); -} - -// Serial2 -Uart Serial2(&sercom4, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX, PIN_SERIAL2_RTS, PIN_SERIAL2_CTS); - -void SERCOM4_Handler() -{ - Serial2.IrqHandler(); -} diff --git a/variants/mkrwifi1010/variant.h b/variants/mkrwifi1010/variant.h index dcd7f7775..f587d5b05 100644 --- a/variants/mkrwifi1010/variant.h +++ b/variants/mkrwifi1010/variant.h @@ -103,6 +103,7 @@ static const uint8_t A6 = PIN_A6; #define PERIPH_SPI sercom1 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_3 +#define SPI_IT_HANDLER SERCOM1_Handler static const uint8_t SS = PIN_SPI_SS; // SPI Slave SS not used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI; @@ -117,6 +118,7 @@ static const uint8_t SCK = PIN_SPI_SCK; #define PERIPH_SPI1 sercom4 #define PAD_SPI1_TX SPI_PAD_0_SCK_3 #define PAD_SPI1_RX SERCOM_RX_PAD_1 +#define SPI1_IT_HANDLER SERCOM4_Handler static const uint8_t SS1 = PIN_SPI1_SS; static const uint8_t MOSI1 = PIN_SPI1_MOSI; static const uint8_t MISO1 = PIN_SPI1_MISO; @@ -173,6 +175,7 @@ extern Uart Serial1; #define PIN_SERIAL1_TX (14ul) #define PAD_SERIAL1_TX (UART_TX_PAD_2) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom5 // Serial2 extern Uart Serial2; @@ -180,6 +183,7 @@ extern Uart Serial2; #define PIN_SERIAL2_TX (26ul) #define PAD_SERIAL2_TX (UART_TX_RTS_CTS_PAD_0_2_3) #define PAD_SERIAL2_RX (SERCOM_RX_PAD_1) +#define PERIPH_SERIAL2 sercom4 #define PIN_SERIAL2_RTS (28u) #define PIN_SERIAL2_CTS (29u) diff --git a/variants/mkrzero/variant.cpp b/variants/mkrzero/variant.cpp index 30b359150..96feae51e 100644 --- a/variants/mkrzero/variant.cpp +++ b/variants/mkrzero/variant.cpp @@ -150,7 +150,7 @@ const PinDescription g_APinDescription[] = { { PORTA, 14, PIO_DIGITAL, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // SS: as GPIO { PORTA, 15, PIO_SERCOM_ALT, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // MISO: SERCOM4/PAD[3] { PORTA, 27, PIO_DIGITAL, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, - + { PORTA, 28, PIO_DIGITAL, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, { PORTB, 8, PIO_DIGITAL, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, { PORTB, 9, PIO_ANALOG, (PIN_ATTR_PWM|PIN_ATTR_TIMER ), ADC_Channel3, PWM4_CH1, TC4_CH1, EXTERNAL_INT_9 }, @@ -170,10 +170,3 @@ SERCOM sercom4(SERCOM4); SERCOM sercom5(SERCOM5); // Serial1 -Uart Serial1(&sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX); - -void SERCOM5_Handler() -{ - Serial1.IrqHandler(); -} - diff --git a/variants/mkrzero/variant.h b/variants/mkrzero/variant.h index ca59b5ab2..31e1852b6 100644 --- a/variants/mkrzero/variant.h +++ b/variants/mkrzero/variant.h @@ -98,6 +98,7 @@ static const uint8_t A6 = PIN_A6; #define PERIPH_SPI sercom1 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_3 +#define SPI_IT_HANDLER SERCOM1_Handler static const uint8_t SS = PIN_SPI_SS; // SPI Slave SS not used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI; @@ -112,6 +113,7 @@ static const uint8_t SCK = PIN_SPI_SCK; #define PERIPH_SPI1 sercom4 #define PAD_SPI1_TX SPI_PAD_0_SCK_1 #define PAD_SPI1_RX SERCOM_RX_PAD_3 +#define SPI1_IT_HANDLER SERCOM4_Handler static const uint8_t SS1 = PIN_SPI1_SS; static const uint8_t MOSI1 = PIN_SPI1_MOSI; static const uint8_t MISO1 = PIN_SPI1_MISO; @@ -170,6 +172,7 @@ extern Uart Serial1; #define PIN_SERIAL1_TX (14ul) #define PAD_SERIAL1_TX (UART_TX_PAD_2) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom5 #endif // __cplusplus // These serial port names are intended to allow libraries and architecture-neutral diff --git a/variants/monster_m4sk/variant.h b/variants/monster_m4sk/variant.h index eb3a283fe..01b6cc6cb 100644 --- a/variants/monster_m4sk/variant.h +++ b/variants/monster_m4sk/variant.h @@ -131,6 +131,10 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom2 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_3 +#define SPI_IT_HANDLER_0 SERCOM2_0_Handler +#define SPI_IT_HANDLER_1 SERCOM2_1_Handler +#define SPI_IT_HANDLER_2 SERCOM2_2_Handler +#define SPI_IT_HANDLER_3 SERCOM2_3_Handler static const uint8_t SS = 5 ; static const uint8_t MOSI = PIN_SPI_MOSI ; @@ -144,6 +148,10 @@ static const uint8_t SCK = PIN_SPI_SCK ; #define PERIPH_SPI1 sercom5 #define PAD_SPI1_TX SPI_PAD_0_SCK_1 #define PAD_SPI1_RX SERCOM_RX_PAD_3 +#define SPI1_IT_HANDLER_0 SERCOM5_0_Handler +#define SPI1_IT_HANDLER_1 SERCOM5_1_Handler +#define SPI1_IT_HANDLER_2 SERCOM5_2_Handler +#define SPI1_IT_HANDLER_3 SERCOM5_3_Handler static const uint8_t SS1 = 9 ; static const uint8_t MOSI1 = PIN_SPI_MOSI ; @@ -157,6 +165,10 @@ static const uint8_t SCK1 = PIN_SPI_SCK ; #define PERIPH_SPI2 sercom3 #define PAD_SPI2_TX SPI_PAD_3_SCK_1 #define PAD_SPI2_RX SERCOM_RX_PAD_0 +#define SPI2_IT_HANDLER_0 SERCOM3_0_Handler +#define SPI2_IT_HANDLER_1 SERCOM3_1_Handler +#define SPI2_IT_HANDLER_2 SERCOM3_2_Handler +#define SPI2_IT_HANDLER_3 SERCOM3_3_Handler static const uint8_t SS2 = 13 ; // also ignored static const uint8_t MOSI2 = PIN_SPI_MOSI ; diff --git a/variants/neokeytrinkey_m0/variant.cpp b/variants/neokeytrinkey_m0/variant.cpp index e64ad7b21..4e58e9f3c 100644 --- a/variants/neokeytrinkey_m0/variant.cpp +++ b/variants/neokeytrinkey_m0/variant.cpp @@ -27,19 +27,19 @@ const PinDescription g_APinDescription[]= { PORTA, 15, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_15 }, // Mechanical switch - { PORTA, 28, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_8 }, + { PORTA, 28, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_8 }, // Touch pad - { PORTA, 7, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel7, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_7 }, + { PORTA, 7, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel7, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_7 }, + - // USB pins { PORTA, 28, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB Host enable { PORTA, 24, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DM { PORTA, 25, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DP // Fake DAC pin just so we can compile stuff - { PORTA, 2, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel0, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_2 }, // A0 / D0 / DAC + { PORTA, 2, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel0, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_2 }, // A0 / D0 / DAC } ; const void* g_apTCInstances[TCC_INST_NUM+TC_INST_NUM]={ TCC0, TCC1, TCC2, TC3, TC4, TC5 } ; diff --git a/variants/neokeytrinkey_m0/variant.h b/variants/neokeytrinkey_m0/variant.h index 27e532bf4..d40ba3059 100644 --- a/variants/neokeytrinkey_m0/variant.h +++ b/variants/neokeytrinkey_m0/variant.h @@ -108,6 +108,7 @@ static const uint8_t A1 = PIN_A1; #define PERIPH_SPI sercom0 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_0 +#define SPI_IT_HANDLER SERCOM0_Handler static const uint8_t SS = PIN_A0; static const uint8_t MOSI = PIN_SPI_MOSI; diff --git a/variants/neotrinkey_m0/variant.cpp b/variants/neotrinkey_m0/variant.cpp index 150034974..e4e9adbb3 100644 --- a/variants/neotrinkey_m0/variant.cpp +++ b/variants/neotrinkey_m0/variant.cpp @@ -30,7 +30,7 @@ const PinDescription g_APinDescription[]= { PORTA, 3, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG), ADC_Channel1, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_3 }, // Touch Pin 2 - { PORTA, 7, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel7, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_7 }, + { PORTA, 7, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel7, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_7 }, // USB pins { PORTA, 28, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB Host enable @@ -38,7 +38,7 @@ const PinDescription g_APinDescription[]= { PORTA, 25, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DP // Fake DAC pin just so we can compile stuff - { PORTA, 2, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel0, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_2 }, // A0 / D0 / DAC + { PORTA, 2, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel0, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_2 }, // A0 / D0 / DAC } ; const void* g_apTCInstances[TCC_INST_NUM+TC_INST_NUM]={ TCC0, TCC1, TCC2, TC3, TC4, TC5 } ; diff --git a/variants/neotrinkey_m0/variant.h b/variants/neotrinkey_m0/variant.h index 3cf172c23..36fb6a5b5 100644 --- a/variants/neotrinkey_m0/variant.h +++ b/variants/neotrinkey_m0/variant.h @@ -107,6 +107,7 @@ static const uint8_t A2 = PIN_A2; #define PERIPH_SPI sercom0 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_0 +#define SPI_IT_HANDLER SERCOM0_Handler static const uint8_t SS = PIN_A0; static const uint8_t MOSI = PIN_SPI_MOSI; diff --git a/variants/pirkey/variant.cpp b/variants/pirkey/variant.cpp index 61734c020..f0cdbe448 100644 --- a/variants/pirkey/variant.cpp +++ b/variants/pirkey/variant.cpp @@ -86,11 +86,3 @@ SERCOM sercom0( SERCOM0 ) ; SERCOM sercom1( SERCOM1 ) ; SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; - -Uart Serial1( &sercom1, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM1_Handler() -{ - Serial1.IrqHandler(); -} - diff --git a/variants/pirkey/variant.h b/variants/pirkey/variant.h index e6d0ce74a..5c6d03495 100644 --- a/variants/pirkey/variant.h +++ b/variants/pirkey/variant.h @@ -117,6 +117,7 @@ static const uint8_t DAC0 = PIN_DAC0; #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) #define PIN_SERIAL1_TX (3ul) // SWCLK PA30 #define PAD_SERIAL1_TX (UART_TX_PAD_2) +#define PERIPH_SERIAL1 sercom1 /* * SPI Interfaces diff --git a/variants/pixeltrinkey_m0/variant.cpp b/variants/pixeltrinkey_m0/variant.cpp index 15c9cce9c..2ce95e009 100644 --- a/variants/pixeltrinkey_m0/variant.cpp +++ b/variants/pixeltrinkey_m0/variant.cpp @@ -24,7 +24,7 @@ const PinDescription g_APinDescription[]= { // DAC / A0 for monitoring 5V - { PORTA, 2, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel0, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_2 }, // A0 / D0 / DAC + { PORTA, 2, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel0, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_2 }, // A0 / D0 / DAC // Internal NeoPixel / D1 { PORTA, 1, PIO_ANALOG, PIN_ATTR_ANALOG, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, diff --git a/variants/pixeltrinkey_m0/variant.h b/variants/pixeltrinkey_m0/variant.h index 9a2b8222f..b6c99a6b9 100644 --- a/variants/pixeltrinkey_m0/variant.h +++ b/variants/pixeltrinkey_m0/variant.h @@ -109,6 +109,7 @@ static const uint8_t A6 = PIN_A6; #define PERIPH_SPI sercom0 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_2 +#define SPI_IT_HANDLER SERCOM0_Handler static const uint8_t SS = (5ul); // not actually broken out static const uint8_t MOSI = PIN_SPI_MOSI; diff --git a/variants/proxlighttrinkey_m0/variant.cpp b/variants/proxlighttrinkey_m0/variant.cpp index d9688d084..8efea6e18 100644 --- a/variants/proxlighttrinkey_m0/variant.cpp +++ b/variants/proxlighttrinkey_m0/variant.cpp @@ -24,7 +24,7 @@ const PinDescription g_APinDescription[]= { // Fake DAC A0 pin just so we can compile stuff - { PORTA, 2, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel0, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_2 }, // A0 / D0 / DAC + { PORTA, 2, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel0, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_2 }, // A0 / D0 / DAC // touch 1 / A1 { PORTA, 7, PIO_ANALOG, (PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel7, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_7 }, // TCC1/WO[1] @@ -40,7 +40,7 @@ const PinDescription g_APinDescription[]= // Interrupt D6 { PORTA, 0, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_0 }, - + // USB pins D7, D8, D9 { PORTA, 28, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB Host enable { PORTA, 24, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DM diff --git a/variants/proxlighttrinkey_m0/variant.h b/variants/proxlighttrinkey_m0/variant.h index 93554eafc..c25384f50 100644 --- a/variants/proxlighttrinkey_m0/variant.h +++ b/variants/proxlighttrinkey_m0/variant.h @@ -113,6 +113,7 @@ static const uint8_t A2 = PIN_A2; #define PERIPH_SPI sercom0 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_0 +#define SPI_IT_HANDLER SERCOM0_Handler static const uint8_t SS = PIN_A0; static const uint8_t MOSI = PIN_SPI_MOSI; diff --git a/variants/pybadge_airlift_m4/variant.cpp b/variants/pybadge_airlift_m4/variant.cpp index ce2304ba1..fbc8dd93a 100644 --- a/variants/pybadge_airlift_m4/variant.cpp +++ b/variants/pybadge_airlift_m4/variant.cpp @@ -119,7 +119,7 @@ const PinDescription g_APinDescription[] = // ESP GPIO0, BUSY, RESET (52-54) {PORTA, 31, PIO_DIGITAL, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE}, // D52 ESP32_GPIO0 {PORTA, 0, PIO_DIGITAL, PIN_ATTR_PWM_E, No_ADC_Channel, TC2_CH0, TC2_CH0, EXTERNAL_INT_0}, // D53 ESP32_BUSY - {PORTB, 12, PIO_DIGITAL, PIN_ATTR_PWM_F, No_ADC_Channel, TCC3_CH0, TC4_CH0, EXTERNAL_INT_12}, // D54 ESP32_RESET + {PORTB, 12, PIO_DIGITAL, PIN_ATTR_PWM_F, No_ADC_Channel, TCC3_CH0, TC4_CH0, EXTERNAL_INT_12}, // D54 ESP32_RESET }; @@ -133,22 +133,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM5_0_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_1_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_2_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_3_Handler() -{ - Serial1.IrqHandler(); -} diff --git a/variants/pybadge_airlift_m4/variant.h b/variants/pybadge_airlift_m4/variant.h index 0887238d5..2e9374853 100644 --- a/variants/pybadge_airlift_m4/variant.h +++ b/variants/pybadge_airlift_m4/variant.h @@ -144,6 +144,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) #define PAD_SERIAL1_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL1 sercom5 /* * SPI Interfaces @@ -156,6 +157,10 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom1 #define PAD_SPI_TX SPI_PAD_3_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_2 +#define SPI_IT_HANDLER_0 SERCOM1_0_Handler +#define SPI_IT_HANDLER_1 SERCOM1_1_Handler +#define SPI_IT_HANDLER_2 SERCOM1_2_Handler +#define SPI_IT_HANDLER_3 SERCOM1_3_Handler static const uint8_t SS = 9 ; // SERCOM1 last PAD is present on d9 but HW SS isn't used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI ; @@ -169,6 +174,10 @@ static const uint8_t SCK = PIN_SPI_SCK ; #define PERIPH_SPI1 sercom4 #define PAD_SPI1_TX SPI_PAD_3_SCK_1 #define PAD_SPI1_RX SERCOM_RX_PAD_0 +#define SPI1_IT_HANDLER_0 SERCOM4_0_Handler +#define SPI1_IT_HANDLER_1 SERCOM4_1_Handler +#define SPI1_IT_HANDLER_2 SERCOM4_2_Handler +#define SPI1_IT_HANDLER_3 SERCOM4_3_Handler static const uint8_t SS1 = 44 ; static const uint8_t MOSI1 = PIN_SPI1_MOSI ; diff --git a/variants/pybadge_m4/variant.cpp b/variants/pybadge_m4/variant.cpp index ebc2c7f48..61aaee045 100644 --- a/variants/pybadge_m4/variant.cpp +++ b/variants/pybadge_m4/variant.cpp @@ -46,7 +46,7 @@ const PinDescription g_APinDescription[]= { PORTA, 22, PIO_SERCOM, PIN_ATTR_PWM_G, No_ADC_Channel, TCC0_CH2, TC4_CH0, EXTERNAL_INT_6 }, // 13 (LED) - { PORTA, 23, PIO_SERCOM, PIN_ATTR_PWM_G, No_ADC_Channel, TCC0_CH3, TC4_CH1, EXTERNAL_INT_7 }, + { PORTA, 23, PIO_SERCOM, PIN_ATTR_PWM_G, No_ADC_Channel, TCC0_CH3, TC4_CH1, EXTERNAL_INT_7 }, // 14..23 - Analog pins // -------------------- @@ -113,7 +113,7 @@ const PinDescription g_APinDescription[]= { PORTB, 31, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_15 }, // D48 button clock { PORTB, 30, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_14 }, // D49 button data { PORTB, 0, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_0 }, // D50 button latch - + // D51 Speaker enable { PORTA, 27, PIO_DIGITAL, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, @@ -131,22 +131,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM5_0_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_1_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_2_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_3_Handler() -{ - Serial1.IrqHandler(); -} diff --git a/variants/pybadge_m4/variant.h b/variants/pybadge_m4/variant.h index fbfb6824a..8a6a1937f 100644 --- a/variants/pybadge_m4/variant.h +++ b/variants/pybadge_m4/variant.h @@ -132,6 +132,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) #define PAD_SERIAL1_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL1 sercom5 /* * SPI Interfaces @@ -144,6 +145,10 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom1 #define PAD_SPI_TX SPI_PAD_3_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_2 +#define SPI_IT_HANDLER_0 SERCOM1_0_Handler +#define SPI_IT_HANDLER_1 SERCOM1_1_Handler +#define SPI_IT_HANDLER_2 SERCOM1_2_Handler +#define SPI_IT_HANDLER_3 SERCOM1_3_Handler static const uint8_t SS = 9 ; // SERCOM1 last PAD is present on d9 but HW SS isn't used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI ; @@ -157,6 +162,10 @@ static const uint8_t SCK = PIN_SPI_SCK ; #define PERIPH_SPI1 sercom4 #define PAD_SPI1_TX SPI_PAD_3_SCK_1 #define PAD_SPI1_RX SERCOM_RX_PAD_0 +#define SPI1_IT_HANDLER_0 SERCOM4_0_Handler +#define SPI1_IT_HANDLER_1 SERCOM4_1_Handler +#define SPI1_IT_HANDLER_2 SERCOM4_2_Handler +#define SPI1_IT_HANDLER_3 SERCOM4_3_Handler static const uint8_t SS1 = 44 ; static const uint8_t MOSI1 = PIN_SPI1_MOSI ; @@ -170,6 +179,10 @@ static const uint8_t SCK1 = PIN_SPI1_SCK ; #define PERIPH_SPI2 sercom3 #define PAD_SPI2_TX SPI_PAD_3_SCK_1 #define PAD_SPI2_RX SERCOM_RX_PAD_2 +#define SPI2_IT_HANDLER_0 SERCOM3_0_Handler +#define SPI2_IT_HANDLER_1 SERCOM3_1_Handler +#define SPI2_IT_HANDLER_2 SERCOM3_2_Handler +#define SPI2_IT_HANDLER_3 SERCOM3_3_Handler static const uint8_t SS2 = 10 ; static const uint8_t MOSI2 = PIN_SPI2_MOSI ; diff --git a/variants/pygamer_advance_m4/variant.cpp b/variants/pygamer_advance_m4/variant.cpp index 34f7e9831..70eb5449d 100644 --- a/variants/pygamer_advance_m4/variant.cpp +++ b/variants/pygamer_advance_m4/variant.cpp @@ -46,7 +46,7 @@ const PinDescription g_APinDescription[]= { PORTA, 22, PIO_SERCOM, PIN_ATTR_PWM_G, No_ADC_Channel, TCC0_CH2, TC4_CH0, EXTERNAL_INT_6 }, // 13 (LED) - { PORTA, 23, PIO_SERCOM, PIN_ATTR_PWM_G, No_ADC_Channel, TCC0_CH3, TC4_CH1, EXTERNAL_INT_7 }, + { PORTA, 23, PIO_SERCOM, PIN_ATTR_PWM_G, No_ADC_Channel, TCC0_CH3, TC4_CH1, EXTERNAL_INT_7 }, // 14..25 - Analog pins // -------------------- @@ -95,7 +95,7 @@ const PinDescription g_APinDescription[]= // 41..46 - TFT SPI port + control pins // -------------------- - { PORTB, 12, PIO_SERCOM, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_12 }, // SERCOM 4.0 MOSI + { PORTB, 12, PIO_SERCOM, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_12 }, // SERCOM 4.0 MOSI { PORTB, 13, PIO_SERCOM, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_13 }, // SERCOM 4.1 SCK { PORTB, 15, PIO_SERCOM, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_15 }, // SERCOM 4.3 'miso' (NC) { PORTB, 15, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_15 }, // D44 TFT CS @@ -109,7 +109,7 @@ const PinDescription g_APinDescription[]= { PORTB, 31, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_15 }, // D48 button clock { PORTB, 30, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_14 }, // D49 button data { PORTB, 0, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_0 }, // D50 button latch - + // D51 Speaker enable { PORTA, 27, PIO_DIGITAL, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, @@ -130,22 +130,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM5_0_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_1_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_2_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_3_Handler() -{ - Serial1.IrqHandler(); -} diff --git a/variants/pygamer_advance_m4/variant.h b/variants/pygamer_advance_m4/variant.h index cd5e271dd..1bf3d1a1b 100644 --- a/variants/pygamer_advance_m4/variant.h +++ b/variants/pygamer_advance_m4/variant.h @@ -136,6 +136,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) #define PAD_SERIAL1_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL1 sercom5 /* * SPI Interfaces @@ -148,6 +149,10 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom1 #define PAD_SPI_TX SPI_PAD_3_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_2 +#define SPI_IT_HANDLER_0 SERCOM1_0_Handler +#define SPI_IT_HANDLER_1 SERCOM1_1_Handler +#define SPI_IT_HANDLER_2 SERCOM1_2_Handler +#define SPI_IT_HANDLER_3 SERCOM1_3_Handler static const uint8_t SS = 4 ; // SD card CS static const uint8_t MOSI = PIN_SPI_MOSI ; @@ -161,6 +166,10 @@ static const uint8_t SCK = PIN_SPI_SCK ; #define PERIPH_SPI1 sercom4 #define PAD_SPI1_TX SPI_PAD_0_SCK_1 #define PAD_SPI1_RX SERCOM_RX_PAD_3 +#define SPI1_IT_HANDLER_0 SERCOM4_0_Handler +#define SPI1_IT_HANDLER_1 SERCOM4_1_Handler +#define SPI1_IT_HANDLER_2 SERCOM4_2_Handler +#define SPI1_IT_HANDLER_3 SERCOM4_3_Handler static const uint8_t SS1 = 44 ; static const uint8_t MOSI1 = PIN_SPI1_MOSI ; diff --git a/variants/pygamer_m4/variant.cpp b/variants/pygamer_m4/variant.cpp index ffbccefe8..813acecf8 100644 --- a/variants/pygamer_m4/variant.cpp +++ b/variants/pygamer_m4/variant.cpp @@ -46,7 +46,7 @@ const PinDescription g_APinDescription[]= { PORTA, 22, PIO_SERCOM, PIN_ATTR_PWM_G, No_ADC_Channel, TCC0_CH2, TC4_CH0, EXTERNAL_INT_6 }, // 13 (LED) - { PORTA, 23, PIO_SERCOM, PIN_ATTR_PWM_G, No_ADC_Channel, TCC0_CH3, TC4_CH1, EXTERNAL_INT_7 }, + { PORTA, 23, PIO_SERCOM, PIN_ATTR_PWM_G, No_ADC_Channel, TCC0_CH3, TC4_CH1, EXTERNAL_INT_7 }, // 14..25 - Analog pins // -------------------- @@ -109,7 +109,7 @@ const PinDescription g_APinDescription[]= { PORTB, 31, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_15 }, // D48 button clock { PORTB, 30, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_14 }, // D49 button data { PORTB, 0, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_0 }, // D50 button latch - + // D51 Speaker enable { PORTA, 27, PIO_DIGITAL, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, @@ -130,22 +130,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM5_0_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_1_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_2_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM5_3_Handler() -{ - Serial1.IrqHandler(); -} diff --git a/variants/pygamer_m4/variant.h b/variants/pygamer_m4/variant.h index 12c5b4ffb..969b5a14e 100644 --- a/variants/pygamer_m4/variant.h +++ b/variants/pygamer_m4/variant.h @@ -136,6 +136,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) #define PAD_SERIAL1_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL1 sercom5 /* * SPI Interfaces @@ -148,6 +149,10 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom1 #define PAD_SPI_TX SPI_PAD_3_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_2 +#define SPI_IT_HANDLER_0 SERCOM1_0_Handler +#define SPI_IT_HANDLER_1 SERCOM1_1_Handler +#define SPI_IT_HANDLER_2 SERCOM1_2_Handler +#define SPI_IT_HANDLER_3 SERCOM1_3_Handler static const uint8_t SS = 4 ; // SD card CS static const uint8_t MOSI = PIN_SPI_MOSI ; @@ -161,6 +166,10 @@ static const uint8_t SCK = PIN_SPI_SCK ; #define PERIPH_SPI1 sercom4 #define PAD_SPI1_TX SPI_PAD_3_SCK_1 #define PAD_SPI1_RX SERCOM_RX_PAD_0 +#define SPI1_IT_HANDLER_0 SERCOM4_0_Handler +#define SPI1_IT_HANDLER_1 SERCOM4_1_Handler +#define SPI1_IT_HANDLER_2 SERCOM4_2_Handler +#define SPI1_IT_HANDLER_3 SERCOM4_3_Handler static const uint8_t SS1 = 44 ; static const uint8_t MOSI1 = PIN_SPI1_MOSI ; diff --git a/variants/pyportal_m4/variant.cpp b/variants/pyportal_m4/variant.cpp index a74da78f6..de93d0e3f 100644 --- a/variants/pyportal_m4/variant.cpp +++ b/variants/pyportal_m4/variant.cpp @@ -130,22 +130,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom4, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM4_0_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM4_1_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM4_2_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM4_3_Handler() -{ - Serial1.IrqHandler(); -} diff --git a/variants/pyportal_m4/variant.h b/variants/pyportal_m4/variant.h index 75fcb354c..f95afe384 100644 --- a/variants/pyportal_m4/variant.h +++ b/variants/pyportal_m4/variant.h @@ -146,6 +146,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) #define PAD_SERIAL1_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL1 sercom4 /* @@ -159,6 +160,10 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom2 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_2 +#define SPI_IT_HANDLER_0 SERCOM2_0_Handler +#define SPI_IT_HANDLER_1 SERCOM2_1_Handler +#define SPI_IT_HANDLER_2 SERCOM2_2_Handler +#define SPI_IT_HANDLER_3 SERCOM2_3_Handler static const uint8_t SS = 32; static const uint8_t MOSI = PIN_SPI_MOSI; diff --git a/variants/pyportal_m4_titano/variant.cpp b/variants/pyportal_m4_titano/variant.cpp index 53cfdaca5..b0b03adad 100644 --- a/variants/pyportal_m4_titano/variant.cpp +++ b/variants/pyportal_m4_titano/variant.cpp @@ -130,22 +130,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom4, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM4_0_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM4_1_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM4_2_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM4_3_Handler() -{ - Serial1.IrqHandler(); -} diff --git a/variants/pyportal_m4_titano/variant.h b/variants/pyportal_m4_titano/variant.h index 0da7c158a..318615f89 100644 --- a/variants/pyportal_m4_titano/variant.h +++ b/variants/pyportal_m4_titano/variant.h @@ -146,6 +146,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (1ul) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) #define PAD_SERIAL1_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL1 sercom4 /* @@ -159,6 +160,10 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom2 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_2 +#define SPI_IT_HANDLER_0 SERCOM2_0_Handler +#define SPI_IT_HANDLER_1 SERCOM2_1_Handler +#define SPI_IT_HANDLER_2 SERCOM2_2_Handler +#define SPI_IT_HANDLER_3 SERCOM2_3_Handler static const uint8_t SS = 32; static const uint8_t MOSI = PIN_SPI_MOSI; diff --git a/variants/qtpy_m0/variant.cpp b/variants/qtpy_m0/variant.cpp index 4d5135036..0f0fcd02a 100644 --- a/variants/qtpy_m0/variant.cpp +++ b/variants/qtpy_m0/variant.cpp @@ -38,11 +38,11 @@ const PinDescription g_APinDescription[]= // SPI SCK, MISO, MOSI { PORTA, 11, PIO_SERCOM_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), ADC_Channel19, PWM0_CH3, TCC0_CH3, EXTERNAL_INT_11 }, // A8 / D8 / SCK / PWM - { PORTA, 9, PIO_SERCOM_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), ADC_Channel17, PWM1_CH3, TCC1_CH3, EXTERNAL_INT_9 }, // A9 / D9 / MISO / PWM + { PORTA, 9, PIO_SERCOM_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), ADC_Channel17, PWM1_CH3, TCC1_CH3, EXTERNAL_INT_9 }, // A9 / D9 / MISO / PWM { PORTA, 10, PIO_SERCOM_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), ADC_Channel18, PWM0_CH2, TCC0_CH2, EXTERNAL_INT_10 }, // A10 / D10 / MOSI / PWM { PORTA, 18, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, // D11 Neopix - { PORTA, 15, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_15 }, // D12 Neopix power + { PORTA, 15, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_15 }, // D12 Neopix power // D13 fake pin { PORTA, 27, PIO_OUTPUT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // used as fake output only @@ -70,12 +70,6 @@ SERCOM sercom1( SERCOM1 ) ; SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; -Uart Serial1( &sercom0, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM0_Handler() -{ - Serial1.IrqHandler(); -} void initVariant(void) { // special initialization code just for us diff --git a/variants/qtpy_m0/variant.h b/variants/qtpy_m0/variant.h index 1e4c4e0e1..cea9a43da 100644 --- a/variants/qtpy_m0/variant.h +++ b/variants/qtpy_m0/variant.h @@ -123,6 +123,7 @@ static const uint8_t DAC0 = PIN_DAC0; #define PIN_SERIAL1_RX (7ul) #define PAD_SERIAL1_TX (UART_TX_PAD_2) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom0 /* * SPI Interfaces @@ -135,6 +136,7 @@ static const uint8_t DAC0 = PIN_DAC0; #define PERIPH_SPI sercom2 #define PAD_SPI_TX SPI_PAD_2_SCK_3 #define PAD_SPI_RX SERCOM_RX_PAD_1 +#define SPI_IT_HANDLER SERCOM2_Handler static const uint8_t SS = PIN_A0 ; // unused, just for reference static const uint8_t MOSI = PIN_SPI_MOSI ; @@ -148,6 +150,7 @@ static const uint8_t SCK = PIN_SPI_SCK ; #define PERIPH_SPI1 sercom3 #define PAD_SPI1_TX SPI_PAD_0_SCK_1 #define PAD_SPI1_RX SERCOM_RX_PAD_3 +#define SPI1_IT_HANDLER SERCOM3_Handler static const uint8_t SS1 = 17; static const uint8_t MOSI1 = PIN_SPI1_MOSI ; diff --git a/variants/rotarytrinkey_m0/variant.cpp b/variants/rotarytrinkey_m0/variant.cpp index e3c824ff5..0b5aa7f4b 100644 --- a/variants/rotarytrinkey_m0/variant.cpp +++ b/variants/rotarytrinkey_m0/variant.cpp @@ -30,22 +30,22 @@ const PinDescription g_APinDescription[]= { PORTA, 0, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_0 }, // Encoder pin 2 - { PORTA, 4, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel4, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_4 }, + { PORTA, 4, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel4, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_4 }, // Encoder switch - { PORTA, 27, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_15 }, + { PORTA, 27, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_15 }, // Touch pad - { PORTA, 6, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel6, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_6 }, + { PORTA, 6, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel6, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_6 }, + - // USB pins { PORTA, 28, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB Host enable { PORTA, 24, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DM { PORTA, 25, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DP // Fake DAC pin just so we can compile stuff - { PORTA, 2, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel0, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_2 }, // A0 / D0 / DAC + { PORTA, 2, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel0, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_2 }, // A0 / D0 / DAC } ; const void* g_apTCInstances[TCC_INST_NUM+TC_INST_NUM]={ TCC0, TCC1, TCC2, TC3, TC4, TC5 } ; diff --git a/variants/rotarytrinkey_m0/variant.h b/variants/rotarytrinkey_m0/variant.h index a6442918e..6d79bfb36 100644 --- a/variants/rotarytrinkey_m0/variant.h +++ b/variants/rotarytrinkey_m0/variant.h @@ -114,6 +114,7 @@ static const uint8_t A2 = PIN_A2; #define PERIPH_SPI sercom0 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_0 +#define SPI_IT_HANDLER SERCOM0_Handler static const uint8_t SS = PIN_A0; static const uint8_t MOSI = PIN_SPI_MOSI; diff --git a/variants/sht4xtrinkey_m0/variant.cpp b/variants/sht4xtrinkey_m0/variant.cpp index 7d25cd281..7f69b38dd 100644 --- a/variants/sht4xtrinkey_m0/variant.cpp +++ b/variants/sht4xtrinkey_m0/variant.cpp @@ -24,7 +24,7 @@ const PinDescription g_APinDescription[]= { // Fake DAC A0 pin just so we can compile stuff - { PORTA, 2, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel0, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_2 }, // A0 / D0 / DAC + { PORTA, 2, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel0, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_2 }, // A0 / D0 / DAC // touch / A1 { PORTA, 7, PIO_ANALOG, (PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel7, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_7 }, // TCC1/WO[1] diff --git a/variants/sht4xtrinkey_m0/variant.h b/variants/sht4xtrinkey_m0/variant.h index 2a3a0ee9b..69afcffa0 100644 --- a/variants/sht4xtrinkey_m0/variant.h +++ b/variants/sht4xtrinkey_m0/variant.h @@ -108,6 +108,7 @@ static const uint8_t A1 = PIN_A1; #define PERIPH_SPI sercom0 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_0 +#define SPI_IT_HANDLER SERCOM0_Handler static const uint8_t SS = PIN_A0; static const uint8_t MOSI = PIN_SPI_MOSI; diff --git a/variants/slidetrinkey_m0/variant.cpp b/variants/slidetrinkey_m0/variant.cpp index 88a348db7..bbbb14862 100644 --- a/variants/slidetrinkey_m0/variant.cpp +++ b/variants/slidetrinkey_m0/variant.cpp @@ -30,7 +30,7 @@ const PinDescription g_APinDescription[]= { PORTA, 7, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel7, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_7 }, // NeoPixel - { PORTA, 4, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel4, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_4 }, + { PORTA, 4, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel4, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_4 }, // USB pins { PORTA, 28, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB Host enable diff --git a/variants/slidetrinkey_m0/variant.h b/variants/slidetrinkey_m0/variant.h index 65d2e75e8..51e2270cb 100644 --- a/variants/slidetrinkey_m0/variant.h +++ b/variants/slidetrinkey_m0/variant.h @@ -111,6 +111,7 @@ static const uint8_t A2 = PIN_A2; #define PERIPH_SPI sercom0 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_0 +#define SPI_IT_HANDLER SERCOM0_Handler static const uint8_t SS = PIN_A0; static const uint8_t MOSI = PIN_SPI_MOSI; diff --git a/variants/trellis_m4/variant.cpp b/variants/trellis_m4/variant.cpp index cbe7be633..8285c4096 100644 --- a/variants/trellis_m4/variant.cpp +++ b/variants/trellis_m4/variant.cpp @@ -93,7 +93,7 @@ const PinDescription g_APinDescription[]= // Unused { PORTB, 2, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel14, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, - { PORTB, 3, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel15, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_3 }, + { PORTB, 3, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel15, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_3 }, // AREF tied to 3.3V { PORTA, 3, PIO_ANALOG, PIN_ATTR_ANALOG, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_3 }, // DAC/VREFP @@ -109,22 +109,3 @@ SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; - -Uart Serial1( &sercom4, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM4_0_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM4_1_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM4_2_Handler() -{ - Serial1.IrqHandler(); -} -void SERCOM4_3_Handler() -{ - Serial1.IrqHandler(); -} diff --git a/variants/trellis_m4/variant.h b/variants/trellis_m4/variant.h index 46e66b754..eaf6f042f 100644 --- a/variants/trellis_m4/variant.h +++ b/variants/trellis_m4/variant.h @@ -128,6 +128,7 @@ static const uint8_t LINE_RIGHT = PIN_LINE_RIGHT; #define PIN_SERIAL1_TX (21ul) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_1) #define PAD_SERIAL1_TX (UART_TX_PAD_0) +#define PERIPH_SERIAL1 sercom4 /* * SPI Interfaces @@ -140,6 +141,10 @@ static const uint8_t LINE_RIGHT = PIN_LINE_RIGHT; #define PERIPH_SPI sercom3 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_3 +#define SPI_IT_HANDLER_0 SERCOM3_0_Handler +#define SPI_IT_HANDLER_1 SERCOM3_1_Handler +#define SPI_IT_HANDLER_2 SERCOM3_2_Handler +#define SPI_IT_HANDLER_3 SERCOM3_3_Handler static const uint8_t SS = PIN_A2 ; static const uint8_t MOSI = PIN_SPI_MOSI ; diff --git a/variants/trinket_m0/variant.cpp b/variants/trinket_m0/variant.cpp index 5363f8daf..ebff53f2e 100644 --- a/variants/trinket_m0/variant.cpp +++ b/variants/trinket_m0/variant.cpp @@ -93,11 +93,3 @@ SERCOM sercom0( SERCOM0 ) ; SERCOM sercom1( SERCOM1 ) ; SERCOM sercom2( SERCOM2 ) ; SERCOM sercom3( SERCOM3 ) ; - -Uart Serial1( &sercom0, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; - -void SERCOM0_Handler() -{ - Serial1.IrqHandler(); -} - diff --git a/variants/trinket_m0/variant.h b/variants/trinket_m0/variant.h index 12e99e9dc..f2ce8ee47 100644 --- a/variants/trinket_m0/variant.h +++ b/variants/trinket_m0/variant.h @@ -120,6 +120,7 @@ static const uint8_t DAC0 = PIN_DAC0; #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) #define PIN_SERIAL1_TX (4ul) // PA06 #define PAD_SERIAL1_TX (UART_TX_PAD_2) +#define PERIPH_SERIAL1 sercom0 /* * SPI Interfaces @@ -132,6 +133,7 @@ static const uint8_t DAC0 = PIN_DAC0; #define PERIPH_SPI sercom0 #define PAD_SPI_TX SPI_PAD_2_SCK_3 #define PAD_SPI_RX SERCOM_RX_PAD_1 +#define SPI_IT_HANDLER SERCOM0_Handler static const uint8_t SS = 5 ; // SERCOM0 last PAD is present on 5 but HW SS isn't used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI ; diff --git a/variants/trrstrinkey_m0/variant.h b/variants/trrstrinkey_m0/variant.h index 998d00ddb..c40cde2b6 100644 --- a/variants/trrstrinkey_m0/variant.h +++ b/variants/trrstrinkey_m0/variant.h @@ -120,6 +120,7 @@ static const uint8_t A5 = PIN_A5; #define PERIPH_SPI sercom0 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_2 +#define SPI_IT_HANDLER SERCOM0_Handler static const uint8_t SS = PIN_TIP; static const uint8_t MOSI = PIN_SPI_MOSI; diff --git a/variants/zero_radio/variant.cpp b/variants/zero_radio/variant.cpp index 8e3150122..ac1d42d04 100644 --- a/variants/zero_radio/variant.cpp +++ b/variants/zero_radio/variant.cpp @@ -218,8 +218,3 @@ SERCOM sercom4( SERCOM4 ) ; SERCOM sercom5( SERCOM5 ) ; // We'll use sercom5 for Serial1 hardware serial since pins 0 and 1 are not external -Uart Serial1( &sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; -void SERCOM5_Handler() -{ - Serial1.IrqHandler(); -} diff --git a/variants/zero_radio/variant.h b/variants/zero_radio/variant.h index dfc5b93d7..42fdd8111 100644 --- a/variants/zero_radio/variant.h +++ b/variants/zero_radio/variant.h @@ -139,6 +139,7 @@ static const uint8_t ATN = PIN_ATN; #define PIN_SERIAL1_TX (30ul) #define PAD_SERIAL1_TX (UART_TX_PAD_2) #define PAD_SERIAL1_RX (SERCOM_RX_PAD_3) +#define PERIPH_SERIAL1 sercom5 /* * SPI Interfaces @@ -152,6 +153,7 @@ static const uint8_t ATN = PIN_ATN; #define PERIPH_SPI sercom2 #define PAD_SPI_TX SPI_PAD_0_SCK_1 #define PAD_SPI_RX SERCOM_RX_PAD_2 +#define SPI_IT_HANDLER SERCOM2_Handler static const uint8_t SS = PIN_A2 ; // SERCOM4 last PAD is present on A2 but HW SS isn't used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI ; @@ -166,6 +168,7 @@ static const uint8_t SCK = PIN_SPI_SCK ; #define PERIPH_SPI1 sercom4 #define PAD_SPI1_TX SPI_PAD_2_SCK_3 #define PAD_SPI1_RX SERCOM_RX_PAD_0 +#define SPI1_IT_HANDLER SERCOM4_Handler static const uint8_t SS1 = PIN_SPI1_SEL ; static const uint8_t MOSI1 = PIN_SPI_MOSI ;