Arduino Como Programador AVR
Arduino Como Programador AVR
Taller de Microcontroladores
Cmo usar Arduino como
Programador AVR ISP
Carlos Flores Melndez
Ingeniera Mecatrnica, Facultad de Ingeniera, Universidad de Talca
[email protected]
Resumen Este documento es una gua paso a paso para el uso de placas arduino como
programadores de microcontroladores AVR. Adicionalmente se explica cmo programar
estos mismos usando el lenguaje e IDE de arduino.
Palabras Claves Arduino, Programador, AVR, ISP, SPI, Avrdude.
I. INTRODUCCIN
En este documento se explica paso a paso el procedimiento necesario para convertir una placa arduino
UNO en un programador AVR ISP STK500v1 compatible. Mencionando tambin algunos de los
procedimientos ms comunes para programar microcontroladores AVR usando el lenguaje AVR-GCC y su
respectiva conversin a archivos HEX y consecuente quemado de estos en el microcontrolador.
Adicionalmente se presenta un mtodo para facilitar la programacin de microcontroladores AVR usando
el lenguaje propio de arduino y la IDE de este, de tal forma de evitar la programacin usando AVR-GCC y
permitir la creacin de placas arduino en un solo chip, grabando el bootloader de la plataforma arduino en
un microcontrolador AVR independiente y sin la necesidad de un reloj externo.
2.
3.
4.
Fig. 1
Una vez abierto el sketch, se puede apreciar en el apartado comentado las instrucciones bsicas para el uso
del mismo (ver fig. 2).
Fig. 2
Como se aprecia en la figura 2, nos dicen que el programa utiliza los pines 10, 11, 12 y 13 (Arduino UNO)
para la programacin AVR usando el protocolo SPI, el cual utiliza 6 conexiones para programar un
microcontrolador AVR, 4 de las cuales son: RESET, MOSI, MISO y SCK respectivamente. Las 2 conexiones
restantes son las de alimentacin (VCC y GND) las cuales corresponden a la salida de 5v y GND en el
arduino respectivamente.
Adems de indicarnos cules sern los pines utilizados para programar, nos recomiendan conectar 3 LED a
los pines 7, 8 y 9, los cuales servirn para indicar el estado del programador.
Fig. 3
Tambin es posible desarrollar un Shield para el arduino (ver fig. 4), que contenga los LED de estado, el
capacitor y los cables de las salidas para la programacin mediante SPI.
Fig. 4
Fig. 5
Una vez encendido el arduino el LED conectado al pin 9 parpadear suavemente indicando que el
programador est funcionando (ver fig. 5). A su vez mientras se est programando un microcontrolador se
encender el LED conectado al pin 7 y cuando surja un error al programar se encender el LED conectado al
pin 8 del arduino.
C. Conexin SPI
Una vez cargado el sketch de programador y conectados
los respectivos LED de estado y el capacitor de 10uF,
debemos conectar las salidas de programacin de nuestro
arduino
los
pines
correspondientes
en
el
En la figura 7 se pueden apreciar las 6 conexiones del protocolo SPI conectadas a un microcontrolador
Atmega 328P, las cuales son vlidas tambin para los modelos Atmega48, Atmega168 y Atmega328.
PIN 1
RESET
PIN 7
VCC
PIN 8
GND
SCK
PIN 19
MISO
PIN 18
MOSI
PIN 17
Fig. 7
Para quemar un archivo HEX usando AVRDUDE, es necesario instalar en el caso de Windows la
aplicacin WinAVR y luego utilizar la terminal de comandos de Windows para utilizar los comandos de
AVRDUDE (ver fig. 8), a travs de los cuales se deben determinar los siguientes parmetros:
1.
2.
3.
4.
5.
Fig. 8
Fig. 9
Editar el IDE de arduino agregando una nueva tarjeta para que reconozca el microcontrolador
2.
3.
Utilizar un programador o convertidor serial para programar el nuevo arduino usando el IDE de la
plataforma arduino.
atmega328bb.upload.protocol=stk500
atmega328bb.upload.maximum_size=30720
atmega328bb.upload.speed=57600
atmega328bb.bootloader.low_fuses=0xE2
atmega328bb.bootloader.high_fuses=0xDA
atmega328bb.bootloader.extended_fuses=0x05
atmega328bb.bootloader.path=arduino:atmega
atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
atmega328bb.bootloader.unlock_bits=0x3F
atmega328bb.bootloader.lock_bits=0x0F
atmega328bb.build.mcu=atmega328p
atmega328bb.build.f_cpu=8000000L
atmega328bb.build.core=arduino:arduino
atmega328bb.build.variant=arduino:standard
Fig. 11
Fig. 12
Una vez modificado el archivo boards.txt procedemos a abrir el IDE de arduino y nos dirigimos a la
pestaa: Herramientas > Tarjeta, donde aparecern las nuevas tarjetas como opcin (ver fig. 13).
Fig. 13
Fig. 14
Luego de seleccionar el programador y verificar que se encuentra seleccionado el puerto COM
correcto, hacemos click en la opcin Grabar Secuencia de inicio. El programa comenzar a grabar el
bootloader en el microcontrolador, convirtiendo a este en un arduino todo-en-uno en un mismo chip.
C. Programar Microcontrolador
Una vez quemado el booloader es posible programar
nuestro microcontrolador directamente con el IDE de arduino,
para ello una vez terminado el sketch seleccionamos la opcin
Cargar usando programador (ver fig. 15).
Para programar el microcontrolador usando el IDE de
arduino pero sin utilizar un programador AVR es necesario
utilizar un convertidor serial, como los utilizados en la
programacin de arduinos LilyPad, conectando el convertidor
serial al USB y a los pines correspondientes a comunicacin
serial y alimentacin del microcontrolador.
Fig. 15