mrburnette:
You can lower the clock core frequency beforeflash/EEPROM critical write functions.
From change-the-frequency-of-my-atmegaApart from that default loaded value you can change the clock prescale at will during runtime, all you need is to include the following header
#include <avr/power.h>
and call the following function with the appropriate value you want to use
clock_prescale_set(clock_div_1), // divide by 1, for example with 20MHz clock result 20MHz
clock_prescale_set(clock_div_2), // divide by 2, for example with 20MHz clock result 10MHz
clock_prescale_set(clock_div_4), // divide by 4, for example with 20MHz clock result 5MHz
clock_prescale_set(clock_div_8), // divide by 8, for example with 20MHz clock result 2.5MHz
clock_prescale_set(clock_div_16), // divide by 16, for example with 20MHz clock result 1.25MHz
clock_prescale_set(clock_div_32), // divide by 32, for example with 20MHz clock result 0.625MHz
clock_prescale_set(clock_div_64), // divide by 64, for example with 20MHz clock result 0.312MHz
clock_prescale_set(lock_div_128), // divide by 128 for example with 20MHz clock result 0.156MHz
clock_prescale_set(clock_div_256), // divide by 256, for example with 20MHz clock result 0.078MHz
power.h manual
Not necessary. The AVR internal R/C oscillator times flash and eeprom writes. The cpu clock speed is irrelevant.