user27557: I am moving my Arduino Uno project from Uno to Bread and as we know, this requires two 22 pf capacitors and 16 MHz on the breadboard (and the other things too like the power-but my question is about the crystal frequency so I'll focus on that). 
If I replace the 16 MHz crystal with a 12 MHz crystal then the project will work as expected on a breadboard-is that correct? 
It seems that the fuse setting to use 16 MHz crystal is the same as for the 12 MHz crystal for Arduino Uno-so I guess a change to the fuse setting or bootloader is not required. Am I missing anything?
I guess it's as simple as replacing a 16 MHz crystal by a 12 MHz crystal.

user26916: Some of the code running on the microcontroller needs to know the clock speed it's running at for correct timing. For this reason the macro F_CPU is set with this value. In the Arduino IDE this value is commonly defined in the boards.txt build.f_cpu property. If you're using a bootloader(which is used for uploading sketches over serial) it also needs to know the clock speed so that it can get the baud rate of the upload correct. The bootloader is not compiled in the Arduino IDE so it is not affected by your setting in boards.txt. You can recompile the bootloader with the correct clock speed setting and then install the compiled file on your microcontroller using an ISP.
There is a much more simple solution. All the hard work has already been done for you in MiniCore:
https://github.com/MCUdude/MiniCore
You only need to:

Install MiniCore following the instructions at https://github.com/MCUdude/MiniCore
Tools > Board > ATmega328
Tools > Variant > 328P / 328PA
Tools > Clock > 12 MHz external
Tools > Burn Bootloader


27557: <p>I am moving my Arduino Uno project from Uno to Bread and as we know, this requires two 22 pf capacitors and 16 MHz on the breadboard (and the other things too like the power-but my question is about the crystal frequency so I'll focus on that). </p>

<p>If I replace the 16 MHz crystal with a 12 MHz crystal then the project will work as expected on a breadboard-is that correct? </p>

<p>It seems that the fuse setting to use 16 MHz crystal is the same as for the 12 MHz crystal for Arduino Uno-so I guess a change to the fuse setting or bootloader is not required. Am I missing anything?</p>

<p>I guess it's as simple as replacing a 16 MHz crystal by a 12 MHz crystal.</p>
 26916: <p>Some of the code running on the microcontroller needs to know the clock speed it's running at for correct timing. For this reason the macro <code>F_CPU</code> is set with this value. In the Arduino IDE this value is commonly defined in the <a href="https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification#boardstxt" rel="nofollow noreferrer">boards.txt</a> <code>build.f_cpu</code> property. If you're using a bootloader(which is used for uploading sketches over serial) it also needs to know the clock speed so that it can get the baud rate of the upload correct. The bootloader is not compiled in the Arduino IDE so it is not affected by your setting in boards.txt. You can recompile the bootloader with the correct clock speed setting and then install the compiled file on your microcontroller using an ISP.</p>

<p>There is a much more simple solution. All the hard work has already been done for you in MiniCore:
<a href="https://github.com/MCUdude/MiniCore" rel="nofollow noreferrer">https://github.com/MCUdude/MiniCore</a></p>

<p>You only need to:</p>

<ol>
<li>Install MiniCore following the instructions at <a href="https://github.com/MCUdude/MiniCore" rel="nofollow noreferrer">https://github.com/MCUdude/MiniCore</a></li>
<li>Tools > Board > ATmega328</li>
<li>Tools > Variant > 328P / 328PA</li>
<li>Tools > Clock > 12 MHz external</li>
<li>Tools > Burn Bootloader</li>
</ol>
