diff options
Diffstat (limited to 'libraries/SPI')
| -rw-r--r-- | libraries/SPI/SPI.cpp | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/libraries/SPI/SPI.cpp b/libraries/SPI/SPI.cpp index 9e7a116..af14e07 100644 --- a/libraries/SPI/SPI.cpp +++ b/libraries/SPI/SPI.cpp @@ -29,7 +29,15 @@ void SPIClass::begin()    noInterrupts(); // Protect from a scheduler and prevent transactionBegin    if (!initialized) {      // 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      // a general purpose output port (it doesn't influence | 
