About 5 years ago I took my then 6 year old son to a robotics workshop. At the time I had not much more than a basic understanding of electric circuits. I'd built small electric motors and crystal radios from kits as a kid, but in reality, I couldn't have told you the difference between a shift register, a microcontroller, and a 555 timer. Still, I became fascinated with the possibilities of using the brains of the small robots for other interactive projects. A friend mentioned Arduino and I bought a Duemilanove. I learned a lot from it.
But many of the projects I've conceived require only one or two I/O ports, and even though Arduino boards are comparatively cheap, it still seems a waste to leave 30 bucks worth of hardware inside a project that does little more than rotate a servo or blink a light in response to an input. I get things made, and then I am loathe to take them apart even though I need the board for another project.
A couple of years ago I decided that what I really wanted was to get "much closer to the metal" by breadboarding the projects to test, then wiring them up permanently on perfboard, or as "dead bugs" powered by drycell batteries. Most of the basic Atmel/AVR chips are around a buck and most of my projects don't need more than five bucks worth of other components, so if I could wire and program AVRs directly, avoiding the cost of the Arduino board, I could make up projects that I could maintain permanently, or give away with little remorse about the price of the parts.
In my early attempts I bought a USBtinyISPkit from LadyAda and made a start following her tutorials at ADAFRUIT. Ms. Fried and her team do a great job, but I didn't have a lot of free time to hunt down internet resources to help me develop the projects I had in mind. I wanted a nice reference book that would hold my hand through the process of setting up AVRs and modifying my Arduino projects, showing me the tool kit all in one place without the need to fumble around on the 'net for answers to basic questions. The books on the market at the time were aimed at engineers, above my knowledge level and beyond my need. I put the project on hold.
But when this book was announced, it seemed to be exactly what I was looking for. I ordered it right away and then waited impatiently for spring break so I could dive into it.
I am not disappointed. This book is a great guide. I quickly was able to blink a simple "hello world". I followed Mr. William's instructions to use my Arduino as a programmer. Then I repeated the process using my AdaFruit programmer.
Though I already had some experience with Arduino, Basic Stamp, and Picaxe microcontrollers, I don't think any of that experience was necessary for me to get rolling with the AVR using this book as a guide.
As a school teacher, I frequently try to put myself in the place of may students and while AVR programming is a bit above the grade level I teach, I am fairly confident that any motivated beginner able to pass algebra could dive straight into AVR programming following this guide. Mr. Williams does not assume a lot of previous knowledge, but on the other hand, he also doesn't insult the intelligence of more advanced experimenters. If you have programming and electronics experience, but haven't messed with microcontrollers, I think you will still find this book useful.
Moreover, if you are interested in learning to program but become bored with the sorts of projects you find in a straight ahead programming text, you may find that the blinky light, buzzy beeper, and whirring motor sorts of projects in this book are a bit more engaging than the manipulation of text strings and conversion of temperature tasks that live on screen alone.
I have along way to go to become a true master of microcontrollers, and a complex work life frequently causes me to put aside my hobby projects for weeks at a time. But so far, this book is proving to be an outstanding guide to AVR programming.