Skip to content

Commit 672313b

Browse files
committed
Merge remote-tracking branch 'origin/ide-1.5.x' into ide-1.5.x
2 parents 909af68 + 884aa1a commit 672313b

File tree

4 files changed

+23
-9
lines changed

4 files changed

+23
-9
lines changed

hardware/arduino/avr/cores/arduino/CDC.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,11 @@ bool WEAK CDC_Setup(Setup& setup)
115115

116116

117117
int _serialPeek = -1;
118-
void Serial_::begin(uint16_t baud_count)
118+
void Serial_::begin(unsigned long baud_count)
119+
{
120+
}
121+
122+
void Serial_::begin(unsigned long baud_count, byte config)
119123
{
120124
}
121125

hardware/arduino/avr/cores/arduino/USBAPI.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ struct ring_buffer;
3636
class Serial_ : public Stream
3737
{
3838
public:
39-
void begin(uint16_t baud_count);
39+
void begin(unsigned long);
40+
void begin(unsigned long, uint8_t);
4041
void end(void);
4142

4243
virtual int available(void);

libraries/SPI/arch/sam/SPI.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,13 @@
1111
#include "SPI_Class.h"
1212

1313
SPIClass::SPIClass(Spi *_spi, uint32_t _id, void(*_initCb)(void)) :
14-
spi(_spi), id(_id), initCb(_initCb)
14+
spi(_spi), id(_id), initCb(_initCb), initialized(false)
1515
{
1616
// Empty
1717
}
1818

1919
void SPIClass::begin() {
20-
initCb();
21-
SPI_Configure(spi, id, SPI_MR_MSTR | SPI_MR_PS | SPI_MR_MODFDIS);
22-
SPI_Enable(spi);
20+
init();
2321

2422
// NPCS control is left to the user
2523

@@ -30,9 +28,7 @@ void SPIClass::begin() {
3028
}
3129

3230
void SPIClass::begin(uint8_t _pin) {
33-
initCb();
34-
SPI_Configure(spi, id, SPI_MR_MSTR | SPI_MR_PS | SPI_MR_MODFDIS);
35-
SPI_Enable(spi);
31+
init();
3632

3733
uint32_t spiPin = BOARD_PIN_TO_SPI_PIN(_pin);
3834
PIO_Configure(
@@ -47,6 +43,15 @@ void SPIClass::begin(uint8_t _pin) {
4743
setBitOrder(_pin, MSBFIRST);
4844
}
4945

46+
void SPIClass::init() {
47+
if (initialized)
48+
return;
49+
initCb();
50+
SPI_Configure(spi, id, SPI_MR_MSTR | SPI_MR_PS | SPI_MR_MODFDIS);
51+
SPI_Enable(spi);
52+
initialized = true;
53+
}
54+
5055
void SPIClass::end(uint8_t _pin) {
5156
uint32_t spiPin = BOARD_PIN_TO_SPI_PIN(_pin);
5257
// Setting the pin as INPUT will disconnect it from SPI peripheral
@@ -55,6 +60,7 @@ void SPIClass::end(uint8_t _pin) {
5560

5661
void SPIClass::end() {
5762
SPI_Disable(spi);
63+
initialized = false;
5864
}
5965

6066
void SPIClass::setBitOrder(uint8_t _pin, BitOrder _bitOrder) {

libraries/SPI/arch/sam/SPI_Class.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,15 @@ class SPIClass {
5454
void setClockDivider(uint8_t _div) { setClockDivider(BOARD_SPI_DEFAULT_SS, _div); };
5555

5656
private:
57+
void init();
58+
5759
Spi *spi;
5860
uint32_t id;
5961
BitOrder bitOrder[SPI_CHANNELS_NUM];
6062
uint32_t divider[SPI_CHANNELS_NUM];
6163
uint32_t mode[SPI_CHANNELS_NUM];
6264
void (*initCb)(void);
65+
bool initialized;
6366
};
6467

6568
#if SPI_INTERFACES_COUNT > 0

0 commit comments

Comments
 (0)