This file documents changes in the firmware-only USB driver for atmel's AVR microcontrollers. New entries are always appended to the end of the file. Scroll down to the bottom to see the most recent changes. 2005-04-01: - Implemented endpoint 1 as interrupt-in endpoint. - Moved all configuration options to usbconfig.h which is not part of the driver. - Changed interface for usbVendorSetup(). - Fixed compatibility with ATMega8 device. - Various minor optimizations. 2005-04-11: - Changed interface to application: Use usbFunctionSetup(), usbFunctionRead() and usbFunctionWrite() now. Added configuration options to choose which of these functions to compile in. - Assembler module delivers receive data non-inverted now. - Made register and bit names compatible with more AVR devices. 2005-05-03: - Allow address of usbRxBuf on any memory page as long as the buffer does not cross 256 byte page boundaries. - Better device compatibility: works with Mega88 now. - Code optimization in debugging module. - Documentation updates. 2006-01-02: - Added (free) default Vendor- and Product-IDs bought from voti.nl. - Added USBID-License.txt file which defines the rules for using the free shared VID/PID pair. - Added Readme.txt to the usbdrv directory which clarifies administrative issues. 2006-01-25: - Added "configured state" to become more standards compliant. - Added "HALT" state for interrupt endpoint. - Driver passes the "USB Command Verifier" test from usb.org now. - Made "serial number" a configuration option. - Minor optimizations, we now recommend compiler option "-Os" for best results. - Added a version number to usbdrv.h 2006-02-03: - New configuration variable USB_BUFFER_SECTION for the memory section where the USB rx buffer will go. This defaults to ".bss" if not defined. Since this buffer MUST NOT cross 256 byte pages (not even touch a page at the end), the user may want to pass a linker option similar to "-Wl,--section-start=.mybuffer=0x800060". - Provide structure for usbRequest_t. - New defines for USB constants. - Prepared for HID implementations. - Increased data size limit for interrupt transfers to 8 bytes. - New macro usbInterruptIsReady() to query interrupt buffer state. 2006-02-18: - Ensure that the data token which is sent as an ack to an OUT transfer is always zero sized. This fixes a bug where the host reports an error after sending an out transfer to the device, although all data arrived at the device. - Updated docs in usbdrv.h to reflect changed API in usbFunctionWrite(). * Release 2006-02-20 - Give a compiler warning when compiling with debugging turned on. - Added Oleg Semyonov's changes for IAR-cc compatibility. - Added new (optional) functions usbDeviceConnect() and usbDeviceDisconnect() (also thanks to Oleg!). - Rearranged tests in usbPoll() to save a couple of instructions in the most likely case that no actions are pending. - We need a delay between the SET ADDRESS request until the new address becomes active. This delay was handled in usbPoll() until now. Since the spec says that the delay must not exceed 2ms, previous versions required aggressive polling during the enumeration phase. We have now moved the handling of the delay into the interrupt routine. - We must not reply with NAK to a SETUP transaction. We can only achieve this by making sure that the rx buffer is empty when SETUP tokens are expected. We therefore don't pass zero sized data packets from the status phase of a transfer to usbPoll(). This change MAY cause troubles if you rely on receiving a less than 8 bytes long packet in usbFunctionWrite() to identify the end of a transfer. usbFunctionWrite() will NEVER be called with a zero length. * Release 2006-03-14