La fuente de reloj en AVR se configura mediante fusibles que pueden ser cambiados por un programador externo (el mismo que se usa para cargar el archivo HEX), pueden configurar la fuente de reloj en RC interno, reloj externo, cristal, etc.
Aquí hay una calculadora de fusibles que puede ser útil enlace
Después de configurar los fusibles de la fuente del reloj, puede cambiar el prescaler del reloj para obtener una frecuencia de núcleo más baja, el ATmega48 / 88/168/328 tiene un fusible CLKDIV8 que controla el valor cargado predeterminado a CLKPR (registro de preescala del reloj) a cualquiera de
Aparte de ese valor cargado predeterminado, puede cambiar la escala de precarga del reloj a voluntad durante el tiempo de ejecución, todo lo que necesita es incluir el siguiente encabezado
#include <avr/power.h>
y llame a la siguiente función con el valor apropiado que desea usar
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
manual de power.h