This is the Readme file for the V-USB example circuits directory. CIRCUITS IN THIS DIRECTORY ========================== Since USB requires 3.3 V levels on D+ and D- but delivers a power supply of ca. 5 V, some kind of level conversion must be performed. There are several ways to implement this level conversion, see the example circuits below. with-vreg.png and with-vreg.sch (EAGLE schematics): This circuit uses a low drop voltage regulator to reduce the USB supply to 3.3 V. You MUST use a low drop regulator because standard regulators such as the LM317 require at least ca. 2 V drop. The advantage of this approach is that it comes closest to the voltage levels required by the USB specification and that the circuit is powered from a regulated supply. If no USB cable is used (connector directly soldered on PCB), you can even omit the 68 Ohm series resistors. The disadvantage is that you may want to use other chips in your design which require 5 V. Please check that the AVR used in your design allows the chosen clock rate at 3.3 V. with-zener.png and with-zener.sch (EAGLE schematics): This circuit enforces lower voltage levels on D+ and D- with zener diodes. The zener diodes MUST be low power / low current types to ensure that the 1k5 pull-up resistor on D- generates a voltage of well above 2.5 V (but below 3.6 V). The advantage of this circuit is its simplicity and that the circuit can be powered at 5 V (usually precise enough if the cable drop is neglected). The disadvantage is that some zener diodes have a lower voltage than 3 V when powered through 1k5 and the choice of components becomes relevant. In addition to that, the power consumption during USB data transfer is increased because the current is only limited by the 68 Ohm series resistor. The zeners may even distort the signal waveforms due to their capacity. with-series-diodes.png and with-series-diodes.sch (EAGLE schematics): This is a simplified low-cost version of the voltage regulator approach. Instead of using a voltage regulator, we reduce the voltage by the forward voltage of two silicon diodes (roughly 1.4 V). This gives ca. 3.6 V which is practically inside the allowed range. The big disadvantage is that the supply is not regulated -- it even depends strongly on the power consumption. This cannot be tolerated for analog circuits. tiny45-rc.png and tiny45-rc.sch (EAGLE schematics): This is mostly an example for connecting an 8 pin device using the internal RC oscillator for system clock. This example uses series diodes to limit the supply, but you may choose any other method. Please note that you must choose a clock rate of 12.8 or 16.5 MHz because only the receiver modules for these frequencies have a PLL to allow higher clock rate tolerances. GENERAL DESIGN NOTES ==================== All examples have D+ on hardware interrupt INT0 because this is the highest priority interrupt on AVRs. You may use other hardware interrupts (and configure the options at the end of usbconfig.h accordingly) if you make sure that no higher priority interrupt is used. If you use USB_SOF_HOOK or USB_COUNT_SOF in usbconfig.h, you must wire D- to the interrupt instead. This way the interrupt is triggered on USB Start Of Frame pulses as well. Most examples have a 1M pull-down resistor at D+. This pull-up ensures that in self-powered designs no interrupts occur while USB is not connected. You may omit this resistor in bus-powered designs. Older examples had a pull-up resistor instead. This is not compatible with the zener diode approach to level conversion: 1M pull-up in conjunction with a 3.6 V zener diode give an invalid logic level. All examples with ATMega8/88/168 have D+ at port D bit 2 (because this is hardware interrupt 0) and D- on port D bit 4 because it is also a clock input for timer/counter 0. This way the firmware can easily check for activity on D- (USB frame pulses) by checking the counter value in regular intervals. If no activity is found, the firmware should (according to the USB specification) put the system into a low power suspend mode. ---------------------------------------------------------------------------- (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH. http://www.obdev.at/