diff --git a/UsbCore.h b/UsbCore.h index f5eed89b..4a84f56b 100644 --- a/UsbCore.h +++ b/UsbCore.h @@ -48,6 +48,8 @@ typedef MAX3421e MAX3421E; // Balanduino typedef MAX3421e MAX3421E; // The Intel Galileo supports much faster read and write speed at pin 2 and 3 #elif defined(ESP8266) typedef MAX3421e MAX3421E; // ESP8266 boards +#elif defined(ARDUINO_XIAO_ESP32S3) +typedef MAX3421e MAX3421E; // ESP32 XIAO boards #elif defined(ESP32) typedef MAX3421e MAX3421E; // ESP32 boards #elif defined(ARDUINO_Seeed_XIAO_nRF52840_Sense) @@ -56,6 +58,8 @@ typedef MAX3421e MAX3421E; // Seeed_XIAO_nRF52840_Sense typedef MAX3421e MAX3421E; // MightyCore #elif (defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__)) typedef MAX3421e MAX3421E; // Sanguino +#elif defined(ARDUINO_NRF52840_FEATHER_SENSE) +typedef MAX3421e MAX3421E; // ARDUINO_NRF52840_FEATHER_SENSE #else typedef MAX3421e MAX3421E; // Official Arduinos (UNO, Duemilanove, Mega, 2560, Leonardo, Due etc.), Intel Edison, Intel Galileo 2 or Teensy 2.0 and 3.x #endif diff --git a/avrpins.h b/avrpins.h index 42a2f603..9050b72b 100644 --- a/avrpins.h +++ b/avrpins.h @@ -1506,7 +1506,7 @@ MAKE_PIN(P19, GPIOC, GPIO_PIN_0); // A5 #undef MAKE_PIN -#elif defined(ARDUINO_NRF52840_FEATHER) +#elif defined(ARDUINO_NRF52840_FEATHER) || defined(ARDUINO_NRF52840_FEATHER_SENSE) #define MAKE_PIN(className, pin) \ class className { \ @@ -1852,6 +1852,47 @@ MAKE_PIN(P13, 13); // MOSI MAKE_PIN(P14, 14); // SCK MAKE_PIN(P15, 15); // SS +#elif defined(ARDUINO_XIAO_ESP32S3) + +// Workaround strict-aliasing warnings +#ifdef pgm_read_word +#undef pgm_read_word +#endif +#ifdef pgm_read_dword +#undef pgm_read_dword +#endif +#ifdef pgm_read_float +#undef pgm_read_float +#endif +#ifdef pgm_read_ptr +#undef pgm_read_ptr +#endif + +#define pgm_read_word(addr) ({ \ + typeof(addr) _addr = (addr); \ + *(const unsigned short *)(_addr); \ +}) +#define pgm_read_dword(addr) ({ \ + typeof(addr) _addr = (addr); \ + *(const unsigned long *)(_addr); \ +}) +#define pgm_read_float(addr) ({ \ + typeof(addr) _addr = (addr); \ + *(const float *)(_addr); \ +}) +#define pgm_read_ptr(addr) ({ \ + typeof(addr) _addr = (addr); \ + *(void * const *)(_addr); \ +}) + +// Pinout for ESP32 dev module + +MAKE_PIN(P8, 8); // MISO +MAKE_PIN(P9, 9); // MOSI +MAKE_PIN(P7, 7); // SCK +MAKE_PIN(P44, 44); // SS +MAKE_PIN(P4, 4); // INT + #elif defined(ESP32) // Workaround strict-aliasing warnings diff --git a/usbhost.h b/usbhost.h index 859f2726..969002d5 100644 --- a/usbhost.h +++ b/usbhost.h @@ -118,9 +118,11 @@ typedef SPi< P76, P75, P74, P10 > spi; typedef SPi< P16, P18, P17, P10 > spi; #elif defined(ESP8266) typedef SPi< P14, P13, P12, P15 > spi; +#elif defined(ARDUINO_XIAO_ESP32S3) +typedef SPi< P7, P9, P8, P44 > spi; #elif defined(ESP32) typedef SPi< P18, P23, P19, P5 > spi; -#elif defined(ARDUINO_NRF52840_FEATHER) +#elif defined(ARDUINO_NRF52840_FEATHER) || defined(ARDUINO_NRF52840_FEATHER_SENSE) typedef SPi< P26, P25, P24, P5 > spi; #elif defined(ARDUINO_Seeed_XIAO_nRF52840_Sense) typedef SPi< P8, P10, P9, P7 > spi;