Paperback: 474 pages
Publisher: Maker Media, Inc; 1 edition (February 17, 2014)
Product Dimensions: 7.5 x 1 x 9.2 inches
Shipping Weight: 1.8 pounds (View shipping rates and policies)
Average Customer Review: 4.5 out of 5 stars See all reviews (66 customer reviews)
Best Sellers Rank: #135,700 in Books (See Top 100 in Books) #15 in Books > Engineering & Transportation > Engineering > Electrical & Electronics > Electronics > Sensors #20 in Books > Engineering & Transportation > Engineering > Electrical & Electronics > Circuits > Integrated #29 in Books > Engineering & Transportation > Engineering > Electrical & Electronics > Electronics > Semiconductors
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.
This book has a lot of merit, and I don't want to lose track of that, so I'll cover the good points first. The book is platform agnostic and attempts to direct the reader in Windows, Linux, and MacOS. I followed along in Windows. A few of the author's remarks lead me to believe that he favors Linux platforms, FWIW. The book makes use of the Gnu AVR toolchain - a great set of tools, but it does ignore the industry standard (Atmel Studio, which runs only on Windows) as a sacrifice to flexibility.Startup was a bear. If you're running Windows and having problems with WinAVR and AVRdude, unnistall the Arduino software - there appears to be a conflict of some sort. This conflict manifests with the "RC=-1" error that the author assures you is a wiring issue. I assure you it may not be...The work is thinly scoped. In the beginning it appears that the author set out to cater to an audience with no C or electronics experience. While you might get by with limited electronics knowledge, a lack of C knowledge is going to kill the newcomer. The author makes extensive use of the avr-libc, but does not always make it clear that he is doing so, it would be very easy for a newcomer to not realize what is going on. While he suggests that the chip spec sheet is a reference, much of the book is incomplete if you have not read it. The examples may work as boilerplate that you can alter to suit your need, but understanding will be on your own.There are numerous editorial mistakes. My overall impression is that the book was rushed to market, perhaps to beat a competing tome, or perhaps the author was behind plan, but it has the feel of soemthing that was rushed to be 'good enough'.
I was pretty surprised to find that some people struggled with this book and rated it, what seems, unreasonably low to me. As I've been thinking this through, I've come to some conclusions as to why there might be such a huge gap between those experiences and my own. In a nutshell, I think it has to do with expectations going in. I have personally been able to be successful implementing the projects without too much trouble, but I went into it already being a seasoned software engineer and for any gaps that the book leaves out for specific implementation, I've been able to fill in with other tutorials online. My main filling in the gap experience comes from youtube--ymmv.You could make the case that a book should only earn a five star review if there were no need to fill in those gaps. I can understand that argument and even agree with it to some extent, however, the gaps in my case were more because I was using a different ISP to program the AVR than he uses and I was also using different chips. To me, though, that's my own problem. If you don't use exactly what the author prescribes for achieving success, you can hardly blame him because you can't make things work doing it your way. Even if you are coming at it with that view point, though, you simply can't deny that the book is very well written and Elliot's communication is concise and clear and not heady at all. He's really down to earth in his explanations. The book covers all the topics you'd want to know about when learning to program the AVR. I really can't think of anything he left out. And nowhere does the book claim to be a beginner book. He's not teaching C programming per se, however, his explanations and hand holding with bit twiddling and the like are brilliant and not in the slightest bit patronizing.