I’ve previously shown that the SAMD21 is slower than the ATMega328P when accessing GPIO ports, however it does have a major advantage performing arithmetic. There’s quite an advantage to a 32-bit processor over an 8-bit processor. I was also interested in seeing the performance impact of using floating point, which is done in software on …
Here’s a topic relevant to both the new books I’m writing. Consider the following small program: char foo[] = {1, 2, 3, 4, 5, 6, 7, 8}; void setup() { Serial.begin(9600); while (!Serial); Serial.println(*(uint32_t *)&foo[0], HEX); Serial.println(*(uint32_t *)&foo[1], HEX); Serial.println(*(uint32_t *)&foo[2], HEX); Serial.println(*(uint32_t *)&foo[3], HEX); } void loop() { } If you run this on …
Before I potentially dive in with writing a Far Inside SAMD21 book I decided to spend some time just looking at the architecture as well as what Arduino does with it. I did find that there is a lot of code overhead. So the potential savings of coding to “bare metal” is very much reduced. …
So I just finished the Still Far Inside The Arduino book and am starting to consider a new project. The Arduino Nano 33 IoT caught my eye. While still a bit more expensive than clone Uno or Nano boards, it is the second lowest cost genuine Arduino board, second only to the Arduino Nano Every. …
My latest book has now become available on Amazon. Still Far Inside The Arduino continues the theme of Far Inside The Arduino and the Nano Every Supplement by using programming techniques and drivers more advanced than what Arduino promotes. Topics include: Distinctions among the various general purpose Arduino boards: ATmega328P based like the Arduino Uno …
Finally I finished the first draft of my next book Son of Far Inside The Arduino* along with writing and testing about 35 example programs, almost all of which had to be tested on Arduino boards using the four different AVR microcontrollers the book covers. I think I spent more time on the example programs …
OK, I was going to give examples where reenabling interrupts was necessary for smooth, error-free operation. But then I hit a snag. It turns out that interrupts cannot be reenabled simply with sei() in the ATmega4809 in the Arduino Nano Every! There is an important difference in operation compared to the other AVR microcontrollers used …
Using a timer/clock interrupt, one that occurs at a regular rate, can be useful in managing tasks, providing a pseudo-operating system with essentially no overhead. The code for each task is laid out one after another in the ISR. For tasks that we want to execute at regular intervals we arrange the task like this, …
Arduino provides a USART driver for treating the data as a stream, basically a never ending sequence of bytes. This follows along a tradition of sorts, basically popularized by UNIX in the 1970’s. However traditional (at the time) computers did I/O by records, blocks or packets, of data. And this is the basic operating method …
The traditional Harris 1-Wire® bus has a protocol that works well for interfacing using timer interrupts. Every bit transferred is in a single time slot that is always initiated by the microcontroller “master”. And the spacing between bits can be as long as desired, in this case the time between timer interrupts, about 1ms. As …