Ayuda para cambiar la fuente de reloj de ATMega328 a reloj externo

Quiero cambiar los bits del fusible del ATMega328 para operar con un reloj externo (generador de función/señal) en lugar del cristal. La velocidad del reloj será de 8MHz. Lo he estado intentando durante meses y todos mis intentos fallaron porque bloqueé los chips debido a conexiones incorrectas o a un malentendido de los bits.

Entiendo la parte donde necesitamos configurar el CKSEL a 0000 (Reloj externo)

También entiendo cómo usamos el avrdude y conectamos la entrada del reloj (generador de funciones) al XTAL1

Mi comando sería algo como esto:

avrdude -c avrispmk2 -p atmega328p -P COM6 -U lfuse:w:0xe0:m -U hfuse:w:0xde:m -U efuse:w:0xff:m

Compré un ISP avrispmk2 y creo que tengo las conexiones apropiadas en el protoboard en este punto.

Mi pregunta es, después de quemar el fusible de los chips, ¿qué tipo de modificaciones debo hacer en el archivo boards.txt?

¿Necesito incluir los bits de fusibles o algo extra en boards.txt?

atmega328p.name=Mynewarduino
atmega328p.upload.protocol=avrispmkII
atmega328p.upload.maximum_size=32256
atmega328p.build.mcu= atmega328p
atmega328p.build.f_cpu=8000000L // clock speed is 8mhz now
atmega328p.build.core=arduino
atmega328p.build.variant=standard

¿Qué más debería haber en el archivo personalizado boards.txt?

Llevo meses intentándolo y agradecería mucho cualquier respuesta o comentario. ¿Podría explicarme los pasos que puedo seguir sin arruinar otro chip?

Si entiendo correctamente el procedimiento, ¿son estos los pasos?

  1. Realice las conexiones adecuadas con ATmega328 y la placa Arduino sin chip, conéctese con el ISP (mkii)

  2. Queme los fusibles con el avrdude según los bits del fusible mientras el generador de señal está conectado a XTAL1 como 8MHz

  3. En boards.txt, cambie F_CPU a 8000000L (¿o necesita crear una nueva entrada en boards.txt?)

  4. Luego cargue el boceto parpadeante con Arduino IDE (¿necesito cargar usando el programador?)

Si me falta algún paso, agradecería saberlo.

Respuestas (1)

Copie la entrada existente, cambiando el prefijo utilizado; cada entrada debe tener un identificador único, y el menú muestra los distintos <identifier>.namevalores para cada entrada. Solo cambie las variables que importan para el nuevo chip, en este caso el f_cpuvalor.

Si no usa un cargador de arranque, cambie el maximum_sizeparámetro al tamaño completo del flash en el chip, es decir, 32768, y no olvide desprogramar el fusible BOOTRST. De lo contrario, establezca el valor para complementar los fusibles BOOTSZ y el tamaño del cargador de arranque compilado.

Hola Ignacio, disculpa mi mala comprensión, pero ¿puedes aclarar la parte "cada entrada debe tener un identificador único" y la parte "prefijo"? Después de cambiar los bits del fusible, ¿puedo seguir usando el IDE de Arduino para cargar los bocetos? (gestor de arranque)
Si ya existe una entrada que usa "atmega328p", entonces debe cambiar su entrada para usar otra cosa.
Lo siento Ignacio, ¿Cómo puedo cambiar mi entrada para usar otra cosa como prefijo 'válido'? Pensé que atmega328p es el nombre oficial de la parte que no es posible cambiar. te agradeceria si me das un ejemplo en este caso
El identificador no tiene nada que ver con la pieza. Es simplemente un identificador para el IDE.
Los parámetros del bit de fusible solo importan cuando se graba el gestor de arranque en el chip (a través del ISP). De lo contrario, no tienen ningún uso o efecto.