El Programador AVR Atmel/Microchip USBasp

El USBasp es un dispositivo de bajo costo ampliamente utilizado por estudiantes, ingenieros electrónicos y entusiastas del hardware para programar microcontroladores de la familia AVR de Atmel/Microchip. Su popularidad se debe a su simplicidad, compatibilidad con avrdude y amplio soporte en entornos como Arduino IDE, PlatformIO, Atmel Studio y entornos Linux.

El USBasp es un programador de microcontroladores AVR que permite grabar firmware directamente en chips AVR mediante la interfaz ISP (In-System Programming), sin necesidad de un bootloader o un entorno específico.

¿Por qué “ISP”?

ISP permite programar el microcontrolador sin extraerlo del circuito. Se realiza a través de pines de comunicación dedicados (MISO, MOSI, SCK, RESET, VCC y GND), lo que permite desarrollo y depuración in-circuit.

PINOUT USBasp

Diagrama Esquemático Oficial

Antes de utilizar el USBasp debemos tener en cuenta que este dispositivo también requiere un Firmware, en esta guía detallaré los pasos para instalar el firmware en el USBasp así como su uso para flashear otros microcontroladores ATmel.

Tareas a ejecutar:

  1. Convertir Arduino en un grabador ISP
  2. Instalar Firmware en el USBasp (Windows)
  3. Instalar Firmware en el USBasp (Linux)
  4. Usar USBasp (Windows)
  5. Usar USBasp (Linux)

1. Convertir Arduino en un Grabador ISP

Necesitamos un grabador ISP para colocarle el Firmware a nuestro USBasp, esto se puede hacer con otro grabador USBasp o, para nuestro caso, usar otro Arduino como Grabador, el escenario es:

Para convertir Arduino en un grabador ISP basta con grabarle el Sketch desde el IDE oficial.

Eso es todo, con ello nuestro Arduino Uno estará listo para operar como un grabador AVRISP. Podemos usarlo, por ejemplo, para grabar el bootloader a otro Arduino, para grabar un Sketch en otro Arduino o en nuestro caso para grabar el Firmware a nuestro USBasp.

2. Instalar Firmware en el USBAsp (Windows)

Aunque suele venir con el Firmware ya instalado, no está de más describir el procedimiento para actualizar el Firmware de nuestro grabador. Para ello iremos a la página oficinal del Grabador https://www.fischl.de/usbasp/

2.1 Descargamos el Firmware desde https://www.fischl.de/usbasp/

Descomprimimos el Firmware:

2.2 Descargamos el Driver desde – https://zadig.akeo.ie/

Ejecutamos Zadig e instalamos el controlador:

2.3 Descargar AVRDUDESS

Descargamos AVRDUDESS desde el github oficial https://github.com/ZakKemble/AVRDUDESS

Lo instalamos:

Listo ya tenemos todo lo necesario para colocar el Firmware en nuestro USBasp.

Resumen Gráfico:

2.4 Instalar Firmware

Conectamos por usb al computador nuestro Arduino Uno en modo ISP y por medio de sus pines ISP hacia el USBasp-

Esquema Gráfico:

Ejecutamos AVRDUDESS y procedemos a flashear nuestro USBasp mediante nuestro grabador Arduino Uno ISP.

Listo ya tienes tu USBasp con su firmware correctamente instalado.

3. Instalar Firmware en el USBasp (Linux)

El procedimiento tiene requisitos similares.

3.1 Descargar Firmware y AVRDUDESS

Descargamos el Firmware desde https://www.fischl.de/usbasp/

Descargamos AVRDUDESS desde el github oficial https://github.com/ZakKemble/AVRDUDESS

3.2 Configurar Driver Nativo

Al conectar nuestro USBasp directamente al computador mediante USB y ejecutar un lsusb en nuestra terminal podremos verificar que el sistema reconozca el dispositivo al obtener algo similar a:

En caso no sea reconocido por nuestro sistema, deberemos ejecutar la configuración del driver nativo mediante:

sudo nano /etc/udev/rules.d/99-usbasp.rules

Agregar la siguiente línea dentro de 99-usbasp.rules

SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", GROUP="dialout", MODE="0666"

Guardar, salir y luego ejecutar:

sudo udevadm control --reload-rules
sudo udevadm trigger
sudo usermod -aG dialout $USER


Si todo ha sido ejecutado correctamente, nuestro equipo ya reconocerá el USBasp conectado al ejecutar:

lsusb

3.3 Ejecutar AVRDUDESS y grabar el Firmware en el USBasp

Como hemos notado AVRDUDESS es una interfaz gráfica para avrdude y se ejecuta en Windows, por tal motivo necesitaremos mono para poder ejecutarlo correctamente en Linux.

Instalamos mono:

sudo dnf install mono-complete

Nos dirigimos a la carpeta donde encuentra nuestro AVRDUDESS.exe portable y ejecutamos:

mono avrdudess.exe

Conectamos nuestro Arduino Uno ISP con nuestro USBasp y procedemos a grabar el Firmware de la misma forma que en Windows.

Tener cuidado en seleccionar el puerto correcto, recordar que estamos en Linux.

Ejecutamos el grabado del firmware de forma similar al método Windows.

Ya tenemos listo nuestro USBasp con su firmware cargado.

Con este dispositivo podremos flashear otros dispositivos AVR/Atmel así también podremos grabar sketch directamente en nuestros Arduinos por ISP.

4. Usar USBasp (WIndows)

Como ejemplo grabaremos el Sketch Blind en un Arduino Uno usando nuestro USBasp

Conectamos nuestros dispositivos:

Seleccionamos programador: USBasp:

Luego en el menú Sketch seleccionamos cargar usando el programador

Listo, ahora podemos grabar directamente Arduino mediante nuestro USBasp en Windows

5. Usar USBasp (Linux)

El procedimiento es el mismo que en Windows, para este ejemplo grabaremos el Sketch Blind en un Arduino Uno usando nuestro USBasp

Conectamos nuestros dispositivos:

Seleccionamos programador: USBasp:

Luego en el menú Sketch seleccionamos cargar usando el programador

Listo, ahora podemos grabar directamente Arduino mediante nuestro USBasp em Linux

Con todo lo descrito ya estamos listo para convertir este Arduino en un Rubber Ducky