background preloader

V-USB - A Firmware-Only USB Driver for Atmel AVR Microcontrollers

V-USB - A Firmware-Only USB Driver for Atmel AVR Microcontrollers
V-USB is a software-only implementation of a low-speed USB device for Atmel’s AVR® microcontrollers, making it possible to build USB hardware with almost any AVR® microcontroller, not requiring any additional chip. V-USB can be licensed freely under the GNU General Public License or alternatively under a commercial license. A comprehensive set of example projects demonstrates the wide range of possible applications. Features For a comparison to other USB solutions for microcontrollers please click here. Hardware This diagram shows a typical circuit for a bus powered device (click the image to enlarge). D1 and D2 are a low cost replacement for a low drop 3.3 V regulator chip, such as the LE33. For a prototyping board, please see metaboard. Documentation Resources Download the V-USB package containing a short description and several simple code examples. Related:  Elektronika

Electrónica - Esquemas - TV - Áudio - Digital Burning AVR boot loader with USB TTL Serial Cable I am working with some kids at local high school that ordered a Sanguino kit to put together just after Makerbot went online. The kit was missing some components and others were the wrong size. How ever the big problem was that processor chip did not get the boot strap loader for the Arduino IDE development environment flashed into it. Generally you use a programmer to burn your target program onto an AVR chip, for the Arduino IDE environment we burn a boot loader that lets us upload new programs into the flash memory via the Arduino IDE. There are multiple ways to burn the loader that we need. External ISP or JTAG programmerUse the Arduino-IDE via a parallel port and adapterUse another Sanguino or Arduino as a programmerUse the USB Serial cable TTL-232R in bit banger mode A good article on AVR family programming options is at: What is bit banger mode? avrdude done.

Four Walled Cubicle - LUFA (Formerly MyUSB) LUFA (Lightweight USB Framework for AVRs, formerly known as MyUSB) is my first foray into the world of USB. It is an open-source complete USB stack for the USB-enabled Atmel AVR8 and (some of the) AVR32 microcontroller series, released under the permissive MIT License (see documentation or project source for full license details). The complete line of Atmel USB AVRs and USB AVR boards are supported by the library, as are any custom user boards, via custom board hardware drivers supplied by the user. The Official LUFA Project Logo, by Studio Monsoon Photography The library is currently in a stable release, suitable for download and incorporation into user projects for both host and device modes. LUFA is written specifically for the free AVR-GCC compiler, and uses several GCC-only extensions to make the library API more streamlined and robust. Included with the library source are many demonstration applications showing off the use of the library. Downloads Show/Hide Old Releases

Cockroft Walton Voltage Multipliers The classic multistage diode/capacitor voltage multipler, popularized by Cockroft and Walton, is probably the most popular means of generating high voltages at low currents at low cost. It is used in virtually every television set made to generate the 20-30 kV second anode accelerating voltage from a transformer putting out 10-15 kV pulses. It has the advantage of requiring relatively low cost components and being easy to insulate. It also inherently produces a series of stepped voltages which is useful in some forms of particle accelerators, and for biasing photomultipler tube dynodes. The CW multiplier has the disadvantage of having very poor voltage regulation, that is, the voltage drops rapidly as a function the output current. It is quite popular for relatively low powered particle accelerators for injecting into another accelerator, particularly for heavy ions. Regulation and ripple calculations The voltage drop under load can be calculated as: Noptimum = SQRT( Vmax * f * C/Iload)

electronics I recently started toying around with microcontrollers and built a few simple things, mostly taking other people's projects as a starting point and morphing them into something that does the same thing, but worseWdifferent. this project is based on obdev's RemoteSensor example and their firmware-only USB implementation; the main change is the replacement of the analog sensors with a Sensirion SHT11 digital temperature and humidity sensor. sensor unit the sensor unit consists of an ATTiny45 microcontroller, a SHT11 sensor, and a hoperf RFM12 868 MHz transceiver module. it is powered by 2 AA cells and is expected to give >1 year of battery life. receiver the receiver uses the same RFM12 module and an ATMega8 µC; received data is transmitted via USB to the PC. host software the host software can write out the received data in CSV format and in a one-line-per-value format for integration into the Cricket graphing system. download here's the tgz file with schematics (PNG and eagle) and software.

libusb Microcontrollers and Electronics Project Blog Thursday April 10, 2014 Are you looking for something fresh, update and simple explanation on the microcontrollers and electronics concept? Here at ermicroblog we always bake fresh new projects, tutorials, and ideas. Any sugestions and comments would be most welcome. Have a pleasure reading and hope you enjoy visiting ermicroblog. Feature Video February 2014 Top 10 Pageviews e-Book Basic User’s Experiment Note The “Basic User’s Experiment Note” is based on the popular 8-bit Atmel AVR ATmega328P microcontroller using AVRJazz 28PIN development board. Latest Entry Telepresence Robot using Microchip PIC16F1829 and Atmel AVR ATmega168 I2C Smart DC Motor Controller Microcontroller – Part 2 Thursday September 05, 2013 by rwb, under Robotics. Building the I2C Smart DC Motor Controller with Atmel AVR Microcontroller – Part 1 Wednesday June 12, 2013 by rwb, under Microcontroller. The ISP Breakout Board for Prototyping Your Electronic Circuit Monday February 25, 2013 by rwb, under Yet Another Tips. Read more »

V-USB - A Firmware-Only USB Driver for Atmel AVR Microcontrollers V-USB Reference Implementations RemoteSensor is a more advanced example for using Objective Development’s firmware-only USB driver for Atmel’s AVR microcontrollers (V-USB). RemoteSensor is a wireless thermo- and hygrometer with an USB port on the receiver. You can draw fancy diagrams of temperature and humidity for up to 16 wireless sensors. RemoteSensor is a more advanced example because it utilizes an interrupt endpoint to indicate to the host when new data arrived, demonstrating how V-USB handles a second endpoint. Details The entire system consists of the wireless sensors based on the low cost ATTINY26 microcontroller, the receiver running V-USB on an ATMEGA8, Unix host software based on usblib which logs the measured data to a file in CSV format and a PHP script which integrates diagrams of the data into a web page: If you really need to run the host side on Windows, you can compile it with minGW and libusb-win32. Download Release Notes

USBTiny Mkii Programmer New USBTinyMkII Rev 1.1c boards now available.Rev C features include dedicated ISP recovery clock output. New USBTinyMkII Rev 2.0c now available.Rev C features include dedicated ISP recovery clock output. Reference Board layouts. Description This AVR programmer is LUFA powered which emulates AVRISP-MKII functionality, supporting the programming of the entire 8-bit AVR range via ISP as well as the PDI (for the newer XMEGA AVRs) and TPI (for the 6-pin TINY AVRs). ISP, PDI and TPI Protocols Supported 4MHz ISP Rescue Clock (for mis-set fuses) Fast, native USB operation Switchable Target power (USB-VBUS or target powered; tested from 1.8v to 5v target) Target must be 5v tolerant for USB VBUS power I/O is Buffered for lower voltage devices Led indicators for Ready and Busy conditions Works under Studio in Windows and avrdude 5.10 in Linux Avrdude 5.10 support for ISP, PDI and TPI Comes with 6-pin Atmel-standard pinout connectors and cable. Now Available News and Updates

usbpicprog PWM On The ATmega8 - QEEWiki We know that the AVR lets us turn outputs on and off, but, what if we want to control the brightness of an LED or the speed of a motor? Well the easiest way to do this is to change the voltage of the output but we can fake it. If we take a voltage source and connect it for a second and then disconnect it for a second it will .... well be on for a second then off for a second. Figure 1: ATmega8 - PWM Pins When you take a square wave, its on for a while and off for a while. Duty_Cycle = [ON_time / (ON_time + OFF_time) ] * 100 So if we are on for 1ms and then off for 1ms we will end up with a 50% duty cycle; If we are on for 1ms and off for 3ms we end up with a 25% duty cycle. Output_Voltage = Duty_Cycle * Input_Voltage Now if we take our duty cycle and multiply it by our voltage we will get the output voltage. Remember the Prescaler? The ATmega8 has 3 PWM outputs, 2 are located on timer/counter1 (16bit) and 1 is located on timer/counter2 (8bit). Figure 2: ATmega8 Timer2 (8bit) Fast PWM mode:

Tutorial: Arduino and the AREF pin - Birds on the Wire Welcome back fellow arduidans! Today we are going to spend some time with the AREF pin - what it is, how it works and why you may want to use it. First of all, here it is on our boards: Uno/TwentyTen AREF [Please read whole article before working with your hardware] In chapter one of this series we used the analogRead() function to measure a voltage that fell between zero and five volts DC. But why is the result a value between 0~1023? We measure resolution in the terms of the number of bits of resolution. It is easier to imagine this with the following image: So with our example ADC with 2-bit resolution, it can only represent the voltage with four possible resulting values. With our Arduino's ADC range of 0~1023 - we have 1024 possible values - or 2 to the power of 10. However - not all Arduino boards are created equally. What if we want to measure voltages between 0 and 2, or 0 and 4.6? And therein lies the reason for the AREF pin! So how do we tell our Arduinos to use AREF?