AT90USBxxx Dual role demonstration with file system
Use of this program is subject to Atmel's End User License Agreement.
Please read file lic_page for copyright notice.
This embedded application source code illustrates how to implement a dual role application with the AT90USBxxx controller.
As the AT90USBxxx implements a device/host usb controller, the embedded application can operates in one of the following usb operating modes:
- USB device
- USB reduced host controller
This source code is usable with the following compilers:
- IAR Embedded Workbench (5.11A and higher)
- AVRGCC (WinAVR 20080411 and higher).
Support for other compilers may required modifications or attention for:
- compiler.h file
- special registers declaration file
- interrupt subroutines declarations
By default the demonstration is preconfigured for dual role USB application. It means that the code generated allows to operate as a device or a host depending on the USB ID pin:
- Attached to a mini B plug (ID pin unconnected) the application will be used in the device operating mode. Thus the application can be connected to a system host (PC) to operate as USB Device Mass Storage (removable drive).
- Attached to a mini A plug (ID pin tied to ground) the application operates in reduced host mode. This mode allows to connect a USB mass storage device or a HID mouse device.
Connect the USBKEY to a PC host system with a miniB (USBKEY side) to plugA (PC host) cable
- A removable drive allows to read/write files on the on-board data flash memory.
- Connected to a USB Mass Storage Device (MSD), files can be exchange with the on-board data flash disk and the MSD.
- The right direction of the joystick allows to read the content of a MSD "OUT" directory and to write it to an on-board data flash "IN" directory.
- The left direction of the joystick allows to write the content of an on-board data flash "OUT" directory to a MSD "IN" directory.
- Connected to a USB Mouse Device, the mouse activity is display on LEDs.
As illustrated in the figure bellow, the application entry point is located is the main.c file. The main function first performs the initialization of a scheduler module and then runs it in an infinite loop. The scheduler is a simple infinite loop calling all its tasks defined in the conf_scheduler.h file. No real time schedule is performed, when a task ends, the scheduler calls the next task defined in the configuration file (conf_scheduler.h).
The sample dual role application is based on several different tasks:
- The usb_task (usb_task.c associated source file), is the task performing the USB low level enumeration process in device or host mode. Once this task has detected that the usb connection is fully operationnal, it updates different status flags that can be check within the high level application tasks.
- The storage task performs SCSI bulk only protocol decoding and performs flash memory access.
- The host_ms_task manages the Device Mass Storage interfaceconnected
- The host_mouse_task is active allows to initialize a connected device mouse and to display mouse activity on LEDs
Generated on Wed Sep 23 09:55:59 2009 for ATMEL by
1.5.3