Hello, welcome back to my channel.
It’s been quite a while, how’ve you been?
In this video, I want to discuss a new Arduino
board that just recently came out, the Arduino
Nano Every.
The Every is a new version of the classical
Arduino Nano that everyone knows and loves
– it has the same physical size and pin
mapping – but instead of the old ATmega328P,
as a microcontroller, this one sports the
8-bit AVR 0-series ATmega4809, which is a
much more modern and advanced microcontroller,
and I had great hopes for this one but, as
you’ll see, not all of them came true.
First, let’s talk about clock speed.
The box says that the Nano Every runs at 20MHz.
Now, there’s no crystal or oscillator component
on the board, but I know that the ATmega4809
has an internal oscillator that can run at
20MHz, so that made sense.
However, something raised my suspicion, and
I decided to look further into it.
First, I wrote a little program that made
the microcontroller output its own system
clock to its CLKOUT pin.
This pin is not connected to any of the regular
Arduino pins, actually on the Every it’s
not connected to anything at all, but I still
managed to touch it with an oscilloscope probe
and this is what I got: a definite 16MHz signal.
If you want further proof, you can take a
look at the OSCCFG fuse of the ATmega4809.
Its last two bits, FREQSEL, tell whether it’s
tuned to 16MHz (value is 1) or to 20MHz (value
is 2).
Run this sketch yourself and see that it is
indeed 1.
And remember, this is a fuse that cannot be
changed by our code or the bootloader, only
through direct programming with an external
programmer.
The interesting part is that time-dependent
Arduino functions, such as delay() or setting
the Serial baudrate, work just fine – meaning
that the source code EXPECTS the Every to
run at 16MHz and not at 20MHz as advertised.
That could still be ok in terms of backwards
compatibility and such, however, remember
that internal oscillators are not as stable
and accurate as external crystals, and can
be easily 1% off or even more from the actual
real-world time.
That’s about a quarter-hour every day.
Now, let’s talk about power.
Here we have some actual good news.
The main voltage regulator, for 5V, is the
MPM3610, whose input range is 6 up to 21 volts,
and can deliver up to 1.2A. The 3.3V regulator
has also been significantly upgraded compared
to the classical Nano, and can now provide
up to 600mA.
Of course, you’d still want to stay away
from these extremes in your projects.
Next on our list is Serial, or, more accurately,
UART communication.
The ATmega4809 has four UART modules in hardware,
numbered 0, 1, 2 & 3.
Out of these, two are readily available on
the Arduino Nano Every.
Module #3 is assigned to the default “Serial”
object; this goes through the on-board ATSAMD11
microcontroller and through the USB cable
to the PC.
In other words, this is the Serial you talk
with through the Serial Monitor.
Module #1, however, is “Serial1”, and
that’s the one that’s connected to physical
pins 0 and 1 of the Arduino board.
This is very good actually, as long as you
remember it’s different from the way it
was on the original Nano.
Advanced users may want to utilize the remaining
two UART modules.
They are not defined in Arduino so you’ll
have to set them up yourself, but luckily
their TX and RX pins are available.
For module #0 they would be pins 2 and 7,
respectively.
For module #2 these are pins 6 and 3 – but
they are not the default pins for this module
and you’ll have to set up the internal port
multiplexer to the alternate pins.
Again, this is advanced stuff and we won’t
cover it here, just remember that the option
to have four UARTs does exist.
Digital and Analog are a sore spot in this
board: the designers practically painted themselves
into a corner by sticking to the old Arduino
Nano conventions.
Because of this, 13 perfectly good I/O pins
of the ATmega4809 aren’t connected to anything
and are totally wasted.
The Nano Every has 8 analog inputs, designated
A0 through A7, and following the conventions,
A4 and A5 also have the alternate function
of I2C communication.
This puzzled me, because looking at the ATmega4809
datasheet, there is no pin in it that can
serve both as an analog input and as an I2C
master.
As it turns out, to allow this double functionality
of A4 and A5, the designers basically short-circuited
two pairs of pins – Port A pin 2 with Port
F pin 2, and Port A pin 3 with F 3.
This hack certainly works, but if one day
you play around with the internal registers
and forget this subtlety, issues and even
smoke will arise.
Looking again at the box, we see that there
are only 5 PWM output pins.
This is certainly not the same as in the old
Nano, or the Arduino Uno for that matter,
which has 6.
This happened because pins 9 and 11 share
the same PWM resource in the ATmega4809, so
they can’t both work.
If you try to analogWrite() to pin 11, you
won’t get the signal you expect.
Was there a better way to arrange the pins
and avoid this problem?
I didn’t go over all the options yet, but
I suspect there isn’t.
So much for backwards compatibility then!
Arduino made a big fuss about the Every being
particularly suitable for PCBs: It has no
components on the bottom, and has castellations
on the sides for easy soldering to the PCB.
Unfortunately, all the pin numbers and names
are at the bottom, so if you’re NOT soldering
it to a custom PCB, just play around with
a breadboard, you won’t be able to see them.
Despite everything I said so far, the voltage
regulators are not the only good things about
the Arduino Nano Every.
First of all, obviously, is the price: an
original Nano Every board costs less than
half of a Nano, excluding taxes and shipping.
That is really impressive.
Second, the ATmega4809 has 48KB of Flash – hence
its name – which is 50% more than the Nano,
and 6KB of RAM which is a fantastic 200% increase.
Unfortunately, these benefits come at a price
of a 75% decrease in EEPROM, to merely 256
bytes.
Naturally, we can’t expect all the Arduino
libraries out there to support this new board,
with the different architecture of its microcontroller.
I was happy to discover that the essential,
common ones do seem to work – here you can
see Adafruit’s NeoPixel strand test working
out-of-the-box, so to speak, with the Nano
Every.
So, in conclusion, should you buy an Arduino
Nano Every?
Well, yea…no.
If you’re an absolute beginner, you’d
be better off with the tried-and-true Nano
and the existing resources for it.
If you’re more advanced, and want to play
with all the cool features of the ATmega4809
itself, it would make more sense to get one
of the evaluation boards offered by Microchip,
or even spin one yourself like I did.
There’s only a narrow range of applications
where it would really make sense to get the
Nano Every and not use the other options out
there.
Of course, if you just like new stuff and/or
want to support Arduino, knock yourself out.
As usual, if you found this video helpful,
please like, share, subscribe, tweet, support,
comment, watch again, clap your hands, re-tweet,
click everything on the screen, pay your taxes
and love thy neighbor.
Thank you for watching.
