Traducción


by Transposh - Plugin de traducción para WordPress

Categorías

Herramientas para VUSiBino

Firmware

Entorno Arduino

Muy sencillo de usar e instalar, pero un poco enrevesado cuando empezamos a hacer cosas un poco complejas. Si lo que queremos es una instalación sencilla y facilidad a la hora de usar componentes externos, es lo ideal.

Librerías v-USB para Arduino alfa 5. Bastaría con extraer los ficheros en el directorio “libraries.

Un “fork” de dichas librerías.

Configuración para usar el USBAsp con el ide de Arduino. Basta con extraer los comprimidos en el directorio “hardware” de la instalación de Arduino.

IDEs de Arduino. Los últimos funcionan bien con USBAsp, pero no lo hacen con las librerías v-usb. Para esto deberían usarse las versiones del 1.01 al 1.05

Este es un ejemplo de cómo usar las librerías v-usb en Arduino, si lo que queremos es simplemente usar el entorno sin usar las capacidades USB del VUSiBino, basta con instalar los ficheros de configuración.

Windows, AVR toolchain.

Lo primero es bajarse los programas necesarios, winAVR, Atmel studio (uso la versión 5, las más avanzadas van muy bien, pero no n) y AVrdude o alguno de sus GUIs AVRDudess o bitBurner. Necesitarremos además drivers para el VUSiBino y librerías v-usb para que el firmware actúe como un dispositivo USB.

La instalación de los programas es muy sencilla, recomiendo instalar primero winAVR, después el ATmel Studio que elijamos, el gui de AVRdude. Los drivers los instalaremos con Zadig, es un ejecutable que tiene todo lo necesario, es buena idea copiarlo en algún lugar cómodo y crear un acceso directo (ctrl+may y arrastrar el icono). Las librerías v-usb que necesitaremos se encuentran dentro del archivo comprimido, en el directorio “usbdrv”. Las extraemos en un sitio fácil de recordar para usarlas a conveniencia.

Montando un firmware v-usb desde cero.

Vamos a dar un paseo por AVR Studio para ver las principales opciones a la hora de compilar un firmware para v-usb. Empezarremos creando un nuevo proyecto (File->New->Project). Se abrirá una ventana, elegiremos “C Executable Project” y rellenamos los campos de forma similar a la que mostramos en la captura de pantalla. Cuando toque elegir el chip, escribimos en un campo arriba a la derecha el nuestro, en este caso atmega168.

Con el proyecto creado, y antes de hacer otra cosa, vamos a preparar el entorno para poder usar las librerías v-usb sin problemas. Primero crearemos un “directorio virtual” en nuestro proyecto, para tener un poco organizadas las cosas, pulsamos el botón derecho del ratón, sobre el nombre de nuestro proyecto en la ventana de “Solution explorer” y seleccionamos “Add->New folder”, le lamaremos “usbdrv”. Tras eso y en la carpeta de nuestro proyecto (ver segunda y penúltima capturas para localizarla), crearemos una subcarpeta llamada usbdrv. Abriremos el comprimido con las librerías v-usb que nos hemos bajado de la página de obdev, y navegaremos hasta abrir una carpeta que también se llama “usbdrv”, seleccionamos y descomprimimos los ficheros en la carpeta usbdrv de nuestro proyecto. Hecho esto añadimos a la carpeta virtual tres ficheros, “usbconfig.h”, “usbdrv.c” y usbdrvasm.S” que se encuentran en la carpeta “física” “usbdrv”. Para hacerlo pulsaremos con el botón derecho del ratón sobre el nombre de la carpeta en la ventana de “Solution Explorer”, y en el desplegable seleccionaremos “Add-<Existing Item”, navegaremos por el control de archivos hasta la carpeta “usbdrv” y con ctrl pulsado podremos seleccionar los ficheros para añadir.

Hecho esto sólo nos queda configurar un par de parámetros del proyecto, y ya está listo para compilar. rimero, en la ventana de “Solution explorer” pinchamos con ratón derecho sobre el nombre del proyecto y seleccionamos la última opción del desplegable “properties”. La ventana de propiedades nos mostrará una serie de pestañas, seleccionaremos “toolchain”, y en el árbol de esta, “Directories”. Pinchamos sobre el icono con un símbolo “+” verde, escribimos “../usbdrv” en el diáologo que nos mostrará y aceptamos.

Depués pulsamos sobre “Symbols”, esto no es necesario pero está bien saber que existe. Con el botón de añadir (+ verde) nos muestra un diáologo, escribimos la frecuencia del microcontrolador, en nuesto caso “F_CPU=16000000UL”, pero recordemos que los ATMEGA soportan frecuencias de hasta 20MHz según el reloj externo que le pongamos (cristal u oscilador).

Hecho esto sólo nos queda escribir el código, no nos olvidemos de incluir (#include “usbdrv.h”) “usbdrv.h” al principio del programa para que pueda usar v-usb.

Para compilar, seleccionamos el tipo de compilación en un desplegable en la segunda línea de menús, por defecto se puede elegir entre “Debug” para depurar el programa en el simulador incorporado o con un hardware adecuado, o “Release”, que limpia y optimiza el programa para que ocupe poco y sea lo más rápido posible. Tras ello podemos pulsar “F7”, usar una de las opciones del menú “Build”, o también con ratón derecho sobre el nombre del proyecto elegir entre “Build” y “Rebuild”. Una vez acabada la compilación, veremos que en la ventana de “Solution explorer” se han poblado los árboles “Dependencies” y “Output files”, podemos comprobar en la segunda lista que existe un fichero con extensión “hex”, que es el que subiremos al VUSiBino.

Para localizar el fichero binario que subiremos al dispositivo, el firmware, deberemos ir al directorio donde se encuentra nuestro proyecto, podemos seleccionar el código principal (en nuestro caso “newtest.c”) y con el ratón derecho seleccionar “Properties” en el desplegable. Veremos que nos muestra el nombre y la ruta hacia el fichero, se puede seleccionar esta y copiarla en una ventana del explorador o la línea de comando para cambiar al directorio. Veremos que se nos han creado un directorio “Debug” y uno “Release”, en el segundo encontraremos el fichero “newtest.hex”, que es el firmware.

Subiendo el firmware.

El programa más popular es AVRDude, aunque podemos usar Kazhama u otros. Explicaremos aquí varias opciones de uso con AVRDude y sus guis, AVRDudess y bitBurner AVR programmer.

Si usamos AVRDude desde la línea de comando deberíamos usar este comando.

[ruta al programa]avrdude -c usbasp -p m168 -P COM1 -B 0.5 -U flash:w:"ruta al fichero.hex\fichero.hex":a

También podemos copiar el comando en la opción “Postbuild” de la pestaña “Build Events” en las opciones del proyecto. Personalmente encuentro más cómodo usar AVRdudess, y si quiero ver el firmware, bitBurner, que dispone de un editor hexadecimal que nos premite ver los valores de la memoria EEPROM o el binario del firmware.

Paso a explicar cómo subir el .hex al circuito con AVRDudess. Tras la instalación debemos configurarlo para usar usbASP, el el desplegable (“Programmer (-c)”) lo buscamos y lo seleccionamos. No nos importa el chip que se haya seleccionado en “MCU (-p)”, más tarde lo configuraremos.

Antes deberíamos asegurarnos de que nuestro VUSiBino está en modo de programación pulsando “prog” mientras tenemos pulsado “reset” y que el sistema lo detecta correctamente. Usaremos el Zadig para ver si nuestro dispositivo está conectado, en opciones seleccionaremos ver todos los dispositivos (“Options->List all devices”). En el desplegable debería aparecer USBasp, lo seleccionaremos. En la lista de “Target driver” deberemos seleccionar “libusbk” o “lib usb win32” y si no está instalado, a la izquierda indica el driver instalado, lo instalaremos. Al terminar nos avisará del resultado de la operación.

Si se ha instalado correctamente, podemos detectar el chip que lleva el VUSiBino conel botón de “Detect” de AVRDudess. Si no lo hemos hacho ya, seleccionaremos el binario a subir pinchando en los tres puntos “…” del campo “Flash”, tras ello nos aseguramos de que está seleccionada la opción “Write” y pinchando en el botón “Program!” se sube el programa. Para activarlo pulsamos el botón de reset de nuestra placa y empezará a correr el programa.

HOST

Windows.

 

En Windows he optado, de momento por usar CODE::Blocks como entorno de programación en C++. Es sencillo de instalar y de usar. Devcpp está un tanto desactualizado, CodeLite, es el más reciente, pero no he terminado de probarlo y QT me resulta enervante en extremo.

La instalación de Code::blocks es muy sencilla, con las opciones por defecto nos llega perfectamente, trae incluído el compilador y las utilidades necesarias, pero siempre podremos usar otros compiladores. Una vez instalado el programa, podemos crear unnuevo proyecto, para usar las librerías de libusb y las ventanas de indows, habrá sin embargo que dar unos pasos previos, sencillos pero no muy claros si no se ha usado este IDE antes.

En el menu “File” elegimos nuevo y proyecto “New->Project”, esto nos abrirá un diálogo en el que elegiremos el tipo de proyecto, como vamos a hacer un diálogo windows, elegiremos “Win32 GUI project”, seguimos y elegimos “Dialog based”. Tras ello nos preguntará el nombre del proyecto y su localización, rellenamos y anotamos del directorio donde lo guarda. Más tarde nos preguntará por el compilador que queremos usar, si no está ya elegido escogeremos “GNU GCC compiler” y aceptamos.

Ahora vamos a colocar las librerías que usamos en los ejemplos, si no hemos apuntado el directorio del proyecto, podemos encontrarlo con ratón derecho sobre “main.cpp” y seleccionamos properties, donde nos abrirá un diálogo con las rutas al fichero. Abrimoe entonces la capeta del proyecto, creamos un directorio y lo llamamos “libusb”. Abrimos el fichero de libusb win32, y seleccionamos los directorios “include” y “lib” para copiarlos dentro del directorio “libusb” de nuestro proyecto y dentro del subdirectorio “include” renombramos “lusb0_usb.h” a “usb.h” para hacerlo igual que los ejemplos de v-usb.

Ahora pasamos a terminar de configurar el IDE para que incluya las librerías en la compilación y el “linkado”. Con raón derecho sobre el nombre del proyecto, elegimos “Build options”, seleccionamos el nombre de nuestro proyecto y en la primera pestaña, “Compiler flags” chequeamos “Have c++ follow the C++11…” para poder usar algunas funciones que de otro modo no compilarían. En la pestaña de “Linker settings” añadimos “-L ./libusb/lib/gcc -lusb” en la ventana “Other linker options:”. Y por último, en la pestaña “Search directories” añadimos “libusb\include”. Con esto ya podemos compilar un programa que use las librerías libusb para comunicarse con nuestro dispositivo.

Para editar el diálogo, bajaremos Resedit o similares como el resed incluído en “mingw developer studio” o Resource hacker. Su uso es muy intuitivo, basta abrir el fichero con extensión “.rc” del directorio del proyecto con uno de estos programas e ir añadiendo los controles que necesitemos para luego irlos usando como explico en los envíos dedicados a los programas del “host.

La siguiente entrada será para demostrar cómo usar ventiladores de cuatro, tres y dos pins, y leer su velocidad en caso de que dispongan dse un tacómetro. El software del host estará en C++, pero los siguientes ya estarán en Pascal, que resulta más sencillo de portar y usar que el C++ usando Lazarus y Free Pascal Compiler.

 

Enlaces de interés:

 

AVRfreaks, gran foro con incontables recursos y manuales

Obdev V-USB, el origen de estos envíos.

La placa en que se basa VUSiBino

Excelente tutorial para programar un AVR con v-usb

Una excelente y muy detallada guía sobre electronica y programación de AVRs, la inspiración de mis aparatejos viene de aquí.

Deja un comentario