A Firmware-Only USB Driver for Atmel AVR Microcontrollers
A USB device without dedicated USB hardware
AVR-USB is a firmware-only implementation of a USB 1.1 compliant low-speed device for Atmel's AVR microcontrollers. It runs on any AVR microcontroller which has at least 2 kB of Flash memory, 128 bytes RAM and can be clocked at 12 MHz. No UART, timer, input capture unit or other special hardware is required (except one edge triggered interrupt).
AVR-USB can be licensed freely under an Open Source compliant license or alternatively under a commercial license.
Features
* Fully USB 1.1 compliant low-speed device, except handling of communication errors.
* Supports two endpoints: one control and one interrupt endpoint.
* Transfer sizes up to 254 bytes.
* Comes with freely usable USB identifiers (Vendor-ID and Product-ID pair).
* Customizable sections are written in "C" and are well commented.
* Delivered with fully functional example applications.
* Only about 1400 to 1500 bytes code size for basic functionality.
* You can choose the License: Open Source or commercial
http://www.obdev.at/products/avrusb/index.html