Hi all,
First I would like to congratulate david for this excellent idea. I
went through you blog and I saw that you are planning to connect the
avr to the usb port using software emulation of USB protocol. I have
myself gone through the code for both obdev's and usbtiny
implementation of the usb protocol in pure softawre. I think a better
idea would be to use the MAX 3420 chip. There is a good library
availaible(public domain) at
http://www.hotkey.net.au/~mjbauer/free_ip.htm
and also a device driver for linux at
http://www.bioinspired.com/users/ajg112/circuits/max3420.shtml
The advantages are many. In the s/w implementation you _must_ watchout
for stuff happening on the bus periodically even if it's not meant for
you. And there are tight constraints on what extra u can do w/o
disappearing from the bus. You presently need 8ksps*1 byte = 8 kBps
bandwidth in both direction, plus some overhead. With the MAX 3420
solution, bus management is not your problem. Much of the protocol is
implemented in hardware. You just talk spi to max 3420. It has 64
bytes(i think) deep bidirectional I/O buffer for bulk transfers plus 4
gp input and 4 gp output pins. Please consider my 2 cents worth of
advice as well.