Do not influence state of SS if it's already been set to an output previously, e.g. by user sketch
squashes and closes PR #2659
This commit is contained in:
parent
1da3da02ff
commit
8fcf5c9406
|
@ -29,7 +29,15 @@ void SPIClass::begin()
|
||||||
noInterrupts(); // Protect from a scheduler and prevent transactionBegin
|
noInterrupts(); // Protect from a scheduler and prevent transactionBegin
|
||||||
if (!initialized) {
|
if (!initialized) {
|
||||||
// Set SS to high so a connected chip will be "deselected" by default
|
// Set SS to high so a connected chip will be "deselected" by default
|
||||||
digitalWrite(SS, HIGH);
|
uint8_t port = digitalPinToPort(SS);
|
||||||
|
uint8_t bit = digitalPinToBitMask(SS);
|
||||||
|
volatile uint8_t *reg = portModeRegister(port);
|
||||||
|
|
||||||
|
// if the SS pin is not already configured as an output
|
||||||
|
// then set it high (to enable the internal pull-up resistor)
|
||||||
|
if(!(*reg & bit)){
|
||||||
|
digitalWrite(SS, HIGH);
|
||||||
|
}
|
||||||
|
|
||||||
// When the SS pin is set as OUTPUT, it can be used as
|
// When the SS pin is set as OUTPUT, it can be used as
|
||||||
// a general purpose output port (it doesn't influence
|
// a general purpose output port (it doesn't influence
|
||||||
|
|
Loading…
Reference in New Issue