I have an Arduino Nano, and was thinking about getting another one. I saw the Nano Every and was wondering if there was any downside to the Every vs the standard Nano.
It seems to be cheaper and also have a better processor, so is there any reason to get the standard Nano over the Nano Every?
Sorry if this is a dumb question
The classic Nano has ATmega 328p MCU, same as Uno. The 328p is classic AVR ATmega as used in Arduinos from the start and before in many AVR MCU projects for over 20 years now. There is large knowledge base for this MCUs, many ready codes in form of libraries, snippets, tutorials.
The Nano Every and Uno WiFi Rev 2 use a modern version of the AVR based MCU a so called megaAVR_0-series, an ATmega4809. It uses the same AVR CPU architecture in core of the MCU so the compiler is the same as for 328p and co., but the MCU peripherals configuration is very different then in the classic ATmegas. So the old knowledge base about AVR MCU peripherals doesn't help here.
To mention some more differences of classic Nano and Nano Every: Nano uses a bootloader for sketch upload and an external USB chip for USB communication. Nano Every doesn't use a bootloader, it has an on board UPDI programmer in form of a small SAMD MCU which serves as USB adapter for serial communication too.
from the datasheets
- One 16-bit Timer/Counter type A (TCA) with a dedicated period register and three compare channels
- Up to four 16-bit Timer/Counter type B (TCB) with input capture
- One 16-bit Real-Time Counter (RTC) running from an external crystal or an internal RC oscillator
- Up to four USARTs with fractional baud rate generator, auto-baud, and start-of-frame detection
- Master/slave Serial Peripheral Interface (SPI)
- Master/slave TWI with dual address match• Can operate simultaneously as master and slave• Standard mode (Sm, 100 kHz)• Fast mode (Fm, 400 kHz)• Fast mode plus (Fm+, 1 MHz)
- Event System for core independent and predictable inter-peripheral signaling
- Configurable Custom Logic (CCL) with up to four programmable Look-up Tables (LUT)
- One Analog Comparator (AC) with a scalable reference input
- One 10-bit 150 ksps Analog-to-Digital Converter (ADC)
- Five selectable internal voltage references: 0.55V, 1.1V, 1.5V, 2.5V, and 4.3V
- CRC code memory scan hardware• Optional automatic CRC scan before code execution is allowed
- Watchdog Timer (WDT) with Window mode, with a separate on-chip oscillator
- External interrupt on all general purpose pins
●Two 8-bit Timer/Counters with separate prescaler and compare mode
●One 16-bit Timer/Counter with separate prescaler, compare mode, and capture mode
●Real time counter with separate oscillator
●Six PWM channels
●8-channel 10-bit ADC in TQFP and QFN/MLF package
●Programmable serial USART
●Master/slave SPI serial interface
●Byte-oriented 2-wire serial interface (Phillips I2C compatible)
●Programmable watchdog timer with separate on-chip oscillator
●On-chip analog comparator
●Interrupt and wake-up on pin change
for example. interrupt on 4809
An interrupt must be initialized in the following order:
- Configure the CPUINT if the default configuration is not adequate (optional):
- Vector handling is configured by writing to the respective bits (IVSEL and CVT) in the Control A register(CPUINT.CTRLA).
- Vector prioritizing by round robin is enabled by writing a '1' to the Round Robin Priority Enable bit(LVL0RR) in CPUINT.CTRLA.
- Select the priority level 1 vector by writing its address to the Interrupt Vector (LVL1VEC) in the Level 1Priority register (CPUINT.LVL1VEC).
- Configure the interrupt conditions within the peripheral, and enable the peripheral's interrupt.
- Enable interrupts globally by writing a '1' to the Global Interrupt Enable bit (I) in the CPU Status register(CPU.SREG)
ATmega 328p: The external interrupt 1 is activated by the external pin INT1 if the SREG I-flag and the corresponding interrupt mask are set.The level and edges on the external INT1 pin that activate the interrupt are defined in Table 12-1.
To add my $0.02 to Juraj's excellent reply: The Nano is the best choice if you want to have the easiest path learning to use Arduino or creating a project. The Nano Every is the best choice if you want to learn about the ATmega4809 and its megaAVR-0 chip family.
The Every is not all that "backward compatible" with the Nano, especially if you're using Other People's Code that uses "direct access" to the chip peripherals (including some libraries.)
digitalWrite() is slightly slower.
The oscillator is likely to be somewhat less accurate.
for example. interrupt on 4809
They're not really as different as this implies...