I want to port Maxim MAX3421E USB host controller code to Arduino. The code is [censored] here; in addition to that there is some short description on my site( and link to the code). The code is being developed for Microchip 8-bitters, however, the only hardware-specific part of it is SPI peripheral initialization, the rest is written in plain C. I have the following questions:
Does it make sense? The MAX3421E is very nice controller for small micros - it does all the timing, acknowledgements, etc., even I/O buffers are not necessary since it has its own. However, it's 3.3V part and as far as I can see, there is not too many 3.3V Arduinos.
What 3.3V Arduinos are available? So far I can only find one called Pro from Sparkfun. I need something full-size to be able to wear a protoshield.
There is quite a bit of signals to level shift, about 10. It's not a big deal by itself since there will be plenty of space left on the shield board anyway. However, I'd like to avoid extra soldering during prototyping and use 3.3V, at least for now.
I may have to stand on your shoulders pretty soon, have been kicking around an idea for a while. Lots of cameras can be controlled over USB using PTP, including most Nikon DSLRs, many Canons, etc. The USB interface allows you to control pretty much every aspect of the shot. End goal is very portable device (instead of a laptop) that allows you to make fine-tuned bracketed exposures with no limits on number of shots or adjustment, interval shots, etc. The libgphoto2 project has done most of the work figuring out what cameras support which functions.
It means that I would use your work (which you have been so kind as to document thoroughly) as a foundation to build up a higher level application.
You are standing on the shoulders of the Arduino development team, who are standing on the shoulders of the Wiring team, who are standing on the shoulders of AVR-GCC team, and so on.
Please do. I'll be glad to help; hoping to have some time on a weekend to continue porting the code. My biggest problem is lack of C++ knowledge, but I'm working on it.
It took a while but I'm getting there:-). Next one will be describing talking to USB keyboard. Also, I started studying Nikon SDK to see how they implement camera control - doesn't seem too difficult.
This is standard USB host. It supports all USB 2.0 transfers, even isochronous (if device is slow enough). So in theory, working with anything that talks USB is possible - flash drives, webcams, audio, printers, etc.; limiting factor would be Arduino's program memory size.
The shield also have 16 general purpose lines - 8 inputs and 8 outputs, where inputs can also be programmed as interrupt lines. Can be used to control LCD, buttons, and such.