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/avr/cores/arduino/WString.cpp b/hardware/arduino/avr/cores/arduino/WString.cpp index 8c85cc592..48c30df77 100644 --- a/hardware/arduino/avr/cores/arduino/WString.cpp +++ b/hardware/arduino/avr/cores/arduino/WString.cpp @@ -325,14 +325,14 @@ unsigned char String::concat(unsigned long num) unsigned char String::concat(float num) { char buf[20]; - char* string = dtostrf(num, 8, 6, buf); + char* string = dtostrf(num, 8, 2, buf); return concat(string, strlen(string)); } unsigned char String::concat(double num) { char buf[20]; - char* string = dtostrf(num, 8, 6, buf); + char* string = dtostrf(num, 8, 2, buf); return concat(string, strlen(string)); } diff --git a/hardware/arduino/avr/cores/arduino/WString.h b/hardware/arduino/avr/cores/arduino/WString.h index 44a841930..b3b9f1427 100644 --- a/hardware/arduino/avr/cores/arduino/WString.h +++ b/hardware/arduino/avr/cores/arduino/WString.h @@ -69,8 +69,8 @@ public: explicit String(unsigned int, unsigned char base=10); explicit String(long, unsigned char base=10); explicit String(unsigned long, unsigned char base=10); - explicit String(float, int decimalPlaces=6); - explicit String(double, int decimalPlaces=6); + explicit String(float, int decimalPlaces=2); + explicit String(double, int decimalPlaces=2); ~String(void); // memory management diff --git a/hardware/arduino/avr/cores/robot/WString.cpp b/hardware/arduino/avr/cores/robot/WString.cpp index 8c85cc592..48c30df77 100644 --- a/hardware/arduino/avr/cores/robot/WString.cpp +++ b/hardware/arduino/avr/cores/robot/WString.cpp @@ -325,14 +325,14 @@ unsigned char String::concat(unsigned long num) unsigned char String::concat(float num) { char buf[20]; - char* string = dtostrf(num, 8, 6, buf); + char* string = dtostrf(num, 8, 2, buf); return concat(string, strlen(string)); } unsigned char String::concat(double num) { char buf[20]; - char* string = dtostrf(num, 8, 6, buf); + char* string = dtostrf(num, 8, 2, buf); return concat(string, strlen(string)); } diff --git a/hardware/arduino/avr/cores/robot/WString.h b/hardware/arduino/avr/cores/robot/WString.h index 4b9e64e0b..0404f767a 100644 --- a/hardware/arduino/avr/cores/robot/WString.h +++ b/hardware/arduino/avr/cores/robot/WString.h @@ -69,8 +69,8 @@ public: explicit String(unsigned int, unsigned char base=10); explicit String(long, unsigned char base=10); explicit String(unsigned long, unsigned char base=10); - explicit String(float, int decimalPlaces=6); - explicit String(double, int decimalPlaces=6); + explicit String(float, int decimalPlaces=2); + explicit String(double, int decimalPlaces=2); ~String(void); // memory management diff --git a/hardware/arduino/sam/cores/arduino/WString.cpp b/hardware/arduino/sam/cores/arduino/WString.cpp index de1a2f1b2..d6b344c2a 100644 --- a/hardware/arduino/sam/cores/arduino/WString.cpp +++ b/hardware/arduino/sam/cores/arduino/WString.cpp @@ -326,14 +326,14 @@ unsigned char String::concat(unsigned long num) unsigned char String::concat(float num) { char buf[20]; - char* string = dtostrf(num, 8, 6, buf); + char* string = dtostrf(num, 8, 2, buf); return concat(string, strlen(string)); } unsigned char String::concat(double num) { char buf[20]; - char* string = dtostrf(num, 8, 6, buf); + char* string = dtostrf(num, 8, 2, buf); return concat(string, strlen(string)); } diff --git a/hardware/arduino/sam/cores/arduino/WString.h b/hardware/arduino/sam/cores/arduino/WString.h index 4b9e64e0b..0404f767a 100644 --- a/hardware/arduino/sam/cores/arduino/WString.h +++ b/hardware/arduino/sam/cores/arduino/WString.h @@ -69,8 +69,8 @@ public: explicit String(unsigned int, unsigned char base=10); explicit String(long, unsigned char base=10); explicit String(unsigned long, unsigned char base=10); - explicit String(float, int decimalPlaces=6); - explicit String(double, int decimalPlaces=6); + explicit String(float, int decimalPlaces=2); + explicit String(double, int decimalPlaces=2); ~String(void); // memory management 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 : \