Arduino has long used Atmel (now Microchip) 8-bit AVR architecture microcontrollers. The ATmega328P, ATmega32U4, and ATmega2560 have been discussed here. Arduino no longer is “in bed” with Microchip, but there are two other Microchip microcontrollers used in Arduino boards, the ATmega4809 and the SAMD21. Both of these are favorites of mine. ATmega4809 The ATmega4809 is …
One of the features of most microcontrollers is that they allow easy access to connected peripherals like sensors and actuators. This allows fast, accurate, and inexpensive operation. However some recent Arduino boards use microcontrollers that obfuscate the underlying hardware interfaces. A look into the Arduino Library for these parts show that they are calling vendor …
The ARM-based (SAMD21) Arduino Nano 33 IoT might have been rushed into production based on a somewhat deficient assignment of Timer/Counters to PWM pin functions. Arduino documentation claims 11 PWM pins: D2, D3, D5, D6, D9, D10, D11, D12, A2, A3, and A5. However the following is not documented: This means there are only really …
The AVR-based Arduino boards use a Counter/Timer overflow interrupt to implement the system tick that is used in the micros(), millis(), and delay() functions. The SAMD21-based Arduino boards use the SysTick counter to implement the same functionality, but seeking out how it does it is a bit move involved. Looking at things top-down, this functions …
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. …