123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- This is the Readme file for the directory "examples" of AVR-USB, a firmware-
- only USB driver for AVR microcontrollers.
- WHAT IS IN THIS DIRECTORY?
- ==========================
- This directory contains examples which are mostly for educational purposes.
- Examples can be device firmware only, host software only or both. Here is
- a summary:
- custom-class
- A custom class device with host software based on libusb. It demonstrates
- the straight forward way of sending small amounts of data to a device and
- receiving data from the device. It does NOT demonstrate how to send large
- amounts of data to the device or how to receive data generated on the fly
- by the device (how to use usbFunctionWrite() and usbFunctionRead()). See
- the hid-data example for how usbFunctionWrite() and usbFunctionRead() are
- used.
- hid-custom-rq
- This example implements the same functionality as the custom-class example
- above, but declares the device as HID. This prevents the "give me a driver
- CD" dialog on Windows. The device can still be controlled with libusb as in
- the previous example (on Windows, the filter version of libusb-win32 must
- be installed). In addition to the features presented in custom-class, this
- example demonstrates how a HID class device is defined.
- hid-mouse
- This example implements a mouse device. No host driver is required since
- today's operating systems have drivers for USB mice built-in. It
- demonstrates how a real-world HID class device is implemented and how
- interrupt-in endpoints are used.
- hid-data
- This example demonstrates how the HID class can be misused to transfer
- arbitrary data over HID feature reports. This technique is of great value
- on Windows because no driver DLLs are needed (the hid-custom-rq example
- still requires the libusb-win32 DLL, although it may be in the program's
- directory). The host side application requires no installation, it can
- even be started directly from a CD. This example also demonstrates how
- to transfer data using usbFunctionWrite() and usbFunctionRead().
- usbtool
- This is a general purpose development and debugging tool for USB devices.
- You can use it during development of your device to test various requests
- without special test programs. But it is also an example how all the
- libusb API functions are used.
- More information about each example can be found in the Readme file in the
- respective directory.
- Hardware dependencies of AVR code has been kept at a minimum. All examples
- should work on any AVR chip which has enough resources to run the driver.
- Makefile and usbconfig.h have been configured for the metaboard hardware (see
- http://www.obdev.at/goto.php?t=metaboard for details). Edit the target
- device, fuse values, clock rate and programmer in Makefile and the I/O pins
- dedicated to USB in usbconfig.h.
- WHAT IS NOT DEMONSTRATED IN THESE EXAMPLES?
- ===========================================
- These examples show only the most basic functionality. More elaborate
- examples and real world applications showing more features of the driver are
- available at http://www.obdev.at/avrusb/projects.html. Most of these
- features are described in our documentation wiki at
- http://www.obdev.at/goto.php?t=avrusb-wiki.
- To mention just a few:
- Using RC oscillator for system clock
- The 12.8 MHz and 16.5 MHz modules of AVR-USB have been designed to cope
- with clock rate deviations up to 1%. This allows an RC oscillator to be
- used. Since the AVR's RC oscillator has a factory precision of only 10%,
- it must be calibrated to an external reference. The EasyLogger example
- shows how this can be done.
- Dynamically generated descriptors
- Sometimes you want to implement different typtes of USB device depending
- on a jumper or other condition. AVR-USB has a very flexible interface for
- providing USB descriptors. See AVR-Doper for how to provide descriptors
- at runtime.
- Virtual COM port
- Some people prefer a virtual serial interface to communicate with their
- device. We strongly discourage this method because it does things
- forbidden by the USB specification. If you still want to go this route,
- see AVR-CDC.
- Implementing suspend mode
- AVR-USB does not implement suspend mode. This means that the device does
- not reduce power consumption when the host goes into sleep mode. Device
- firmware is free to implement suspend mode, though. See USB2LPT for an
- example.
- The projects mentioned above can best be found on
- http://www.obdev.at/avrusb/prjall.html
- where all projects are listed.
- ----------------------------------------------------------------------------
- (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH.
- http://www.obdev.at/
|