Working on the next book

This book will be a catch-all for a number of topics on my mind.

The family of Arduino boards. As basically revealed in previous posts, I want to address all of the AVR-based boards that are general purpose. Example programs will work on all boards (328P, 2560, 4809, or 32U4 based) even though programmed at the lowest (closest to hardware) level.

Various implementation styles. I’m taking a project that I implemented for an FPGA in a class I taught and moving it to Arduino boards. The program will be implemented in four (or maybe more) ways to compare techniques. Of course it will all be thoroughly explained. This will range from using just the standard Arduino libraries, which basically means blocking functions and no interrupt routines, to using Free RTOS. All should implement the project functionally identically.

Low level interfaces. Non-blocking, interrupt driven SPI, I2C, and USART interfaces. I’ve grumbled about the Arduino library implementations of these in the past but now I’ll present what I consider “fixed” versions.

Communication. Putting the interfaces to good use, the book will go up a level and discuss various USART protocols and radio as well as WiFi communication using external modules. Of course there are Arduino boards that build in communication protocols like Bluetooth and Wifi, but this can be done for a generally much lower cost using add-on boards.

ARM? No, not this time! That will be two books out. I’ve used ARM microcontrollers professionally in the past, so I am familiar with the architecture. But like the Arduino Nano Every turned out to be with the ATmega4809, the radically different interface design requires another “supplement” book. I actually had a project using an AVR being switched to an ARM so have been through the grief before. But ARM chips give a much higher performance at generally lower cost, something that doesn’t seem reflected in Arduino.cc pricing.

Don’t expect another post for a few weeks. I want to concentrate on writing the book and coding.