Official Assignment Description:
'read a microcontroller data sheet
program your board to do something, in as many different programming languages as possible'
Step 1: Design the circuit in Eagle. Eagle was pretty easy to learn and use, but the process / program has some annoying quirks..first, make sure you set the
'grid' to finest (or you will have trouble getting your wires to go where you want them); secondly, double check that the parts you are using
actually exist in the Fab class inventory even though you will probably not find the right parts in the Fab Eagle library (standard size is 1206).
I'm a big fan of the Sparkfun Eagle library, which has pretty good explanations for parts. I added a power regulation circuit (based
on what I'd seen on other boards) [blue], added easier connections for 4 ADC channels [red], added and bank of +/-Vout pins [orange], and added an
ICSP connector for two servo outputs [green]. A very useful Eagle tutorial: http://www.sparkfun.com/tutorials/109
Serial Echo Hello-World Board.sch , Serial Echo Hello-World Board.brd
Step 2: Mill out the circuit and stuff it. Test all connections with multimeter and test power circuit with 9VDC supply.
serial echo hello world board traces.png
Step 3: Now time to program. This was probably the most difficult of the process...not because it's hard...but because there are about
one thousand ways of doing this and ten thousand things that can go wrong. In general, I found these two tutorials to be most helpful:
Understanding AVR
Beginning Embedded Electronics 2-4
Good Example Programs
Here is the basic process I followed to make my LED blink:
Step 4: Try the same program in Assembler. Here's a nice
website for learning etc, and here's a great document
with helpful examples.
AVRAssembler1.asm
Step 5: Try another program (back in 'C') that will turn the LED on when the button is pressed.
button.c
Step 6: Try a program to enable one-way Serial Communication with my computer via FTDI cable. As I am using Windows 7, I had to download
Tera Term onto my computer.
printing.c
Step 7: Now try to write a program that commands two servos and prints status for debugging purposes.
servo.c