domingo, 22 de marzo de 2009

Iniciadnos con WinAVR

WinAVR es una herramienta que nos brinda la posibilidad de realizar desarrollos firmware para microcontroladores AVR, dicha herramienta se basa en el reconocido compilador GCC que es código libre y abierto además cuenta con mucha información que esta disponible en la WEB, aunque la mayoría de ella en se encuentra en ingles, y no creo que sea una barrera para algunas personas pero para algunas otras si, es por eso es que me propuse construir este blog, Bueno vasta de bla bla bla y manos a la obra.

Si quieres descargar WinAVR ve al siguiente link winavr.sourceforge.net/

Al instalar este software se copian a nuestro equipo las librerías para poder trabajar con los microcontroladores AVR, una versión del compilador GCC, y algunas otras herramientas que mas adelante veremos para que las utilizaremos.

Después de instalar estas librerías con su compilador no queda mas que escribir unas cuantas líneas de código y echarlo a rodar, esto es lo que trataré de explicar de aquí en adelante, para esto debemos de contar con el código ya desarrollado para alguno de los microcontroladores AVR.

Si aun no sabes como escribir código en WinAVR te aconsejo que por ahora consigas un pequeño ejemplo básico para que trabajes, aquí uno de ellos AVR_Leds.c, si lo bajas puedes trabajar con el, se trata de un ejemplo básico donde se muestran como configurar y usar las entradas y salidas del Microcontrolador y para ello se implementa un contador accedente/descendente.

Ahora si, lo primero es abrir el programa, para aquellos que les gusta seguir instrucciones vamos a Inicio/Todos Los Programas/WinAVR-20081205.


Ahora cargamos el archivo ejemplo en un nuevo proyecto para eso vamos a el menú file – new – Project le damos un nombre y una ruta donde lo queramos guardar.

Ahora dentro de la pestaña Project - Test_AVR agregamos el archivo AVR_Leds.c que descargamos, este es el que contiene el algoritmo que ejecutara nuestro Microcontrolador y para poder “meterlo” dentro del Microcontrolador antes debemos compilarlo.

Buscamos el archivo que bajamos o en su defecto escribimos con nuestro puño y pulso y ya sabemos el resto “aceptar”, “OK”, etc.

Ahora no queda mas que compilar el proyecto pero antes debemos crear un archivo “Constructor” que será el que le dirá a él compilador que tipo de archivo se compilará y cuales serán las directrices con las que se debe compilar el código, en el se escogerá el tipo de Microcontrolador que utilizaremos, la frecuencia a la cual funcionará nuestro circuito, el formato de salida, el nivel de optimización, y además de podemos escoger el programador a utilizaremos y el puerto donde se conectará, entre otras configuraciones más que veremos muy pronto.

Existe un software que ayuda a generar este archivo de “construcción” y lo encontramos en las herramientas dentro del paquete de instalación de WinAVR, para abrirlo debemos ir a Inicio/Todos Los Programas/WinAVR-20081205/MFile[WinAVR].

Vamos al menú Makefile y en “main file name” ponemos el nombre del archivo principal de nuestro proyecto, en pocas palabras es el que contiene la función “main”, para nuestro caso es el AVR_Leds, cabe aclarar que solo se debe poner el nombre sin la extensión.

Seguimos con “MCU type”, allí escogemos el Microcontrolador que vamos a utilizar puedes elegir el que desees pero debes de tener en cuenta el código que escribiste ya que si utilizas algún modulo y el Microcontrolador que elijas no lo posea puede presentar problemas, para nuestro caso escogemos el ATMEGA32.

En Las demás opciones dejamos las que están por defecto, solo modificaremos el programador, para ello vamos a “programmer” y escogemos el programador que vallamos a utilizar, en mi caso utilizaré el ponyser, y en el Port escogemos el COM1.

No queda mas que guardar nuestro archivo “Constructor” y adicionarlo a nuestro proyecto, vamos al menú File – Save As y lo guardamos en la carpeta donde se encuentran los demás archivos del proyecto.

Lo agregamos a nuestro proyecto de la misma manera que agregamos el archivo AVR_Leds.c quedando la pestaña de la siguiente manera.

Todo esta listo para finalmente compilar el proyecto, entonces vamos al menú Tools - [WinAVR] Make All, y con esto habremos compilado nuestro desarrollo en gcc-AVR, debemos de echar un vistazo en la pestaña Output ya que si ocurre algún problema durante la compilación en este pestaña se muestran todos los resultados obtenidos, para una buena compilación debería aparecer lo siguiente:

-------- end --------

> Process Exit Code: 0

> Time Taken: 00:05

Lo cual quiere decir que nuestro código ha sido compilado con éxito, lo ultimo que queda será simular nuestro código o en su defecto realizar las pruebas del circuito.

Aqui un video, anque le falta audio puede ser de mucha ayuda.




Si lo quieres descargar lo puedes obtener de el siguiente link http://www.4shared.com/file/94567696/c48c8329/InicioWinAVR_avi.html

9 comentarios:

  1. Hola!
    llevo algun tiempo programando con el ICCAVR y ahora me quiero pasar al WinAVR. Mi problema es que el codigo que escribi para el ICC no me sirve exactamente para el WinAVR. Por ejemplo en el ICC para activar y desactivar las interrupciones escribes "SEI();" y "CLI();" pero en el WinAVR me da warnings ("warning: implicit declaration of function 'CLI'") y las definiciones de los vectores de interrupcion tampoco me los acepta.
    Resumiendo, sabes de algun manual de programacion donde pueda ver como se "traducen" las directivas del ICC al WinAVR?

    gracias!

    ResponderEliminar
  2. Hola amigo, muy buena la información y muy interesante tu blog.

    En tu ejemplo usas el prgramador ponyser y como port utilizas COM1, en mi caso quiero usar como puerto USB. ¿hay que elegir también como programador el ponyser o debo elegir otro? ¿hay alguno que no deba elegir?.

    Saludos cordiales.

    ResponderEliminar
  3. Hola Javi Jap, hace rato que no volvi al blog, pero ahora ya estoy de vuelta, no conosco algun manual completo, pero para empezar puedes revisar los ejemplos que se encuentran en la web, para utilizar las definiciones SEI() y CLI() debes incluir la libreria #include
    puedes reviar la documentacion que trae el WinAVR

    ResponderEliminar
  4. Hola Gatsu, estoy de vuelta en el blog, debes elegir el programador de a cuerdo al que tu poseas, con el avrdude tienes muchas opciones, en otro de mis post he colocado un programador AVR-Doper que se conecta al puerto USB y trabaja con el AVR-STUDIO

    ResponderEliminar
  5. excelente blog, las respuestas son justo a tiempo XD...

    ResponderEliminar
  6. Obrigado amigo!
    E depois de tudo isso, como eu gravo o arquivo no Arduino?

    ResponderEliminar
    Respuestas
    1. Para gravar no Arduino pode usar o IDE do Arduino aproveitando o bootloader que ele traz, ou usar o aplicativo AVRdude.

      Eliminar
  7. Ok jEdwin! Mas, qual arquivo (extensão) gerado pelo WinAVR eu uso e como eu posso abri-lo na IDE do Arduino?
    Digo isso, pois, recebi de um amigo pela internet uma pasta contendo 19 arquivos gerados pelo WinAVR, portanto, preciso gravá-lo no Arduino mas não sei qual arquivo devo usar;
    Desculpe o incômodo e o meu Muito Obrigado

    ResponderEliminar
  8. hola,al compilar me da un error:opening dependency file.dep /no such file or directory

    ResponderEliminar