Category Archives: Microcontrollers

Microcontroller Mondays @ ATX Hackerspace

ATmega8U2/16U2/32U2 Breakout Board

I am hosting a weekly microcontroller study group at the ATX Hackerspace. If you are interested in learning about microcontrollers in a casual setting, come on by at 7:30pm tonight.

Tonight at 7:30pm we will hold our weekly evening of microcontroller exploration, otherwise known as Microcontroller Monday.

The idea is not to have a fixed agenda or format.  This is not a class, though I’m pretty sure everyone who comes will learn something.

Some examples of things we might do on MM:

– start learning about the MSP430 and play with the MSP430 launchpads at the space
– have Danny and Christian teach us about the dsPIC
– build some USB devices and play with LUFA (the open source AVR USB library)
– corrupt Arduino users with the notion that there is something beyond analogWrite()
– discuss related topics, like circuit design, PCB layout, etc.

If any of this sounds interesting, consider stopping by tonight.

I plan to be at the space from 7:30 to around 10PM, but that doesn’t mean people can’t start hacking earlier or stay later.  While this event is open to non-members, since a member needs to be present to keep the space open, non-members should adhere to the 7:30pm – 10pm schedule.

ATX Hackerspace maintains a calendar so you can stay up to date with this and other goings-on at the space.

New Product: ICSPOV

The ICSPOV is a 6-pin ICSP programmer adapter for the Adafruit Industries miniPOV3.

The miniPOV3 is a great kit, but it has one big problem – if you want to change the pre-programmed message to something else, you have to use a crude programming interface called DASA, otherwise known as ‘bit-bang mode’.  This wasn’t a problem back when most PCs and laptops came with serial ports, because most COM ports could handle DASA just fine.  However, these days, computers don’t come with serial ports.  Instead, USB-serial adapters are the most common way to add a COM port to a newer laptop or PC.

DASA does not like USB-serial converters.  What used to be a cheap,  easy programming method is now so slow and unreliable on most USB-serial converters that it is almost unusable.  What was a fun and easy kit is now much less fun when it comes time to change the displayed POV message.  Programming a new message into the miniPOV can take over five minutes depending on your operating system and serial port setup.   That is, if it works at all.

Introducing the ICSPOV:

The ICSPOV aims to solve the problem of programming the miniPOV3 by providing a way to connect a proper AVR programmer instead of using the DASA interface.  The ICSPOV adapts the 9-pin serial connector on the miniPOV3 to a 6-pin ICSP header used by many other AVR projects and supported by most low-cost AVR programmers.   After making one simple modification to the miniPOV3 and editing the project Makefile, an ordinary AVR programmer such as the Adafruit USBTinyISP can be used to program the miniPOV.

Programming times of several minutes are reduced to seconds.

The ICSPOV should work with most 6-pin AVR programmers.  It has been tested with the Adafruit Industries USBtinyISP as well as the Atmel AVRISP mk II, as shown below.


The ICSPOV is completely open source.  Schematics and layout files are available for download.

You can purchase a kit on the ICSPOV product page.

Atmel AVRISP mkII working in Virtualbox

In the past I have had problems getting the Atmel AVRISP mkII to work with Virtualbox.  This can be really irritating if, like me, you want to write code in Linux but are forced to run Windows for Skype and various closed-source development tools (ugh).

Today, it seems to be working.  I can talk to the AVRISP with avrdude and program devices.  Cool!

I’m not sure what I changed.  I’m using Virtualbox 3.2.10 r66523, running on a Windows 7 64-bit host.  The VM/client OS is Ubuntu 10.10.  I created a USB filter for the AVRISP in the Virtual Machine settings; it doesn’t seem to work without it.  That might be what I was missing before.

To avoid having to run avrdude with root priveledges, I created the file /etc/udev/rules.d/10-avrisp2.rules with the contents:

SUBSYSTEM=="usb", SYSFS{idVendor}=="03eb", SYSFS{idProduct}=="2104", GROUP="adm", MODE="0666"

Pretty simple.

Oh, I should add that there is no guarantee other combinations of host/client OS will work.   If you’re getting different results, leave a comment.

AVR Toolchain Installation Instructions for Windows, Mac OS X, Linux

Mitch Altman and I are in the process of writing a book about Making Cool Things with Microcontrollers (for people who know nothing.)

The book features several DIY projects that use AVR microcontrollers.  We’re aiming to teach absolute beginners how to solder, basic electronics, and the process of turning a cool idea into reality by using microcontrollers.

I wrote these instructions about setting up a working avr-gcc environment in Windows, Mac OS X, or Linux.  Mitch and I felt that they could use some beta testing in the real world before bring included in the book, so we decided to make them available here.  We also felt that they might help some people get started with AVRs before the book is available.

We want to make the process of writing and compiling code for the AVR simple and accessible, so we’re not using any fancy IDEs (eg. no AVR Studio).  We also wanted to use the same software on all three operating systems, so Windows-only tools were out.  Instead, we’re using avr-gcc, the compiler behind WinAVR, CrossPack, and Arduino.

I would appreciate any feedback on these instructions.

Here they are:


Mac OS X


Update: I totally rewrote this post after getting feedback that I didn’t properly identify my target audience and explain why I chose avr-gcc.  Sorry!