Programming in Arduino

"Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments."

How you can download the appropriate arduino-ide version for you will be explained in the following subsections.
Before you can start using arduino-ide after downloading and extracting it, you have to extend the list of know boards to arduino.

Therefore all you need to do is to extract this zip-file (or this tgz) into your arduino directory. (Old version before Jan. 2017: zip / tgz)
This is the new and recommended way to use tinyUSBboard within arduino IDE.
Please only use stable mainline Arduino IDE version 1.x.. (Download URLs are below.)
Borddescriptions in Arduino 1.8 aren't final and only available as a draft at the moment.

The old way was to copy this text below into "/arduino-####/hardware/arduino/boards.txt".
(Or to use this patch.)

Please also note the different PIN-names (compared to the datasheet) in arduino. (See more)

Arduino for Windows

Here you can download the arduino-ide for windows.

Arduino for Linux

Arduino for Linux is available in two versions: One for 32bit systems, and another for recent 64bit technology.

Arduino for Mac

Arduino for Mac OS X

Programming in C (or assembler)

In order to program appropriate firmwares for tinyUSBboard, you can choose out of many programming languages.
If you want to use famous C language you might want to do this via open source avr-libc and its chain of tools.

Since the toolchain just generates the binary-data, you still need a piece of software to bring it into the MCU.
Because there are some major differences between the available platforms, the following subsections will explain some tools doing the job...

If you want to have some empty skeleton to start with your firmware, you might want to look at my avrskeleton at github.
(Just define environment variable "AVR8TOOLCHAINBINDIR" with the PATH to your toolchain binaries and the Makefile will do everything else.)

In case you want to see/experiment or just play with AVR assembler you can try out this.
There are also nice code(template) generators in the web.


Atmel offers directly two precompiled avr-libc toolchain versions for linux.
One LZMA recompressed version for 32bit systems is available here, and another for 64bit here.
At your raspberry pi (using raspbian), you can use this build.

For flashing the data into tinyUSBboard you can use AVRDUDE.
(avrdude -c usbasp -p atmega8 -D -U flash:w:main.hex)


For using tinyUSBboard with Windows, you first have to install some usb-drivers.

A good programming software I recommend as graphical replacement for avrdude is KhazamaAVRProgrammer (link).

Even there is also an avr-libc port (avr8-gnu-toolchain-installer- available for Windows, you might try out Atmels AVR Studio

Since the new toolchain avr8-gnu-toolchain-installer- is without an installer and thus harder to setup/use, you might want to use older avr-toolchain-installer- available from the mirrors instead.


Using tinyUSBboard with Mac is -->NOT<-- completly untested anymore. Thanks to HE for the pictures!
Hoewever, the more reports the better...

Under Mac you can try (use?) CrossPack for AVR® Development.
It runs on Mac OS X 10.6 or higher and promises to be similar to AVR Studio on Windows.