Hi,
Just to mention an issue, when using Arduino Ethernet Shield and RFM transceivers.
There is a SPI Slave Select issue between the W5100 of the Ethernet Shield and the RFM interrupts.
(see
http://harizanov.com/2012/04/rfm12b-and-arduino-ethernet-with-wiznet5100-chip/).
Even I believe this has nothing to do with the Slave Select shmitt trigger chip; the solution is very efficient, and consist in disabling the arduino interrupts at W5100 at SS activation.
In my case using an ATMEGA2560 changing the W5100.h library from:
#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); };
To
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
inline static void initSS() { DDRB |= _BV(4); };
inline static void setSS() { cli ();PORTB &= ~_BV(4); };
inline static void resetSS() { PORTB |= _BV(4); sei();};
This issue is particularly true when using a asynchronous RF and Ethernet messages (typically, with a RFM transceiver, an Ethernet Shield and a MQTT broker (PubSubScribe library, 'loop' keep alive function) )
If this looks to be a very old issue (2012) it is not corrected in the Ethernet library of the Arduino IDE package (I have posted a note on the Arduino forum as well).
If we are forced to use unsupported library, may I suggest to add this modification to the new W5100.h library of Kiwi, in order to combine the flexibility of changing the Slave Select pin and the interrupt conflict issue.
Robert