From 30cac6797fcf30843469d46234ee38c9cec709e9 Mon Sep 17 00:00:00 2001 From: kiwisincebirth Date: Mon, 20 Apr 2015 20:49:37 +1000 Subject: [PATCH] Added support for Ethernet SS Pin Config // W5100.select(8); --- libraries/Ethernet/src/utility/w5100.cpp | 18 ++++++++++++++++ libraries/Ethernet/src/utility/w5100.h | 26 +++++++----------------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/libraries/Ethernet/src/utility/w5100.cpp b/libraries/Ethernet/src/utility/w5100.cpp index df4ebc6aca7..b69893ef2e9 100644 --- a/libraries/Ethernet/src/utility/w5100.cpp +++ b/libraries/Ethernet/src/utility/w5100.cpp @@ -22,8 +22,26 @@ W5100Class W5100; #define TXBUF_BASE 0x4000 #define RXBUF_BASE 0x6000 +uint8_t W5100Class::slaveSelect = 10; + +void W5100Class::select(uint8_t _ss) { + slaveSelect = _ss; +} +void W5100Class::initSS(void) { + digitalWrite(slaveSelect, HIGH); +} +void W5100Class::setSS(void) { + digitalWrite(slaveSelect, LOW); +} +void W5100Class::resetSS(void) { + digitalWrite(slaveSelect, HIGH); +} + void W5100Class::init(void) { + pinMode(slaveSelect,OUTPUT); + digitalWrite(slaveSelect,HIGH); + delay(300); #if defined(ARDUINO_ARCH_AVR) diff --git a/libraries/Ethernet/src/utility/w5100.h b/libraries/Ethernet/src/utility/w5100.h index c8f22b9b9da..4b7607c7f54 100644 --- a/libraries/Ethernet/src/utility/w5100.h +++ b/libraries/Ethernet/src/utility/w5100.h @@ -137,6 +137,7 @@ class W5100Class { public: void init(); + void select(uint8_t _ss); /** * @brief This function is being used for copy the data form Receive buffer of the chip to application buffer. @@ -330,25 +331,12 @@ class W5100Class { uint16_t RBASE[SOCKETS]; // Rx buffer base address private: -#if defined(ARDUINO_ARCH_AVR) -#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - inline static void initSS() { DDRB |= _BV(4); }; - inline static void setSS() { PORTB &= ~_BV(4); }; - inline static void resetSS() { PORTB |= _BV(4); }; -#elif defined(__AVR_ATmega32U4__) - inline static void initSS() { DDRB |= _BV(6); }; - inline static void setSS() { PORTB &= ~_BV(6); }; - inline static void resetSS() { PORTB |= _BV(6); }; -#elif defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB162__) - inline static void initSS() { DDRB |= _BV(0); }; - inline static void setSS() { PORTB &= ~_BV(0); }; - inline static void resetSS() { PORTB |= _BV(0); }; -#else - inline static void initSS() { DDRB |= _BV(2); }; - inline static void setSS() { PORTB &= ~_BV(2); }; - inline static void resetSS() { PORTB |= _BV(2); }; -#endif -#endif // ARDUINO_ARCH_AVR + + static uint8_t slaveSelect; + static void initSS(void); + static void setSS(void); + static void resetSS(void); + }; extern W5100Class W5100;