AVR Programming: Learning to Write Software for Hardware (Make: Technology on Your Time)
M**E
Such a wonderful book
This book is wonderfully written and truly a joy to work through, it was perfect for me.I feel like recommending to anyone who will listen.A lot of the concepts that previously felt out of reach (avrdude, make, gnu_cc and many many more) finally feel familiar and confortable.Very thankful for this fun book
R**K
Excellent for getting started programming Atmel MCU's
Excellent for getting started programming AVR MCU's.For someone like myself with no microcontroller experience, some general electronics knowledge and lots of programming experience, this book hit the spot. A couple of pointers: - I got the USBTiny programmer from Sparkfun, which works fine with ATmega168's. Just jumper the corresponding pins.- I started with the Arduino IDE, which works as mentioned in the book, but requires some fiddling with boards.txt to get USBTiny to work with atmega's. In the end it all turned out to be more trouble than it's worth. How it builds and flashes is pretty involved and far from transparent. Better to go with WinAVR as mentioned in the book, and just edit your code with good old Emacs. The Arduino IDE gets all wrapped around the axle if you're messing with different processor speeds and baud rates. I never got the USART working right at anything but 9600 baud at 1MHz using the Arduino IDE. It's much easier to just edit the Makefiles, which are very well documented. Also, if you're messing with different AVR chips, you'll want to go this route: the ATTiny chips don't have a USART and the USART.c program doesn't compile for them. You just remove that from the Makefile for ATTiny projects and you're good-to-go. I have no idea what the other reviewer was talking about with WinAVR not working when the Arduino IDE was previously installed on a Windows PC - that was exactly my setup and it worked right away, subject to the following nit:- the avrdude argument -p should be "m168" not "m168p" as stated.- I ran through most of the examples to get going - they pretty much worked as expected.- When I started messing with the ADC, I realized how slow the internal one was and went for a separate chip. The MCP3004 works a lot faster and is fairly easy (and instructive) to interface via SPI. Again, the book does a great job at explaining SPI, and that knowledge translated well.- Another point to note is that some of the projects don't work right if you're connected to the programmer. Rather than plugging and unplugging all the jumpers each time, I attached the programmer to a breadboard with a ZIF socket, and had a separate breadboard and ZIF socket for running, and just shuttled the chip between the two.- Sometimes the book only shows a photo of the breadboard and not the actual wiring diagram. If you have to pick one, the wiring diagram is more clear IMO.I started this about 3-4 weeks ago from ground zero and have gotten through almost the entire book. At this point I feel very confident about working with AVR MCU's going forward.
M**G
Well Worth Five Stars
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. That part of the book alone is incredibly valuable.Anyhow, I give this book five stars because there is so much helpful detail and explanation around everything. You walk away from it understanding not only how things work, but you almost always know why as well. Why, for example, doesn't a servo rotate continuously like a DC motor? Because it has a different function. You'd use it for a joint on a robot's arm that should have a fixed range of motion rather than the perpetual turning you would need for a propeller motor. That type of explanation is plentiful throughout the book. The sidebars are always pertinent and help you think through what you're currently studying. The bottom line is that while your experience in putting together the project on your workbench may be varied, you cannot possibly argue that the material is not excellent. It's top notch. And if your complaint is that the github code is no good, that really should have no bearing on the way you evaluate the book itself, in my opinion. Maybe it makes the difference between a 5 star and a 4 star for some, but it most definitely should not reduce your rating to a 1 or 2 star. That's nonsense. The book's content is still really, really good.This book is terrific. If you're struggling with it, keep pushing on through, or maybe just keep doing Arduino programming until you feel more confident getting closer to the metal. Working there is fun. I'm confident this book can get you there, but it also will require some determination on your part.
M**R
Exactly what I was looking for!
The book offers a comprehensive guide into ATMega features where each feature is explored through building a non-trivial project. And there are a lot of features.For me, the highlights of the book are the following1. Communications via i2c, spi and usart have their own dedicated hardware2. Analog input is not in fact an input but a thing called ADC3. PWM is basically a clever usage of timer3.1. Timers have a TON of applications4. You can build the whole project based solely on interrupts5. Interrupts are very handy6. ATMega chips are fantastic value for moneyand a lot more.In short - I can't recommend it more. This is the best guide into microcontrollers programming for beginners.
M**O
Ótimo livro! Claro e facil de entender
Otimo livro para quem quer sair do arduino IDE e programar com registradores! É uma otima ponte entre as duas linguagens!
A**R
Great guide to microcontrollers
I have recently joined the maker movement and started tinkering around with Arduino and other little electronics project. However, despite the how easy it is to write programs using the Arduino language, I really did not like the fact that it is really not pure C and there was some confusing and mixed information about exactly what language the programs are written in. Coming from a scientific background, I am not afraid to get my hands a little dirty, so I decided that I needed to get to the bottom of it.And so enters this book, which was exactly what I was looking for. AVR chips are programmed in C (or assembly, if that's your thing), and this book explains very well how to, and why you might want to, use the various features of the ATMega168 - timers, interrupts, PWM, ADC, I2C, SPI etc etc.It is not exactly for the faint-hearted and will require a fair amount of commitment to work through all of the various chapters. However, it is very rewarding and I feel much more confident diving into the world of microcontrollers. There are just a few small errors, e.g. typos or graphical, that occasionally detract from the message, but overall this book is excellent and I'm sure I will continue to use it for a long time!Also just an FYI, the Python examples are in Python 2, not 3!
M**I
Bin schon Embedded System Entwickler ;-)
Hallo, ganz klar eine Kaufempfehlung von mir wirklich gut und veständlich erklärt. Wie Hardware und Prgrammierung zusammenkommen. Ich habe zuvor schon in Python und C programmiert, alles aber autodidakt gelernt und nur als Hobby betrieben. Gute IT-Kenntnise und Elektronikkenntnisse über Schaltungen habe ich mir zuvor auch schon angeeignet, auch berufsbedingt beschäftigte ich mich mit IT und Elektronik. Außerdem habe ich zuvor schon mit Raspberry Pi und Arduino experimentiert, nur wollte ich tiefer in die Materie Einsteigen und nicht nur wissen wie ich ein Programm schreibe und auf den Microcontroller flashe. Deshalb dieses Buch.Ich weiß zwar nicht ob das erfoderlich ist, aber es macht das Lernen aus diesem Buch natürlich um Welten einfacher. Aber auf der anderen Seite würde ich sowieso nicht verstehen, warum einer der keine Ahnung von Elektronik hat das Programmieren von Microcontrollern erlernen will, weil diese sei es in Form von einem Arduino oder ähnlichen in der Regel in Elektronikprojekten verwendet werden und zwar zur Steuerung. Natürlich könnte man sich auch nur auf die Entwicklung von Programmen für Microcontrollern spezialisieren, aber meiner Meinung fehlt dann das Grundlagenwissen von dem was man Steuern will.Für Techniker im Elektronik-, IT-Bereich ist es eine tolle Ergänzung und eignet sich auch als Abendlektüre mit einem Arduino und Laptop/PC bewaffnet. Für ehrgeizige Neulinge die vielleicht gerade dieses Thema der Programmierung oder Elektronik besonders interessant finden ein Funke der die Technikbegeisterung auslösen könnte und zu einem Feuer wird, welches das Lernen dieser Fähigkeit und der weiteren notwendigen Grundlagen auslöst. Wer mit einem Buch nicht hart Arbeiten will und viele Stunden für die Freude an der Sache Opfern will, sollte zu einem Roman greifen. Denn nur mit Lesen ist es gerade in der Technik nichts. LG
N**N
Great book on AVR development
With this book, you will learn about programming AVRs, how various components commonly used with microcontrollers work, and be entertained. :-) I'm a C/C++ programmer from way back, however, rather than skipping the asides giving detail or history on an aspect of C, I enjoyed reading what the author had to say, nodding along with agreement. I found the descriptions of how other things (e.g. MOSFETs) work helpful and easy to understand. To cap it all off the projects are fun!
F**T
Perfect transition from Arduino to direct micro-controller programming
Before reading this book, I have been using Arduino boards for a year and I already knew the C programming language. This book was a perfect transition to micro-controller programming. It explains how to configure and use the Atmel micro-controller registers, interrupts and components. The examples in the book are also interesting to do. Now, I know enough to go in the data sheets and make sense out of it. This is exactly what I was looking for!
Trustpilot
5 days ago
2 months ago