Problemas para grabar sketch con AVRISP

Hola a todos

Tras nuestras primeras experiencias usando Arduino Diecimila hemos comprado alguna Arduino Mini para poder integrar el controlador de forma más sencilla en nuestros proyectos.

Para programar Arduino Mini hemos colocado un conector ISP en la placa del montaje y estamos usando un programador del tipo AVR STK500.

Al hacer esto prescindimos del BootLoader con lo cual tenemos las siguientes ventajas:

  • Más espacio de programa, al no tener cargado el BootLader
  • El programa comienza de forma inmediata
  • Prescindimos de cualquier adaptador USB - serie (el Aurduino Mini no lo tiene incorporado)

En la parte negativa hay que comprar un programador externo. En Ebay me ha costado unos 25 Euros.

El problema es que no consigo descargar los sketch con el entorno Arduino (012).

Para ello he modificado el archivo boards.txt añadiendo una nueva placa poniendo las siguientes líneas al final:

stamp.name=Arduino Mini sin BootLoader

stamp.upload.using=avrisp

stamp.upload.maximum_size=16384
stamp.build.mcu=atmega168
stamp.build.f_cpu=16000000L
stamp.build.core=arduino

También he puesto el programador en un COM por debajo del 5 (en COM2, concretamente) ya que he leído que esto puede dar problemas.

Cuando intento descargar el sketch con el entorno me sale este error:

avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: successfully opened stk500v2 device -- please use -c stk500v2

avrdude: stk500_read_sig_bytes(): (a) protocol error, expect=0x14, resp=0x75
avrdude: error reading signature data for part "ATMEGA168", rc=-2
avrdude: error reading signature data, rc=-1

Pero si descargo el .hex generado (hay que buscarlo en C:\Documents and Settings\usuario\Configuración local\Temp\buildxxxxxx.tmp con el AVR Studio funciona perfectamente. Es más, se descarga en poco más de un segundo.

¿Alguna idea?

Un saludo:

Eduardo

Hola de nuevo

Entiendo que programar Arduino (no solo el BootLoader) con un programador externo es algo tremendamente interesante y nada caro (incluso se puede hacer uno con el puerto paralelo con un coste mínimo).

Dado que seguimos teniendo problemas para descargar los sketch con el entorno Arduino (012), estamos empleando la siguiente metodología:

1 - Abrimos tanto el entorno Arduino como el AVR Studio

2 - En el AVR Studio conectamos el programador externo (AVRISP en nuestro caso) en un determinado COM (el COM2, por ejemplo). Seleccionamos el dispositivo adevuado (Atemga168).

3 - En el entorno Arduino seleccionamos el mismo COM que estamos utilizando en el AVR Studio.

4 - Editamos el programa con el entorno Arduino. Una vez finalizado le damos al botón de descarga.

5 - En cuanto termina de compilar, Arduino nos genera un error de recurso compartido (el mismo COM en las dos aplicaciones). No importa, se trata justo de eso :slight_smile:

6 - Cambiamos al AVR Studio (tenemos abierta la aplicación) y seleccionamos el .hex que, ahora si, tenemos en la carpeta "applet" de nuestro proyecto (y no perdido en un temporal por ahí).

7 - Descargamos y en unos segundos esta listo

Lo mejor es que para modificaciones/descargas sucesivas de un mismo proyecto no hay que hacer casi nada y todo resulta muy rápido. Mucho más que con el propio BootLoader.

Aún así entiendo que esta "chapuza" es algo temporal para poder empezar a trabajar, creo que sería estupendo que todo se pudiera hacer desde el propio entorno Arduino como debería ser y que nosotros no conseguimos hacer funcionar.

Un saludo:

Eduardo

¿Has probado esto? http://arduino.cc/en/Hacking/Programmer

Ahi hablan de modificar el archivo preferences.txt, en la linea uploading.upload=bootloader, con el programador que corresponda del archivo programmers.txt, que si no me equivoco por lo que pones sería uploading.upload=AVR ISP

La verdad, que nunca lo he hecho y desconozco el tema, sólo he puesto lo que pone en el link. Si lo consigues hacer funcionar, cuentanos tus experiencias....

Suerte!! :wink:

Igor R.

Hola Eduardo,

Buscando otra cosa por la red, me he encontado con esto por casualidad:

"The configuration instructions in this section explain how to alter the Arduino IDE so that it programs your controller using an ICSP rather than an Arduino bootloader"

  1. Go to http://www.arduino.cc/en/Main/Software and download the latest Arduino software for your platform (Arduino 0012 as of this writing). Extract the files and run the Arduino IDE once to generate a preferences file (this will happen automatically when the program is first run). Close the Arduino IDE.

  2. Add the following to the end of the boards.txt file in the arduino-0012/hardware directory:

orangutan.name=Orangutan with Programmer
orangutan.upload.maximum_size=16384
orangutan.build.mcu=atmega168
orangutan.build.f_cpu=20000000L
orangutan.build.core=arduino

or replace your boards.txt file with this (3k txt).

This will add an Orangutan with Programmer option to the Tools > Board menu of the Arduino IDE. It accounts for the 20 MHz clock speed (standard Arduino boards run at 8 or 16 MHz) and bigger flash size (due to lack of an Arduino bootloader) on the Orangutans and 3pi.

Note: If you are using a Baby Orangutan B-48, you need to modify this new file entry slightly. The maximum upload size should be 4096 rather than 16384 and the build mcu should be atmega48 rather than atmega168.

  1. If you are using our Orangutan USB programmer, add the following to the end of the programmers.txt file in the arduino-0012/hardware directory:

avrispv2.name=AVR ISP v2
avrispv2.communication=serial
avrispv2.protocol=avrispv2

or replace your programmers.txt file with this (0k txt).

This will allow the Arduino IDE to program with the avrispv2 protocol used by our Orangutan USB programmer. If you have a different ICSP programmer, such as AVR ISP mkII, check to see if its protocol already exists in the programmers.txt file. If it doesn't, add your programmer to the to the file by creating a new entry for it. For example:

mynewprogrammer.name=Whatever I want to call it
mynewprogrammer.communication=serial
mynewprogrammer.protocol=

  1. Edit your Arduino IDE's preferences.txt file. You can find this file in the following location, depending on your platform:
  • Windows: c:\Documents and Settings<USERNAME>\Application Data\Arduino\preferences.txt
  • Mac: /Users//Library/Arduino/preferences.txt
  • Linux: ~/.arduino/preferences.txt
    Note that the Application Data directory on the Windows platform is typically hidden, so you might need to edit your folder properties so that hidden files are displayed.

Open this file and replace the line upload.using=bootloader with:

  • upload.using=avrispv2 if you are using the Orangutan USB programmer
  • upload.using=avrispmkii if you are using the an AVR ISP mkII
  • upload.using=mynewprogrammer if you are using something else you added to programmers.txt

Ahi puedes coger la idea para meter tu programador...

:wink:

Igor R.

Si claro, de ahí he sacado ideas para hacer las pruebas que comentaba