Not correct default fuse settings on ATMega2560 r3?


When reading (using AVRdude) the default settings from an Arduino ATMega 2560 r3 board I get following fuse values:

avrdude -c dragon_ISP -p atmega2560 -U lfuse:r:low_fuse.hex:h -U hfuse:r:high_fuse.hex:h -U efuse:r:ext_fuse.hex:h

H: D8

When checking ATMega2560 data sheet (chapter 10.4) I see that the low fuse setting 0xFF correspond to "Low Power Crystal Oscillator" and that it is configured for use with 16MHz crystal. Here there is a note stating max 10MHz when using ceramic resonator.

After checking schematics and eBOM I see that actually a 16MHz ceramic resonator CSTCE16M0V53-R0 is used, therefore it seems that the lower byte fuse setting is not correct. Here is a link to the data sheet of the Murata 16MHz resonator:

When using a 16MHz ceramic resonator it seems that "Full swing Crystal Oscillator" is the only option!

And my understanding is that for Arduino ATMega 2560 r3 board following fuse settings should be okay:

E: D6
H: D0

For convenience I explain my proposed settings as follows:

CKDIV8 = 1: Do not divide clock internally by 8
CKOUT = 1: Disable CLK output on CLKO pin
SUT = 01: Startup time
Slowly rising power (VCC) is safer
Crystal Resonator type (see also below)
Delay from reset: 14CK + 65 ms
CKSEL = 0110: Clock select full swing crystal resonator, 8 - 16 MHz
For low swing type max frequency is 10MHz, so full swing type to be used
For full swing type CKSEL3:1=011
For ceramic resonator CKSEL0 = 0
So CKSEL3:0 = 0110
OCDEN = 1: On-chip debug not enabled
JTAGEN = 1: JTAG Interface not enabled
SPIEN = 0: Serial program downloading via SPI enabled
WDTON = 1: Watchdog not on
EESAVE = 0: memory is preserved through chip erase
Boot flash sector size 2048 words
Boot start address 0x800
BOOTRST = 0: boot reset vector enabled
brown-out detection level VCC=4.3V

Please let me know what you think.

If you agree I should probably report this as a bug.

Thanks in advance.

And my understanding is that for Arduino ATMega 2560 r3 board following fuse settings should be okay:

CKSEL = 0110: Clock select full swing crystal resonator, 8 - 16 MHz

0xFC is definitely wrong, because that doesn't match your binary, and configures the chip for an external clock rather than a crystal or resonator (according to
I think you mean 0xF6. The way I read the datasheet, CKSEL0 can be either 0 or 1 depending on how confident you are about the power supply.

I had to change some ATmega8 boards to use the full-swing oscillator with the resonators I was using, and Optiboot (not the default bootloader for a mega2560) uses 0xF7 for the 2560.

There are a lot of Meg2560s out there with (I guess) incorrect fuse settings that seem to work OK. I guess the exact combination of "modern 2560", resonator, PCB layout, and power supply work even with the low power oscillator options.

There are also Mega boards with crystal like older boards or clones, so it seems to be some kind of compromise.

Thanks! As you probably suspected I put them in reverse order. This is what I meant:

L: D6
H: D0

When using the link to the fuse bit calculator (thanks!) I get same values, so that's good.

Still concerned that the data sheet for ATMega2560 say "Maximum frequency when using ceramic oscillator is 10MHz."

I guess this means in practice that 16MHz will work (especially in nominal environmental conditions, e.g. 20 deg C) while functionality is not guaranteed generally.

So for us in our project we should use fuse settings applicable for our application where we have a customized board based on Arduino ATMega 2560 r3 board with same 16MHz ceramic resonator.

Please let me know what you think.