The ATmega4809 microcontroller in the Arduino Nano Every is no longer loaded via a bootloader program, but instead uses a single wire programming interface, Unified Program and Debug Interface, or UPDI. This also has debugging capability, but this is not available with the Arduino IDE.
The ISCP interface (and its 6-pin header) is no longer available. The UPDI pin is permanently connected to the SAM microcontroller that provides the USB connection to the host computer, and the UPDI driver runs on this microcontroller.
A major advantage of this scheme is that the entire program memory is available for applications. Also the fuse bits can be set without having to use a separate AVR-ISP. In particular, the choice of 16MHz or 20MHz clock speeds can be made when loading. 16 MHz is the default, which gives compatibility with the Arduino Nano (or Uno) but, of course, 20MHz will be 25% faster.
To run at 20MHz, add a new board type to the boards.txt file, or modify the existing nona4809 entry. I added a new board “Arduino Fast Every”:
fast4809.name=Arduino Fast Every fast4809.vid.0=0x2341 fast4809.pid.0=0x0058 fast4809.upload.tool=avrdude fast4809.upload.protocol=jtag2updi fast4809.upload.maximum_size=49152 fast4809.upload.maximum_data_size=6144 fast4809.upload.speed=115200 fast4809.upload.use_1200bps_touch=true fast4809.upload.extra_params=-P{serial.port} fast4809.build.mcu=atmega4809 fast4809.build.f_cpu=20000000L fast4809.build.board=AVR_NANO_EVERY fast4809.build.core=arduino fast4809.build.variant=nona4809 fast4809.build.text_section_start=.text=0x0 fast4809.build.extra_flags={build.328emulation} -DMILLIS_USE_TIMERB3 -DNO_EXTERNAL_I2C_PULLUP fast4809.build.extra_flags=-B{runtime.tools.atpack.path}/gcc/dev/{build.mcu} fast4809.bootloader.tool=avrdude fast4809.bootloader.file=atmega4809_uart_bl.hex fast4809.bootloader.SYSCFG0=0xC9 fast4809.bootloader.BOOTEND=0x00 fast4809.bootloader.OSCCFG=0x02 fast4809.fuses.file=fuses_4809.bin menu.mode=Registers emulation fast4809.menu.mode.on=ATMEGA328 fast4809.menu.mode.on.build.328emulation=-DAVR_NANO_4809_328MODE fast4809.menu.mode.off=None (ATMEGA4809) fast4809.menu.mode.off.build.328emulation=
Code should use the defined constant f_cpu to determine the clock frequency. Welcome to faster execution!