Uno + Circuits@Home USB Shield + Arduino Ethernet Shield == fubar

When I add an Ethernet Shield to an Uno (R2 or R3)+ USB Shield (Rev.2.0) the USB apps that I'm using fail. Using the example sketches from Circuits @ home, USB_desc, USBHIDBootMouse and hub_demo I get an "OSC did not start" error. With acm_terminal, I get an OSCOKIRQ error message.

This after modifying the USB Shield to use D6 for SS and modifying Usb.h for the new SS.

Apps work on the USB Shield without the Ethernet Shield attached and fail with the above error with the Ethernet Shield attached. Ethernet apps work fine in either case.

I asked this question over at Circuits @ Home and ran into a dead-end. Oleg indicates that it's possible that the Ethernet Shield does not release the SPI bus when it's not in use.

So, I have a couple of questions:

Who knows if this is a fatal flaw with the Ethernet Shield or whether it is likely to be fixed in software?

  • OR -
    Should I bail out of the finger-pointing problem, eat the cost and buy a Freetronics Ethernet Shield that, apparently, has solved this problem?

I think my expectations were at fault - I believed that these devices were compatible...

Advice welcome!

amosm:
... the USB apps that I'm using fail.

What have you connected to what? Some links please? What is your code you are trying to run?

If the ethernet shield and the usb shield both have the ICSP connector on the bottom, you will need to jumper the ICSP SPI data lines from the top shield to pins D11-D13.

If the ethernet shield does not have the ICSP connector on the bottom, it should be the top shield.

Add: The Freetronics ethernet shield does not have the ICSP pins, so it would be compatible with the usb shield without any pin jumping, except D10 to another pin. That is the pin the ethernet shield w5100 chip uses for SS.

Thanks for the replies!

Regarding what's connected to what:

I have the Uno on the bottom of the stack, the USB Shield on top of that (with ICSP connected), and the Ethernet Shield on top of that (with ICSP connected). The USB Shield has had it's SS pin "relocated" to D6 from D10.

Regarding what software:

I attempted to run a number of examples from Circuits @ Home. They work with just the USB shield, but fail when the Ethernet shield is added. Would it really be useful to reproduce those example sketches here?

I should have asked what I'm really interested in: has anyone made this stack of devices work? (Not "should it work?" but rather "does it work?")

I should have asked what I'm really interested in: has anyone made this stack of devices work? (Not "should it work?" but rather "does it work?")

If that was your only question, then that saved me some time. I was about to tell you how to enable and disable the ethernet shield SPI interface so it wouldn't interfere with the usb shield. That is digital pin 10. HIGH is disabled, LOW is enabled. The ethernet shield interferes with my microSD card reader the same way it is interfering with your usb shield.

@SurferTim - Thanks!

I can, indeed, confirm that SurferTim's solution (writing HIGH to pin 10) is a workaround for this issue.

Thanks again for the tip.