Go Down

Topic: USnooBie Kit - AVR USB Device Dev Kit (Read 5437 times) previous topic - next topic


The USnooBie is a microcontroller kit that does not require any sort of AVR programmer or USB-to-serial converters to load and run compiled code. It's hardware design allows the user to develop low cost USB devices with Atmel's AVR ATmega microcontrollers. It can also be used to develop projects which are not USB devices.

Check out more details and all the tutorials I wrote and filmed


Coding Badly


The 2nd push button is used to activate the bootloader, please see the usage guide to learn how it works

There is no good way to make a auto-reset function because I am not using a USB-RS232 converter. A timed bootloader is also annoying. The button occupies one of the USB data lines being reserved so it causes minimal loss of available pins.


I just wrote a page detailing how this can be used with the Arduino


Nov 13, 2010, 05:36 am Last Edit: Nov 13, 2010, 05:40 am by carl47 Reason: 1
5 stars from me.

Really nice work. Using the arduino IDE to upload programs direct
is a real plus.


If you use the Arduino IDE then you can't use V-USB though, I'm going to see about writing a core that works with V-USB. The problems will arise from whether or not Arduino is smart enough to compile .S files, the timer interrupts, and also functions which disable interrupts.


Nov 14, 2010, 06:55 am Last Edit: Nov 14, 2010, 07:37 am by carl47 Reason: 1
The arduino uses AVR GCC compiler for Atmel AVR RISC processors.


All available interupts are handled by the compiler:


When you upload using the arduino IDE it loads a hex file(program) into flash memory.

I thought I understood what you were intending.
In your instructions you state:

To upload a sketch, just activate the bootloader
(press and release the reset-button while holding down the bootloader-activation-button, see the usage guide) and then press the "Upload" button in Arduino.

What is being uploaded?

If it's the sketch program  then that would be
good enough to qualify for the 5 stars.

Looking at:


Being able to use that from the IDE would give extra credits.


Nov 14, 2010, 07:46 am Last Edit: Nov 14, 2010, 07:47 am by wortelsoft Reason: 1
Have a look at the metaboard how they implemented the bootloader. They use usbasp loader which is also based on V-USB and it works with the arduino IDE except for the serial monitoring.


Yep that's my question too.

Can you use the arduino Serial commands over the USB port?

Sorry couldn't see the answer on your website.



Carl, I think I worded my last post wrong, what I meant was

The timer overflow interrupts used by the Arduino core to keep track of millis may cause higher interrupt latency for the INT0 external interrupt. Also there are Arduino core functions which disable interrupts globally such as the microsecond delay functions.

V-USB requires low interrupt latency and also for the interrupts to be enabled all the time. Hence I think I need to modify the Arduino core so that it is friendly with V-USB


trialex, you can't use the serial monitor without connecting a serial port or a serial port to USB converter.

I hope all Arduino users understand that the serial port functionality usually comes from a built-in FT232 chip, a FT232 cable or similar, or the ATmega8U2 (on the Uno board) which does the exact same thing as a FT232.

I did not include this FT232 because it would add to the cost and size significantly, and many Arduino derivatives do not include this chip or cable.

You are free to purchase an FT232 cable separately in order to use the serial port monitor, but unlike Arduino, it is not a requirement for USnooBie to be programmed.


Nov 14, 2010, 09:53 pm Last Edit: Nov 14, 2010, 10:21 pm by carl47 Reason: 1
Thanks for your answer. You completely explained the interrupts question.

I understand now.

For the arduino user the lack of serial coms could be a minus for some applications.


It was never originally designed for Arduino users. I hoped to create something that lets people experiment with real USB devices before taking their design from a development platform to a standalone device.

I don't even think it's practical to compile V-USB with Arduino. I'm hoping some brave Arduino users will get bored with just reporting data back from the serial port and switch to a good development environment instead and try out V-USB. I have a few videos showing you how to work with V-USB and also writing computer side drivers. http://frank.circleofcurrent.com/usnoobie/tut_proj.php

If you really need the serial port, just buy the FTDI cable and connect it to the TX and RX of the ATmega, just like how most Arduino derivatives requires you to anyways.


Nov 15, 2010, 09:13 pm Last Edit: Nov 15, 2010, 09:28 pm by carl47 Reason: 1
Frank I did not mean to detract from your achievement.

USB is very complicated, but it is also the future of PC connections.

From my brief look at your work, I can see that you are proficient
in what are the "black arts" to some of us.

I would really like to learn from your work, unfortunately time is very

When I first looked at your kit I thought it could be a holy grail.
Full arduino without the serial chip.

I hope that you have inspired some arduino uses to get into USB projects.

I'm sure your kit would be a great entry point.


Frank I did not mean to detract from your achievement.

I didn't take it as such, I was just explaining.

USB is not complicated once you take some time to understand. What I think USB is great for is when you need to give meaning to your data. HID reports are organized into "usages" and requests have a header that contains parameters such as "request type", "index", and "value". This makes code easier to write, maintain, and understand.

http://www.beyondlogic.org/usbnutshell/usb1.shtml is a great resource

It is also possible to program the USnooBie itself to become a serial port device but according to what I've read, this may not work on all platforms and will take up a lot of CPU time on the ATmega.


If you use the Arduino IDE then you can't use V-USB though, I'm going to see about writing a core that works with V-USB. The problems will arise from whether or not Arduino is smart enough to compile .S files, the timer interrupts, and also functions which disable interrupts.
The Arduino IDE (as of ~0018 onwards) will happily compile .S files as that's what I use for my VUSB for Arduino project (http://code.google.com/p/vusb-for-arduino/ a.k.a http://code.rancidbacon.com/ProjectLogArduinoUSB).

In order to get it working I disabled the millis() related timers as the ISR take too long to complete. The guy that wrote V-USB thought there was room to make the ISR used for the timer more efficient but I went with the easy option (partly because doing otherwise would mean editing the core Arduino files) and no-one else has provided anything different, yet.


Go Up