The errata list is a list of errors and their corrections that were found after the product was released.
The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.
Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update
| Version | Location | Description | Submitted by | Date submitted |
|---|---|---|---|---|
| Other Digital Version | Circular buffers (3643 of 7353 on Kindle version) Putting Peripherals and Communication Together |
In both cases below, the positions of "read" and "write" in the illustrations provided in the comments should be swapped: |
Daniel Peer | Mar 04, 2025 |
| Page page 30, section: State of Logging 3rd paragraph in section State of Logging |
"In general, the less state held in the module, the better (so that your functions do the same things every time you call them). However, eliminating all state is generally unavoidable (or at least extremely cumbersome)." |
Dunzhi Chen | Oct 17, 2025 | |
| Printed | Page Power consumption 357 |
Measuring power consumption -- The book describes how difficult it is to measure very small values of power consumption. |
Anonymous | Mar 04, 2026 |
| Page 25, Adapter Pattern First paragraph of the Adapter Pattern section. |
I think you confused the Adapter pattern with the Facade pattern. The Adapter pattern is intended to make two components that aren't really designed to work together work together. The Facade pattern is actually the one that makes more complicated interfaces easier to use. |
Shane Kirk | May 15, 2024 | |
| Printed | Page 118 Under "1. Calculate the minimum and maximum prescaler values". |
The formula for calculating minPrescaler and maxPrescaler are identical. Having referenced the online excel sheet shared on Github, I believe the formula for maxPrescaler should be updated to use minCompare in place of maxCompare. The full formula for maxPrescaler now should be: maxPrescaler = clockInput / (goalFrequency * minCompare). |
Anonymous | Jun 24, 2026 |
| Printed | Page 137 Figure 5-5 |
In figure 5-5, the right hand graphic representation called "Contents of processor register" section C) the binary representation is not changed while the hexadecimal representation is changed. |
Rasmus Linusson | May 07, 2024 |
| Printed | Page 137 table, Contents of processor register, third section |
In the last row of the table, |
Paul Evans | Oct 13, 2024 |
| Printed | Page 182 3rd paragraph (not counting the general note) |
Typo in acronym expansion of UART "receiver/transmitter" has been typed as "received/transmitter" |
Rasmus Linusson | May 22, 2024 |
| Printed | Page 182 third paragraph |
“UART (universal asynchronous received/transmitter)…” |
Paul Evans | Oct 13, 2024 |
| Printed | Page 205 Last two lines of the code excerpt at the top of page |
The formula calculating the length of data available in the buffer after a wrap occurs should be: |
Pascal Bodin | Jun 30, 2024 |
| Printed | Page 236 formula at the bottom of the page |
The formula for bandwidth gives bits per second, but is written as, “bytes per second.” |
Paul Evans | Oct 19, 2024 |
| Printed | Page 282 Second paragraph |
The first sentence of the second paragraph says: "The CM may need you to write software to test the firmware before shipment." Shouldn't it be: "The CM may need you to write software to test the hardware before shipment."? |
Pascal Bodin | Jul 14, 2024 |
| Printed | Page 382-384 Figures 14-3, 14-4 & 14-5 |
All three figures are titled "Triangular motion" while Figure 14-4 shows trapezoidal motion and Figure 14-5 shows S-curve motion as described in text body. |
Rasmus Linusson | Jul 13, 2024 |