Covers: What the AVRs are, what all the pins do, what they can do for you. A
brief tour of the toolchain, and getting your firmware up and running
on the chip. Reading the datasheets. How to make chips speak digital
to the outside world, pin-by-pin. Just enough C programming fundamentals to
make it work.

Media: Pov demo.tar.gz An example POV toy. This contains 4 different patterns; two diamonds, a trapezoid and a smiley face. Also contains examples of using a character array to drive the POV toy, as well as use of constants to determine how the program runs. - Will

Covers: Gathering simple data from the world, and learn how to spit it back out. A serial link with your computer enables all sorts of tricks, and enables the microcontroller version of printf debugging. Some boolean logic comes in handy here. Along the way, we'll learn a bunch about debouncing switches.

HW: Ghetto logic probe and analyzer: read input on PORTC, display values on the LEDs, write out the value of PINC over serial, interpret/log/whatever using your laptop

OPC (Other People's Code): microTweeter a silly little program to interface twitter with a microcontroller. It is designed to post quotes from a file when a button is pressed on a microcontroller. This was done as learning experience with python, serial communications and social media integration. -Will G.

Covers: Learn about ways to fake analog data into and out of your microcontroller. We'll learn how to switch logic states fast to emulate an analog output, and how to use the built-in analog-to-digital converters to measure the complex real-world.

Covers: Interrupts call subroutines when certain conditions are true. They take a lot of the programming burden off your shoulders, enable the AVR to syncronize to external devices, and are great for super-fast response applications.

Covers: Timers and counters let you time and count events! Up until now, we've been doing a lot with for loops and delays to count the passing of time. It's much easier and more precise to let the hardware do the timing. When you add interrupts and timers together, the world becomes your oyster!

Covers: First, we'll cover using the internal flash memory and EEPROM for data storage. Then I'll demo how to use other people's code/libraries and tie it in to our packages, interfacing with all sorts of random devices for fun and profit. The final (optional) trick will be turning your classboard into a standalone AVR programmer so that you can program raw chips yourself, and outgrow the bootloader.