FredISP: Programador ISP-USB Open Source para microcontroladores AVR

 

Hola que tal a todos, en esta entrada les voy a compartir un pequeño proyecto que llevaba tiempo desarrollando: un programador para microcontroladores AVR open source.

El programador estaba basado en el proyecto FabISP, que a su vez está basado en programador USBtiny, que a su vez utiliza la librería V-USB. Todos estos proyectos son open source y cualquiera puede construir su propio programador en protoboard o en algún diseño propio

Contenido


Descripción

Este programador está basado en el microcontrolador Attiny44/84 y el firmware USBTinyISP, con un diseño de hardware sencillo, portable y muy accesible gracias a que utiliza muy pocos componentes los cuales son económicos y fáciles de conseguir en cualquier lado, puesto que la mayor parte de la magia para hacerlo funcionar reside en el firmware.

El programador funciona tanto en Windows, Linux y MacOS con el programa avrdude y los drivers para windows de Adafruit. Es posible configurarlo con el IDE Atmel Studio para el caso de sistemas operativos Windows, o con makefile para Linux y MacOS.

Cuenta con un conector ISP de 6 pines, común en la mayoría de microcontroladores AVR que permite cargar (no depurar) el código dentro de la memoria flash, EEPROM y grabar los fusibles. Es una alternativa a los costosos programadores/depuradores profesionales que en la mayoría de ocasiones sólo se utilizan para cargar el firmware dentro del chip y nada mas, nada de depuración ni nada de esas cosas del diablo 3:).

Esquemático, PCB y Firmware

El diseño del programador es realmente simple, sólo necesita de 6 resistencias, 4 capacitores, 2 diodos Zener, un fusible, 2 leds, un cristal de de 12, 16 o 20 MHz, un conector de 6 pines y un conector USB hembra. Aquí abajo les dejo el esquemático del programador.

fisp-schematic

El PCB que eh diseñado para el programador es relativamente pequeño, ya que todos sus componentes son SMD, lo cual me ha permitido hacerlo lo más compacto y versátil posible, con un tamaño de 35 x 19 mm. Abajo les dejo una imagen del PCB diseñado con eagle.

fredisp-brd

Como comenté en la descripción, el Firmware está hecho en base al UsbTiny que es open source, sólo que le eh hecho unas modificaciones para incorporar un led de estatus, el cual indica cuando el programador se encuentra en funcionamiento.

Para cargar el firmware necesitaremos de otro programador ISP, bien puede ser un Arduino con el sketch ISP cargado o algún otro programador que tengan. Si ya tienes un Arduino sería la opción más recomendable y rápida para cargar el firmware dentro del programador.

En el repositorio incluyo varios archivos .hex listos para cargarse dentro del programador, con versiones para los micros ATtiny44 y ATtiny84 que trabajan a frecuencias de 12, 16 y 20Mhz.

Los esquemáticos, la lista de materiales, el código fuente del firmware y los archivos Gerber están disponibles en el repositorio para que cualquier persona pueda fabricar su programador o modificarlo libremente.

Configuración y uso en Atmel Studio

La configuración en Windows con Atmel Studio es sencilla aunque no no muy versátil, ya que hay que crear una configuración para cada modelo de microcontrolador que vayamos a usar.

Lo primero es instalar los drivers para el programador. Este programador funciona con los drivers de Adafruit para el programador USBtiny. Los pueden descargar desde la página oficial de Adafruit o desde el repositorio del proyecto, vienen incluidos en la carpeta drivers. Aquí abajo les dejo los 2 enlaces de donde podrán descargar los drivers para el programador.

Drivers desde el Repo del proyecto FISP

Drivers desde Adafruit

Una vez que tengamos instalado el driver y asegurarnos que la PC detecte el programador correctamente, continuamos a configurarlo con el IDE de Atmel Studio. Para esto abrimos nuestro IDE y nos dirigimos al menu Tools y seleccionamos la opción External Tools:

external-tool

En la ventana que nos aparecerá, seleccionamos la opción Add y llenamos los campos que aparecen bajo el apartado Menu contents, agregando un nombre para nuestra herramienta, el comando a ejecutar, que será el programador avrdude, los argumentos para el programador que será algo parecido a “-c usbtiny -p m328p -U flash:w:$(ProjectFileName).hex“, en donde se debe cambiar la m328p por el microcontrolador que se desee usar.

add-tool

Para finalizar agregaremos un acceso directo a la herramienta que hemos creado en la barra de herramientas, para ello hacemos clic en la flechita que nos aparece al final de la barra de herramientas y seleccionamos Customize:

custim-tool

En la lista de categorías seleccionamos Tools y buscamos External Command 1 y damos clic en OK.

category-tool

Con esto tendremos configurado un botón para utilizar el programador con avrdude. Si se desea agregar un atajo del teclado a la herramienta, se selecciona la opción options del menú Tools y sobre el menú desplegable Enviroment seleccionamos Keyboard y buscamos la herramienta externa 1 que hemos configurado, para finalmente asignar la combinación de teclas que ejecutará la herramienta:

menu-option

Configuración y uso en Linux

A diferencia de Windows, Linux no es necesario la instalación de drivers, ya que el kernel detecta automáticamente el dispositivo. Para comprobarlo sólo es necesario conectar el programador la puerto USB y escribir en una terminal el comando lsusb:

fisp-lsusb1

Para obtener una vista más detallada del programador hay que ejecutar el comando lsusb -d 1781: -v, en donde la opción -d filtra por dispositivos y -v muestra información adicional.

fisp-lsusb2

Para finalizar sólo tendremos que agregar las reglas udev a nuestro sistema. Esto ya lo he mencionado en los posts relacionados a la programación de microcontroladores en Linux, y para no repetir información les dejo el enlace de cómo instalar y configurar avrdude: Grabar Firmware con avrdude en Linux y Mac.

Para utilizar el programador con avrdude lo único que hay que hacer es seleccionar el programador usbtiny con la opción -c:

$ avrdude -p atmega328p  -c usbtiny

Configuración y uso en MacOS

Al igual que Linux, MacOS no necesita la instalación de drivers, bastará con tener instalado el programa avrdude y conectar el programador para comenzar a utilizarlo. Los comandos son exactamente los mismos que para Linux.

Repositorio del proyecto en GitHub

Para finalizar les dejo en enlace al repositorio que contiene el proyecto completo:

FredISP en GitHub

Conclusiones

Espero este proyecto les sirva como herramienta para la creación de sus proyectos con microcontroladores AVR o como referencia para que puedan construir su propio proramador. Hasta la próxima!

3 comentarios sobre “FredISP: Programador ISP-USB Open Source para microcontroladores AVR

Add yours

Dejar un comentario

Crea una web o blog en WordPress.com

Subir ↑