To summarise: I can't get an Arduino Nano to work with a USB Host Shield.
I have a project that is fully functional that I am trying to tidy up and improve. The existing project uses an Uno with a USB Host Shield and Adafruit RGB LCD Shield all stacked together. I then have cables running from the top of the LCD shield to an external component (RC transmitter). My intention is to condense it all down to a custom PCB with a thinner form factor, no cables, and preconfigured components to minimise assembly. I would like to sell this product, albeit in very small volumes.
To do this, my thoughts are to use an Arduino Nano, regular USB Host Shield (because I can't find a smaller one), and a lower cost LCD Shield than the Adafruit one, all mounted on headers on a custom PCB, so that once the headers are soldered I can just drop the boards on.
The problem I'm having is that I'm currently breadboarding the connections between a Nano and USB Host Shield, and can't get my sketch to run. Initially I just connected what seemed to be the necessary pins (5V, GND, D7-13), but when uploading my sketch or example sketches like PS4USB I consistently get the 'OSC did not start' error. Reading around this seems to indicate a problem with the connection between the two boards, so I proceeded to connect every single pin, but still the same issue. Somewhere said the Nano can't power the USB Host Shield sufficiently, but my USB peripheral was fully powered when plugged in; still I tried providing external power and same issue.
My understanding is that the Nano is just a small form factor Uno, but I'm wondering if there is some issue that means my idea of substituting it won't work.
I'd really appreciate any help as I feel like I've hit a dead end. If I can't make progress my alternative plan is to mount the Uno upside down on male headers
customcontroller - I tried connecting jumpers from the 6 (2x3) ICSP connectors on the Nano, and also ensured that the 3.3v and RST pins were wired, but still had the same issue. Should I make sure NOT to wire any pins (i.e. D10-12) if they are connected by the ICSP?
xfpd - thanks for that link, I'll look into it some more.
I connected a Leonardo and UHS board via jumper wires. The wiring should be the same for Nano and UHS. I do not have a Nano handy.
Connect 6 pins on the ICSP connector.
Connect 3.3V, 5V, and ground.
On the UHS board connect the SS pin to the D10 pin on the Uno/Nano.
On the UHS board connect the INT pin to the D9 pin on the Uno/Nano.
At this point, the Leo successfully ran the board_qc example and displayed the USB descriptors of a USB keyboard. Connecting more pins should not hurt as long they connect straight through.
EDIT: I found an Uno clone and verified it works with the same wiring.
EDIT2: D9 and D10 fixed. Was reversed.
Thanks so much for going to this effort. I replicated what you did, and tried this wiring setup between my Uno and the UHS, and had a successful test.
I then replicated the wiring on the Nano and had a failed test:
Circuits At Home 2011
USB Host Shield Quality Control Routine
Reading REVISION register... Die revision invalid. Value returned: 00
Unrecoverable error - test halted!!
0x55 pattern is transmitted via SPI
Press RESET to restart test
I have 2 different UHS and both had the same result. I only have the one Nano so couldn't test a different one of those, but this is making me think the pinout of the Nano is different to the Uno?
I note from this Arduino Nano — Arduino Official Store that the Nano has SS on pin 10 (rather than 9 according to your wiring), and no INT. I don't really know what I'm talking about but do I somehow need to allocate INT to a pin?