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
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:
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
BOOTSZ = 00
Boot flash sector size 2048 words
Boot start address 0x800
BOOTRST = 0: boot reset vector enabled
BODLEVEL = 100
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.