Cómo usar un Arduino UNO como programador ISP

Autor: Oscar Gonzalez

Cómo usar un Arduino UNO como programador ISP

Tiempo de lectura: 6 minutos

Tutorial donde te enseño cómo convertir un Arduino UNO en un programador ISP barato y casero

Cómo usar un Arduino UNO como programador ISP

  • 12

0 Principiante

Introducción

En esta guía te voy a enseñar en detalle cómo utilizar un Arduino UNO como programador ICSP. De esa forma, podrás reprogramar no solo tus placas Arduino, sino un montón de microcontroladores AVR.

A lo largo de este tutorial verás en detalle cómo hacer, pero primero necesitamos conocer qué es el ISP y cómo funcionar el bootloader de Arduino.

¿Qué es un programador ISP?

Al principios de los tiempos, en la época pre-arduino, cuando querías programar cualquier microcontrolador había que utilizar un dispositivo extra llamado programador. Ese programador externo hacía precisamente eso, programar el microcontrolador con tu programa mediante unos pines específicos llamados ISP o ICSP (In Serial Programing o In Circuit Serial Programing).

Especialmente en la época grande de los microcontroladores PIC pero también por supuesto los AVR de Atmel, cada fabricante tenía el suyo. En el caso de Atmel, existe por ejemplo el USBTinyISP, aunque hay también otros modelos.

Eso añadía un coste adicional ya que a parte de tener el microcontrolador para tu proyecto, tenía que tener otro aparato para poder programarlo.

Programador externo USBTinyISP para microcontroladores AVR

Programador externo USBTinyISP para microcontroladores AVR

Los programadores ISP no han desaparecido, de hecho si siguen utilizando ampliamente, pero actualmente la tendencia es facilitar al usuario la programación directa mediante un puerto USB sin necesidad de un programador externo.

Para poder hacerlo, aparece el uso de un bootloader. Un pequeño programa al principio de la memoria del microcontrolador, que se encarga de la comunicación USB y la programación del chip en sí mismo. 

Paradójicamente para poder hacer eso se necesita un programador externo, para cargar el bootloader, por lo menos la primera vez.

Programador AVR USBtinyISP

Programador AVR USBtinyISP

Sencillo y potente programador para microcontroladores AVR soportado por el IDE de Arduino

12,50€

Comprar


¿Cómo funciona el Bootloader de Arduino?

El bootloader es un pequeño programa especial que se ejecuta en cada reinicio del microcontrolador y que busca un programa para ser cargado desde el puerto serial / USB usando un protocolo y velocidad específicos. Si no se detecta ninguno, la ejecución se pasa al código ya instalado en el microcontrolador.

Este pequeño fragmento de código (generalmente 512 bytes) se llama "Bootloader" y se encuentra en un área de la memoria del microcontrolador, al final del espacio de direcciones, que no se puede reprogramar como un programa normal y se había diseñado para tal fin.

Espacio de memoria de un microcontrolador ATMega328

Espacio de memoria de un microcontrolador ATMega328

El uso de bootloaders se hizo especialmente popular desde la aparición de Arduino ya que ofrecía la posibilidad de programar una placa con tan solo conectarla por USB, sin necesidad de un programador externo.

Hoy en día, si cacharreas con placas Arduino es raro necesitar un programador externo pero aún hay casos donde sigue siendo muy útil:

  • Para recuperar el bootloader de una placa Arduino corrupta
  • Para programar microcontroladores que no tienen puerto USB

En estos dos casos, sigue siendo imperativo el uso de un programado externo. Por supuesto hay muchos modelos disponibles para comprar, pero si es algo esporádico y que no vas a utilizar mucho, quizás no te compensa.

En ésta guía te voy a explicar cómo convertir una placa Arduino UNO en un programador ISP de una forma muy fácil y que podrás utilizar para programar otras placas.