user23325: If you go to the official Arduino Nano Every page and click the Tech Specs tab, you'll see that it lists it as running at 20Mhz.

Turn On Verbose Compile
However, if you go into the Arduino IDE and go to File...Preferences... and turn on the Show Verbose Output during: compilation then you can examine how the board is actually set when a program is uploaded.

Examining the Output
When you look at that output you will see that it seems to be setting the board to run at 16Mhz.

Am I Looking At This Properly?
It looks to me as if the board is actually set to run at 16Mhz, right?
Am I looking at that properly?
Extra Question
I'm attempting to confirm this because I am :

writing code in Arduino IDE
Compiling in Arduino IDE (to generate HEX file).
Uploading to a stand-alone 40-pin ATMega4809

The ATMega4809 datasheet states the following:

If I upload that sketch to the ATMega4809 40-pin chip, that means it will expect to run at 16Mhz, right?
Set Fuses?
Will the 40-pin chip be set to 16Mhz by the HEX file or will I need to set fuses on the chip to insure the chip is running at 16Mhz?
FYI - Compiled For Correct Board
Also you may wonder if I had the wrong board selected when I compiled, but here you can see I chose the Nano Every.


user70020: With the Nano Every they went out of their way to make it look like as much like original Nano, to the point of providing that "register emulation" feature to make it appear that it has the 328P's older style of GPIO registers.  Running at 16MHz just make sense if you want to behave like the common Nano as much as possible.
If you want to convince yourself that it's running at 16 MHz, you can blink an LED with causes of __builtin_avr_delay_cycles(16000000); in between.  This busy-waits for the requested number of cycles.  If it's running at 20 MHz instead of 16, you would see something faster than a 1 second delay.
They keep the configuration fuse values in a file fuses_4809.bin.  On further investigation, it's not entirely clear what that file is for, despite containing the correct values.  The actual OSCCFG value being used (which is the same in the file) is defined there directly in the boards.txt:
nona4809.bootloader.OSCCFG=0x01


So you can see it's set for 16 MHz on the Nano Every.  The -DF_CPU in the command line originates from a line in boards.txt for the Nano Every:
nona4809.build.f_cpu=16000000L

and works its way into the compile command-lines via a line in platfrom.txt:
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} "-I{build.core.path}/api/deprecated" {includes} "{source_file}" -o "{object_file}"

The D_CPU macro exists to inform the compiled code what frequency it will be running at.  The OSCCFG is controlling the actual frequency, it's important that they agree for any timing related code.
When you upload it's the "-Ufuse2:w:{bootloader.OSCCFG}:m" that becomes "-Ufuse2:w:0x01:m" in the avrdude command line generated from the upload recipe in platform.txt that has the actual effect of configuring the chip for 16 MHz.
If you really wanted to run at 20 MHz, you could try tweak the definitions of these, but it probably makes more sense to look at something like MCUdude MegaCoreX which appears to have a board definition for the ATMega4809 at 20 MHz.

23325: <p>If you go to the <a href="https://store.arduino.cc/usa/nano-every" rel="nofollow noreferrer">official Arduino Nano Every page</a> and click the <em>Tech Specs</em> tab, you'll see that it lists it as running at 20Mhz.</p>
<p><a href="https://i.stack.imgur.com/VIr16.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/VIr16.png" alt="arduino nano every 20mhz" /></a></p>
<p><strong>Turn On Verbose Compile</strong></p>
<p>However, if you go into the Arduino IDE and go to File...Preferences... and turn on the <em>Show Verbose Output during: compilation</em> then you can examine how the board is actually set when a program is uploaded.</p>
<p><a href="https://i.stack.imgur.com/vRfpx.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/vRfpx.png" alt="show verbose output" /></a></p>
<p><strong>Examining the Output</strong></p>
<p>When you look at that output you will see that it seems to be setting the board to run at 16Mhz.</p>
<p><a href="https://i.stack.imgur.com/zkktV.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/zkktV.png" alt="snapshot of compilation output" /></a></p>
<p><strong>Am I Looking At This Properly?</strong></p>
<p>It looks to me as if the board is actually set to run at 16Mhz, right?
Am I looking at that properly?</p>
<p><strong>Extra Question</strong></p>
<p>I'm attempting to confirm this because I am :</p>
<ol>
<li>writing code in Arduino IDE</li>
<li>Compiling in Arduino IDE (to generate HEX file).</li>
<li>Uploading to a stand-alone 40-pin ATMega4809</li>
</ol>
<p>The ATMega4809 datasheet states the following:</p>
<p><a href="https://i.stack.imgur.com/TOBJP.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/TOBJP.png" alt="16/20mhz datasheet" /></a></p>
<p>If I upload that sketch to the ATMega4809 40-pin chip, that means it will expect to run at 16Mhz, right?</p>
<p><strong>Set Fuses?</strong></p>
<p>Will the 40-pin chip be set to 16Mhz by the HEX file or will I need to set fuses on the chip to insure the chip is running at 16Mhz?</p>
<p><strong>FYI - Compiled For Correct Board</strong></p>
<p>Also you may wonder if I had the wrong board selected when I compiled, but here you can see I chose the Nano Every.</p>
<p><a href="https://i.stack.imgur.com/oLL0g.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/oLL0g.png" alt="board set to nano every" /></a></p>
 70020: <p>With the Nano Every they went out of their way to make it look like as much like original Nano, to the point of providing that &quot;register emulation&quot; feature to make it appear that it has the 328P's older style of GPIO registers.  Running at 16MHz just make sense if you want to behave like the common Nano as much as possible.</p>
<p>If you want to convince yourself that it's running at 16 MHz, you can blink an LED with causes of <code>__builtin_avr_delay_cycles(16000000);</code> in between.  This <a href="https://gcc.gnu.org/onlinedocs/gcc/AVR-Built-in-Functions.html" rel="nofollow noreferrer">busy-waits for the requested number of cycles</a>.  If it's running at 20 MHz instead of 16, you would see something faster than a 1 second delay.</p>
<p><s><a href="https://github.com/arduino/ArduinoCore-megaavr/blob/1.8.7/boards.txt#L69" rel="nofollow noreferrer">They keep</a> the configuration fuse values in a file fuses_4809.bin.</s>  On further investigation, it's not entirely clear what that file is for, despite containing the correct values.  The actual OSCCFG value being used (which is the same in the file) is defined <a href="https://github.com/arduino/ArduinoCore-megaavr/blob/1.8.7/boards.txt#L68" rel="nofollow noreferrer">there directly</a> in the boards.txt:</p>
<pre class="lang-none prettyprint-override"><code>nona4809.bootloader.OSCCFG=0x01
</code></pre>
<p><a href="https://i.stack.imgur.com/E0lK1.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/E0lK1.png" alt="OSCCFG documentation from datasheet." /></a></p>
<p>So you can see it's set for 16 MHz on the Nano Every.  The <code>-DF_CPU</code> in the command line <a href="https://github.com/arduino/ArduinoCore-megaavr/blob/1.8.7/boards.txt#L56" rel="nofollow noreferrer">originates from a line in boards.txt</a> for the Nano Every:</p>
<pre><code>nona4809.build.f_cpu=16000000L
</code></pre>
<p>and works its way into the compile command-lines via <a href="https://github.com/arduino/ArduinoCore-megaavr/blob/1.8.7/platform.txt#L58" rel="nofollow noreferrer">a line in platfrom.txt</a>:</p>
<pre class="lang-none prettyprint-override"><code>recipe.cpp.o.pattern=&quot;{compiler.path}{compiler.cpp.cmd}&quot; {compiler.cpp.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} &quot;-I{build.core.path}/api/deprecated&quot; {includes} &quot;{source_file}&quot; -o &quot;{object_file}&quot;
</code></pre>
<p>The <code>D_CPU</code> macro exists to inform the compiled code what frequency it will be running at.  The OSCCFG is controlling the actual frequency, it's important that they agree for any timing related code.</p>
<p>When you upload it's the <code>&quot;-Ufuse2:w:{bootloader.OSCCFG}:m&quot;</code> that becomes <code>&quot;-Ufuse2:w:0x01:m&quot;</code> in the avrdude command line generated from the <a href="https://github.com/arduino/ArduinoCore-megaavr/blob/1.8.7/platform.txt#L107" rel="nofollow noreferrer">upload recipe</a> in platform.txt that has the actual effect of configuring the chip for 16 MHz.</p>
<p>If you really wanted to run at 20 MHz, you could try tweak the definitions of these, but it probably makes more sense to look at something like <a href="https://github.com/MCUdude/MegaCoreX" rel="nofollow noreferrer">MCUdude MegaCoreX</a> which appears to have a board definition for the <a href="https://github.com/MCUdude/MegaCoreX/blob/v1.0.8/megaavr/boards.txt#L84" rel="nofollow noreferrer">ATMega4809 at 20 MHz</a>.</p>
