PD: soy un novato, así que estoy compartiendo lo que he aprendido. Si hay algún error, hágamelo saber para que en el futuro pueda corregirme.
Sí, tiene razón. El oscilador RC interno no es perfecto ... El reloj varía con la temperatura y el voltaje de la fuente de alimentación. Por lo tanto, es mejor usar un oscilador de cristal externo que no se desvíe con la temperatura y si Si quieres usar cristal de 12Mhz, deberías optar por la opción de cristal de giro completo.
Las fuentes de los relojes generalmente necesitan un poco de tiempo para calentarse y comenzar a darnos una señal confiable cuando el microcontrolador está encendido. Esto se llama el tiempo de puesta en marcha. Para jugar de forma segura, debes ir por el tiempo máximo de inicio para que el reloj tenga todo el tiempo que necesita para alcanzar la velocidad. De hecho, ¡el tiempo máximo de inicio es de solo unos milisegundos! Así que para estar seguro, debes ir por un tiempo de inicio de 16K CK y un retraso adicional de 65ms.
Si está utilizando avrdude, es más útil usar la calculadora de fusibles AVR para los comandos de avrdude y el enlace es:
enlace . Cualquier argumento se genera en la calculadora de fusibles AVR que debe copiar y pegar después de este argumento (si está usando un dispositivo USBASP con De lo contrario, debe utilizar los comandos de acuerdo con su dispositivo) ...
avrdude -c usbasp -p m168
por ejemplo para su caso puede usar este comando ...
avrdude -c usbasp -p m168 -U lfuse:w:0xf7:m -U hfuse:w:0xdf:m -U efuse:w:0xf9:m
En caso de cualquier problema con el efuse, puede omitir eso y escribir solo
avrdude -c usbasp -p m168 -U lfuse:w:0xf7:m -U hfuse:w:0xdf:m
Puede encontrar este tutorial útil .. enlace y también vaya a la sección Reloj de su micro- Hoja de datos del controlador.
Hazme saber si hay más dudas.