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.
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
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.
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...."
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....)