
El Arduino UNO viene con un flamante microcontrolador de 8 bits llamada "Atmega328p" (la mayoría ya sabe eso), el problema es cómo lo reemplazo si es que lo llego a quemar, romper, perder o vender (tal vez).
Si vamos a la tienda de nuestros proveedores favoritos (ver lista de links a la izquierda) nos daremos cuenta que ninguno posee el dichoso Atmega328p, peor aún, la mayoría no tiene el Atmega168 (también compatible con Arduino), en cambio, si tienen un llamativo "Atmega328" (Olimex, en estación metro Tobalaba lo tiene a 2500 pesos). Si bien el nombre puede parecer distinto (una p menos), internamente son muy parecidos.
ADVERTENCIA: Debes poseer un programador de AVR para seguir leyendo o no podrás seguir
Primero lo primero, qué onda la "p"
La p al final del nombre es de "picopower", es decir, el Atmega328p consume menos potencia que su versión del Atmega328 (sin "p"), quizás no pico veces menos, pero si menos, por lo tanto, si no tienes problemas energéticos, entonces esta parece ser una buena opción para el reemplazo.
Carguemos el bootloader
Puede que lo sepas, pero si no, no importa, la diferencia de un chip funcionando con un sketch cargado con Arduino y otro chip funcionando con un sketch cargado por otro compilador, es que el que funciona a base de Arduino posee un bootloader, el bootloader es una especie de mili-micro-nano-sistema operativo, que se carga al iniciar el chip, es por eso que el chip con Arduino se demora unos 2 segundos más al partir en comparación al chip que NO ocupa Arduino, luego ambos deberían tener el mismo desempeño.
Como podrás intuir, el chip que compramos no viene con bootloader (a menos que lo hayas comprado con uno desde Riab, Sparkfun o similares) por lo mismo deberemos cargarlo nosotros mismos.
Ahora bien, intenta conectar tu programador AVR a la entrada ICSP (en rojo en la foto) del Arduino y ve a
---------> Tools/Burn Bootloader/ "Elige tu versión de programador AVR"
Obtendrás un mensaje de error como el siguiente
Expected signature for ATMEGA328P is 1E 95 0F error
anda a la carpeta donde tienes guardado el programa de arduino y ve a
--------------> hardware/tools/avr/etc
Ahí encontrarás un archivo de nombre avrdude.conf
abre el bloc de notas y arrastra avrdude.conf al bloc de notas
Luego, ve a la linea donde diga Atmega328, para hacer esto te recomiendo apretar CTRL+B y tipear Atmega328 y luego le das a buscar, así llegarás automáticamente a la sección.
Luego baja un poco y encontrarás esta línea...
signature = 0x1e 0x95 0x0F;
aca, debes cambiar el último sigito 0F por 14, dejandolo así
signature = 0x1e 0x95 0x14;
signature = 0x1e 0x95 0x14;
con esto le estás diciendo a AVRdude que el chip Atmega328p entrega un nombre a Arduino de 0x1e 0x95 0x14, pero en verdad este es el nombre que entrega el chip Atmega328, pero nosotros queremos hacer creer a AVRdude que el chip Atmega328 es el Atmega328p, enredado, no?
Bueno, una vez hecho el cambio, graba y cierra. cierra también la interfaz de Arduino y abrela nuevamente, conecta tu programador de AVR (como en la foto) y anda a Burn Bootloader, ahora deberas recibir un mensaje de burning bootloader y bla bla bla
Listo, ya está el bootloader de arduino en nuestro chip Atmega328, pero aún no terminamos, ve al archivo donde modificamos la signature y vuelvelo a como estaba antes (o sea, con 0F en vez de 14). Listo
Una cosa más, si estás utilizando un Arduino UNO, ve a Tools/Board/ y elige Duemilanove w Atmega328, es lo mismo, pero de lo contrario no podrás subir tus sketchs. Eso!!!!
Cualquier duda o consulta puedes escribir a sisalina@puc.cl
Bueno, una vez hecho el cambio, graba y cierra. cierra también la interfaz de Arduino y abrela nuevamente, conecta tu programador de AVR (como en la foto) y anda a Burn Bootloader, ahora deberas recibir un mensaje de burning bootloader y bla bla bla
Listo, ya está el bootloader de arduino en nuestro chip Atmega328, pero aún no terminamos, ve al archivo donde modificamos la signature y vuelvelo a como estaba antes (o sea, con 0F en vez de 14). Listo
Una cosa más, si estás utilizando un Arduino UNO, ve a Tools/Board/ y elige Duemilanove w Atmega328, es lo mismo, pero de lo contrario no podrás subir tus sketchs. Eso!!!!
Cualquier duda o consulta puedes escribir a sisalina@puc.cl
sencilla pero eficiente explicación de las diferencias entre ATmega328 y Atmega329p, gracias.
ReplyDeleteMuy buena explicación, he intentado hacer los pasos descritos para grabar el Bootloader a un Atmega328 y el "p", y me reporta microcontrolador erroneo
ReplyDelete