Re: Configurar AVR

Adjunto un pdf que he creado, en el que explico cómo he configurado AVR5 Studio, para cargar el fichero compilado *.hex, en el chip de nuestra placa Arduino.
También explico cómo crear "Herramientas Externas" (External Tools) y botones, de forma que el proceso de carga del programa sea más agradable.

Espero que sea útil..... :astonished:

Este hilo es continuación de:

Mis experiencias migrando de Arduino 1.0 a AVR5 Studio
http://arduino.cc/forum/index.php/topic,90323.0.html

Flashear.pdf (2.99 MB)

Gran trabajo Valen.

No he usado nunca el AVR pero tengo una duda. Este programa no ejecutará paso a paso el sketch para poder ir viendo como responde el programa antes de meterlo al arduino no? supongo que no pero por preguntar.

¿Usar este método de programación, que ventajas tiene? He mirado por encima el documento asi que si lo has comentado en el documento no te cortes y dame un capón :smiley:

El entorno AVR5 Studio es un software profesional, con lo bueno y lo malo que ello conlleva:
Te da muchas ayudas a la hora de nuscar cosas por el código, de cambiarlas de golpe, etc. También tiene un editor que colorea el código y que es de gran ayuda.

El mayor inconveniente es la curva de aprendizaje en el manejo del entorno AVR5, que es lenta, y te abruma con la infinidad de opciones que tiene (no en vano, está construido sobre Visual Studio de Microsoft, una maravilla de entorno de desarrollo).

Por eso solo es intersante si empiezas a manejar proyectos más grandes, o simplemente si quieres avanzar en una programación más profesional.

Para hacer debug del código también sirve, claro. El problema es que el chip suele estar montado en una placa con entradas y salidas reales, con las que interactúa. Y eso el compilador no lo puede suplir.
Pero si fuerzas las variables a valores que te interesen, puedes hacer debug de trozos que código que te pueden ayudar.

Si quieres hacer un debug completo, te tienes que meter con el uso de un emulador hardware, bastante caro, y fuera del ámbito de Arduino.

A ver si tengo tiempo de añadir una cosa en el documento:

Para realizar la carga, los argumentos de avrdude.exe, son los siguientes

Si tengo instalado Arduino version 0023,
avrdude23 -F -v -pm328p -cstk500v1 -P\.\COM3 -b115200 -D -Uflash:w:"Master.hex":i

Si tengo instalado Arduino version 1.0,
avrdude -F -v -pm328p -carduino -P\.\COM3 -b115200 -D -Uflash:w:"Master.hex":i

Es decir, cambiar el parámetro -p, pasando de usar un programador "stk500v1" a otro llamado "arduino". Esto es nuevo.

Y claro, en cada caso hay que emplear el arvrdude.config que viene en esa versión de arduino, en la carpeta

Arduino 1.0:
C:\arduino-1.0\hardware\tools\avr\etc
y en Arduino 0023:
C:\arduino-0023\hardware\tools\avr\etc

Otra pregunta que tengo sobre el AVR5. ¿Hay que programar en C puro o se puede hacer en Wiring?

Todo lo que he puesto en el doc es para que puedas emplear todas las librerías de Arduino. Si no, con C puro, no necesitas migrar nada.....

Tengo que incluir algunas advertencias:

En Arduino es admisible poner las definiciones de variables en archivos de cabecera (por ej. definir int dato1 = 0;) e incluir esos archivos de cabecera en varios archivos de código, sin que pase nada.
AVR es más exigente con el cumplimiento de las reglas de C, por lo que las definiciones de variables han de ir en los archivos de código fuente C ó CPP, mientras que en los archivos de cabecera solo se incluye una referencia a ellas extern int dato1; (y ya sin inicializar el valor) de forma que puedas incluir ese archivo de cabecera tantas veces como quieras.

Haciendo así las cosas, evitas que se produzca el error "Múltiple definición de la variable dato1. Primera referencia aqui...."

Gracias por el manual @valen. En cuanto tenga un poquillo de tiempo lo probare

He añadido algunos comentarios sobre el proceso de carga con el avrdude.exe incluido en Arduino 1.0 (a mi me carga bien los programas, pero luego a veces no funcionan correctamente....)