Author: Tam Hanna
Target Audience: Entry-level Engineers (0 – 3 Years’ Experience)
Jacob’s Rating: 5 Stars
Microcontroller Basics with PIC is a great book for developers who are just getting started in embedded systems. The book does a fantastic job of covering all the topics that someone new to developing microcontroller-based applications would need to understand. One of my favorite parts of this book is that it doesn’t start with C, but instead starts at the hardware level and uses assembly language to help the reader understand how the hardware works and how software interacts with the hardware. This level of understanding is something that is unfortunately lost on many developers today who are starting their careers working with Python or other high-level languages.
The book does a fantastic job of covering the details involved in working with a microcontroller. The author dives into low-level details like CPU architecture, register maps, arithmetic operations and does a great job at including many diagrams, code snippets and even oscilloscope traces that demonstrate the application output for specific code examples. The book is very hands-on and provides the schematic and code details necessary to duplicate the authors experiments easily. Starting in Chapter 7, the book begins to move to a higher level of abstraction by introducing the C programming language and how a developer can use C to interact with interrupts and peripherals.
Chapter 8 digs into interrupts and timers with the author demonstrating how to use timers control program execution and flow. The author discusses how timers can be used to produce a pulse width modulated signal using a brute force method with the timers and then how it can be generated more easily using a compare and capture peripheral. At this stage in the book, the author leverages Microchips graphical user interface tools to easily configure the peripheral and automatically generate code. I particularly like that the author first started at the low-level hardware and only after the reader understands what is happening and what they do that he moves up to automatic configurators and generated code.
The author then moves on to cover several additional topics that are important to any first book on microcontrollers. Chapter 9 demonstrates how to work with the I2C and SPI peripherals. This is done through both the hardware and through bit banging examples. While you might wonder why one would need to bit bang, there have been several times through-out my career where it was necessary due to available hardware, code, space or just efficiency to bit bang a serial protocol. The examples show how to do this, and the code could easily be reused by the reader.
I would highly recommend this book to any entry level engineers or developers who don’t understand how microcontroller hardware works at its lowest levels. This book does a fantastic job covering those details and helping to bring a developer up to speed on how to get started with microcontrollers. I’ve encountered many entry-level and even some career developers who could really benefit from this book. I particularly enjoyed the coverage of assembly, which I mentioned earlier can give a developer a level of understanding that few embedded software engineers have in today’s abstracted development cycles.