Getting started with microcontrollers (uC) I view as a major step in one's development in the art of electronics. It should not be taken lightly. For this reason I decided before diving into the topic of uC I thought a preface might be appropriate to cover a number of issues so they don't need to be delt within an article. Also it will give you some understanding of what will be expect of you in order to get started and if you should seriously look at wither you are truly ready for this.
In the music world many verbal wars are fought over things like guitars, amps, tubes, strings, effect, music style, technique, etc. We see it with effects too like types of transistors, opamps, resistors, switches, cases, LEDs, etc. Well it happens in the computer world too and its not just Star Trek vs. Star Wars.
There are wars fought over uC families, programming languages, programming style, method-ologies, algorithms, hardware and software preferences, etc. The honest truth is despite any claims no one thing is the absolute best at everything otherwise we would only be using one thing and such diversity would not be needed. I usually say that one should right tool for the job but that creates a problem for yourself as you probably don't have enough knowledge to know what to choose. For this reason I will be making a few suggestions to get you going. I'm not saying the suggestions are the best nor am I interested in arguing. These suggestions are to form a basis for the follow articles for consistency sake.
This is going to be the basic starter development platform that will be used through out these first collection of articles.
Processor Family: Atmel AVR 8-Bit RISC
Processor Model: Atmel Tiny13 AVR
Programmer/Development board: Atmel STK500
Programming language: GNU GCC (Embedded C)
As we go along various topics I will glance over details sometimes that others may cover. This is not to say you should not learn these details or that you can get away without knowing it. You do need to learn it eventually but at this point we are going to turn something of blind eye so we can focus on the topic at hand.
I will not be teaching basic electronics. If you do not know how an LED works or Ohm's law then you should reconsider before moving on. Things will not get any easier from this point on without an understanding of electronics.
I will not be teaching you C. I will be teaching how to program a uC in C. If you don't know how to program in C then I suggest you do some hunting around and learn. There are many good books on C. Popular books like Sams' "Teach Yourself C in 24 hours" and Sams' "Teach Yourself C in 21 days" can be found in used book stores and online cheap will do the job. Of course there many websites on C as well that you can use. You do not need to know how to do absolutely everything in C. Here is a list of some basic topics you should be familiar with in order to get started:
Declaring variables and their different data types and modifiers.
Operators (including bit operators!!!)
Declaring functions with and without parameters/arguments
Libraries and Headers
More advanced topics that you will want to know about later:
Data Structures and Unions
The cost of all the hardware not including the computer should be around $100US.
The cost of all the software not including the OS should be around zero. I like zero.
The cost of all the human-ware not including the drinks should be around what you think its worth.
I hope I haven't scared you too much. Programming uC can be alot of fun as I hope you will soon see. Lets get the show going.
Your Tone God,