Actions

AVR Lesson: Setup

From HacDC Wiki

The first step is to get set up with all the necessary hardware and software to start making your controllers do your bidding.


Programmer

A programmer needn't be super-fancy. In fact, you can get by with five wires soldered to a parallel port plug if you'd like. This Instructable steps through making a parallel port programmer. I'll probably make up a cable or two and bring it in to the space if you'd just like to try it out.

If you're getting a little more serious, spend $22 and get a USB-based programmer from ladyada or make your own usbtiny SPI programmer for maybe $10-15ish. If you're making your own, you'll need to flash an AVR with the supplied firmware, but you can do that with a parallel port programmer or just ask one of us to hook you up.

This part may seem daunting -- it's not. Dive in or get someone to help you. The Ladyada kit is a good first/second soldering project.


Software

The standard toolchain consists of a GCC-based C cross-compiler, the AVR-libc libraries, and the software to run your programmer: avrdude. Feel free to write the C or assembler code using whatever editor you like best.

For Windows, it's all put together nicely with WinAVR. Download and install. If you're using a parallel port programmer, you'll need to also run the included giveio.bat file to get yourself permissions.

For Linux, it's not that hard either. I'm most familiar with Ubuntu these days. As of 2008/04, "sudo apt-get install avrdude avr-libc binutils-avr gcc-avr" will set you up. Or fetch tarballs and compile it yourself. (Versions here.)

For Mac, ...


Chips

So you're set to program, but you need a couple chips. This page at AVRFreaks has some of the specs and all the datasheets in one place, but it's a bit overwhelming.

A shortlist of the coolest chips includes:

Tiny13 -- Smallest and cheapest. 8 pins, 5 of them useful. 1k program memory. Goes everywhere. Cheaper and more versatile than a 555 IC. Some hardware SPI/I2C support, but it's a pain to write for.

Tiny45 -- Another 8-pin, but with a high-speed PWM clock and 4k of program memory. ~$0.75 from Digikey. Can be made to run at 16MHz+ using its internal oscillator, making firmware USB a reality. Some hardware SPI/I2C support like the Tiny13.

Tiny2313 -- 20 pins. It's the cheapest/smallest unit with > 5 usable pins. Hardware USART makes serial communication (e.g. with your computer) reasonably simple, which can be sweet for debugging or datalogging.

Mega 48 -- 28 pins. All of the bells and whistles, with 4k program memory. 6 ADC channels, buncha timers, SPI/I2C/USART communications. They'll do what you want. Mega 88, 168 and beyond -- You're writing micro-controller code that requires 16k?!?! Time to learn assembler, parallel out your tasks to a couple chips, or step up to something like an ARM platform, IMO.

Misc. Extras

You're at least going to need some LED's to go blink. Pushbuttons are nice for playing around with inputs. Photocells give your creations sight. Motors and motor drivers give you legs. I'm sure there's more than enough scrounge around the space to get everyone started.

This Instructable details my current setup, and is a good start.