diff --git a/build/shared/revisions.txt b/build/shared/revisions.txt index 2fc67e11e..d9e9b863f 100644 --- a/build/shared/revisions.txt +++ b/build/shared/revisions.txt @@ -20,6 +20,8 @@ ARDUINO 1.5.3 BETA [libraries] * sam: Added CAN library (still in early stage of development) (Palliser) +* sam: Bugfix SPI library: begin() after end() now works (stimmer) +* sam: Bugfix SPI library: incorrent pin configuration in non-extended mode. [firmwares] * Arduino Due: fixed USB2Serial garbage at startup (https://github.com/arduino/Arduino/pull/1267) diff --git a/hardware/arduino/sam/libraries/SPI/SPI.cpp b/hardware/arduino/sam/libraries/SPI/SPI.cpp index ef931a3f4..017ec4edb 100644 --- a/hardware/arduino/sam/libraries/SPI/SPI.cpp +++ b/hardware/arduino/sam/libraries/SPI/SPI.cpp @@ -13,13 +13,14 @@ SPIClass::SPIClass(Spi *_spi, uint32_t _id, void(*_initCb)(void)) : spi(_spi), id(_id), initCb(_initCb) { - initCb(); - - SPI_Configure(spi, id, SPI_MR_MSTR | SPI_MR_PS | SPI_MR_MODFDIS); - SPI_Enable(spi); + // Empty } void SPIClass::begin() { + initCb(); + SPI_Configure(spi, id, SPI_MR_MSTR | SPI_MR_PS | SPI_MR_MODFDIS); + SPI_Enable(spi); + // NPCS control is left to the user // Default speed set to 4Mhz diff --git a/hardware/arduino/sam/variants/arduino_due_x/variant.h b/hardware/arduino/sam/variants/arduino_due_x/variant.h index 75fd65474..ef2587688 100644 --- a/hardware/arduino/sam/variants/arduino_due_x/variant.h +++ b/hardware/arduino/sam/variants/arduino_due_x/variant.h @@ -84,7 +84,7 @@ extern "C"{ #define BOARD_SPI_SS1 (4u) #define BOARD_SPI_SS2 (52u) #define BOARD_SPI_SS3 PIN_SPI_SS3 -#define BOARD_SPI_DEFAULT_SS BOARD_SPI_SS2 +#define BOARD_SPI_DEFAULT_SS BOARD_SPI_SS3 #define BOARD_PIN_TO_SPI_PIN(x) \ (x==BOARD_SPI_SS0 ? PIN_SPI_SS0 : \