---
product_id: 760727
title: "AVR Programming: Learning to Write Software for Hardware (Make: Technology on Your Time)"
price: "7670 kr"
currency: ISK
in_stock: true
reviews_count: 13
url: https://www.desertcart.is/products/760727-avr-programming-learning-to-write-software-for-hardware-make-technology
store_origin: IS
region: Iceland
---

# Advanced programming insights Hands-on hardware interfacing Deep AVR microcontroller control AVR Programming: Learning to Write Software for Hardware (Make: Technology on Your Time)

**Price:** 7670 kr
**Availability:** ✅ In Stock

## Summary

> ⚡ Code hardware like a pro — don’t just build, dominate your microcontroller!

## Quick Answers

- **What is this?** AVR Programming: Learning to Write Software for Hardware (Make: Technology on Your Time)
- **How much does it cost?** 7670 kr with free shipping
- **Is it available?** Yes, in stock and ready to ship
- **Where can I buy it?** [www.desertcart.is](https://www.desertcart.is/products/760727-avr-programming-learning-to-write-software-for-hardware-make-technology)

## Best For

- Customers looking for quality international products

## Why This Product

- Free international shipping included
- Worldwide delivery with tracking
- 15-day hassle-free returns

## Key Features

- • **Boost Your Maker Cred:** Join the elite who write efficient, fine-tuned microcontroller code
- • **Advanced C Programming:** Elevate your embedded coding skills with expert-level techniques
- • **Skip the Beginner Hurdle:** Designed for makers with solid programming and electronics background
- • **Master AVR Microcontrollers:** Unlock precise hardware control beyond Arduino basics
- • **Practical Hardware Integration:** Learn real-world interfacing with SPI, ADC, and custom programmers

## Overview

AVR Programming by Elliot Williams is a must-have guide for intermediate to advanced makers aiming to deepen their understanding of AVR microcontrollers. It bridges the gap between Arduino simplicity and low-level hardware mastery, offering practical insights into programming, timing, and interfacing with real hardware. Highly rated by experienced programmers, this book accelerates your journey from hobbyist to microcontroller expert.

## Description

Atmel's AVR microcontrollers are the chips that power Arduino, and are the go-to chip for many hobbyist and hardware hacking projects. In this book you'll set aside the layers of abstraction provided by the Arduino environment and learn how to program AVR microcontrollers directly. In doing so, you'll get closer to the chip and you'll be able to squeeze more power and features out of it. Each chapter of this book is centered around projects that incorporate that particular microcontroller topic. Each project includes schematics, code, and illustrations of a working project. Program a range of AVR chips Extend and re-use other people’s code and circuits Interface with USB, I2C, and SPI peripheral devices Learn to access the full range of power and speed of the microcontroller Build projects including Cylon Eyes, a Square-Wave Organ, an AM Radio, a Passive Light-Sensor Alarm, Temperature Logger, and more Understand what's happening behind the scenes even when using the Arduino IDE

Review: Great Book, Not for the Novice - I have read the reviews on this book and have seen a variation of opinions. What seems to drive the rating is how well the reader’s expectation of the book matched the experience. I love this book and give it 5 stars because of how I use the book; my expectation and my experience was a match. Make sure you have the proper expectation and you will be happy with this book. Let me start by saying it is my opinion that this book is not for the beginner. If you do not have programming experience, or you have not experimented with electronic circuits or you do not know C this book is not for you (yet). Start with a simple Arduino Uno, buy a kit and get a beginner’s books. I highly recommend books by Simon Monk. I have been coding for 25 years and have been experimenting with electronics since I was eight. I am a hobbyist maker and have written many blogs. I have also written many libraries for a variety of devices and sensors. I have come across the need to have a more finite control over the microcontroller and have more control of performance and timing. If you are familiar enough with the Arduino environment you know that it is suitable for 98% (I made that statistic up but think it is accurate) of the needs makers will come across. But I have come across devices that have such precise timing requirements that I needed to fine tune my code. That’s where this book comes in. I read the datasheets for just about everything I buy. I love to understand every detail of every sensor and microcontroller. Sometimes you uncover “hidden secrets” that you exploit to make your solution exciting and fun. However, this book presents many useful facts about the AVR microcontrollers without the need to dig through the datasheet. The book has given be a much better understanding of the AVR microcontroller as well as added some very useful tools to my bench to solve more complex problems and to write better libraries. I recommend this book to anyone with a medium to advanced level of understanding of AVR programming using the Arduino environment. This book will take your understanding to a much deeper and more advanced level.
Review: 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.

## Features

- Used Book in Good Condition

## Technical Specifications

| Specification | Value |
|---------------|-------|
| Best Sellers Rank | #204,929 in Books ( See Top 100 in Books ) #20 in Circuit Design #29 in Single Board Computers (Books) #91 in Robotics & Automation (Books) |
| Customer Reviews | 4.7 out of 5 stars 259 Reviews |

## Images

![AVR Programming: Learning to Write Software for Hardware (Make: Technology on Your Time) - Image 1](https://m.media-amazon.com/images/I/81F+UmHYBFL.jpg)

## Customer Reviews

### ⭐⭐⭐⭐⭐ Great Book, Not for the Novice
*by D***Y on July 10, 2018*

I have read the reviews on this book and have seen a variation of opinions. What seems to drive the rating is how well the reader’s expectation of the book matched the experience. I love this book and give it 5 stars because of how I use the book; my expectation and my experience was a match. Make sure you have the proper expectation and you will be happy with this book. Let me start by saying it is my opinion that this book is not for the beginner. If you do not have programming experience, or you have not experimented with electronic circuits or you do not know C this book is not for you (yet). Start with a simple Arduino Uno, buy a kit and get a beginner’s books. I highly recommend books by Simon Monk. I have been coding for 25 years and have been experimenting with electronics since I was eight. I am a hobbyist maker and have written many blogs. I have also written many libraries for a variety of devices and sensors. I have come across the need to have a more finite control over the microcontroller and have more control of performance and timing. If you are familiar enough with the Arduino environment you know that it is suitable for 98% (I made that statistic up but think it is accurate) of the needs makers will come across. But I have come across devices that have such precise timing requirements that I needed to fine tune my code. That’s where this book comes in. I read the datasheets for just about everything I buy. I love to understand every detail of every sensor and microcontroller. Sometimes you uncover “hidden secrets” that you exploit to make your solution exciting and fun. However, this book presents many useful facts about the AVR microcontrollers without the need to dig through the datasheet. The book has given be a much better understanding of the AVR microcontroller as well as added some very useful tools to my bench to solve more complex problems and to write better libraries. I recommend this book to anyone with a medium to advanced level of understanding of AVR programming using the Arduino environment. This book will take your understanding to a much deeper and more advanced level.

### ⭐⭐⭐⭐⭐ Excellent for getting started programming Atmel MCU's
*by R***K on February 26, 2015*

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.

### ⭐⭐⭐⭐⭐ Well Worth Five Stars
*by M***G on January 8, 2015*

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.

---

## Why Shop on Desertcart?

- 🛒 **Trusted by 1.3+ Million Shoppers** — Serving international shoppers since 2016
- 🌍 **Shop Globally** — Access 737+ million products across 21 categories
- 💰 **No Hidden Fees** — All customs, duties, and taxes included in the price
- 🔄 **15-Day Free Returns** — Hassle-free returns (30 days for PRO members)
- 🔒 **Secure Payments** — Trusted payment options with buyer protection
- ⭐ **TrustPilot Rated 4.5/5** — Based on 8,000+ happy customer reviews

**Shop now:** [https://www.desertcart.is/products/760727-avr-programming-learning-to-write-software-for-hardware-make-technology](https://www.desertcart.is/products/760727-avr-programming-learning-to-write-software-for-hardware-make-technology)

---

*Product available on Desertcart Iceland*
*Store origin: IS*
*Last updated: 2026-05-26*