Hace dos semanas, saqué mi AVR JTAG ICE MKII y grabé con éxito algunos programas en C en mi Arduino a través de AVRStudio 4 SP3. Todo funcionaba muy bien.
La vida me alcanzó y no toqué el Arduino ni el JTAG hasta ayer. Decidí que quería jugar con unos cuantos XBees. Descargué XCTU para actualizar el firmware y demás. Me di cuenta de que tenía que volver a instalar el firmware de Arduino en la Diecimila para utilizar el escudo Arduino-XBee para actualizar el firmware. Intenté cargar el archivo hexadecimal original del cargador de arranque de Arduino a través del JTAGICE2 con AVRProg en AVRStudio y me encontré con un problema que no he podido resolver en las últimas 9 horas.
Cambié a AVRDude para poder ver la salida verbosa. Cada vez que uso AVRDude para programar el ATMEGA168, obtengo lo siguiente:
avrdude: AVR device initialized and ready to accept instructions
Reading | | 0% 0.00savrdude:
Send: u [75] [20]
avrdude: Recv:
Reading | ################################################## | 100% 0.05s
avrdude: Device signature = 0xffffff
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
También he recibido:
avrdude: jtagmkII_setparm()
avrdude: jtagmkII_setparm(): Sending set parameter command (parm 0x03, 1 bytes): 0xa0 (1 bytes msg)
avrdude: jtagmkII_setparm(): bad response to set parameter command: RSP_FAILED
avrdude: jtagmkII_getsync(): ISP activation failed, trying debugWire
avrdude: jtagmkII_setparm()
avrdude: jtagmkII_setparm(): Sending set parameter command (parm 0x03, 1 bytes): 0xac (1 bytes msg)
avrdude: jtagmkII_setparm(): bad response to set parameter command: RSP_DEBUGWIRE_SYNC_FAILED
avrdude: failed to sync with the JTAG ICE mkII in ISP mode
avrdude: jtagmkII_close()
avrdude: jtagmkII_close(): Sending sign-off command: avrdude: usb_fill_buf(): usb_bulk_read() error error reaping URB: No such device
avrdude: jtagmkII_recv(): Timeout receiving packet
avrdude: jtagmkII_close(): timeout/error communicating with programmer (status -1)
Mientras usaba el JTAGICE2, conectaba su cabezal de 6 pines al cabezal ICSP del Arduino. Primero conectaba mi cable de pared de 12VDC al Arduino, luego encendía el JTAGICE2 conectado por USB, y luego abría AVRStudio o usaba AVRDude en DOS para intentar la programación. Ambos programas nunca han tenido problemas con el propio jtag... sólo con el objetivo. Durante la emisión del JTAGICE2, yo usaría el siguiente comando:
arduino-0021...\avr\bin>.\avrdude -C .\avrdude.conf -p m168 -c jtag2isp -P usb:64:b0 -vvvv -b 19200 -t
o
arduino-0021...\avr\bin>.\avrdude -C .\avrdude.conf -p m168 -c jtagmkII -P usb:64:b0 -vvvv -b 19200 -t
Después de unas cuantas horas sin éxito, finalmente saqué un Arduino Nano v3.0 (ATMEGA328P) y le puse ArduinoISP a través del último Arduino Wiring. Conecté los cables correctamente de acuerdo a la Arduino.cc (primer "esquema") sitio web y trató de cargar el cargador de arranque a la Diecimila de nuevo. Esta vez probé el siguiente comando avrdude:
arduino-0021\..\avr\bin>.\avrdude -C .\avrdude.conf -p m168 -c avrisp -P com4 -b 19200 -vvvv -t
Sigo recibiendo el mismo error. Lo raro es que el último programa que cargué hace 2 semanas en la Diecimila funciona perfectamente. ¡Simplemente no puedo sacar el maldito aparato de ahí!
El hecho de que el error mencione que el Device Signature del chip ATMEGA168 es 0xffffff me preocupa.
Ahora creo que este problema puede estar ocurriendo por varias razones diferentes:
- Mientras programaba el Arduino hace dos semanas con AVRProg y JTAGICEMK2, quizás los fusibles estaban puestos. Sin embargo, puedo decir que estaban en cualquier estado por defecto que utiliza AVRProg, ya que NUNCA he jodido con la pestaña de los fusibles en absoluto. Mi explicación más plausible, sin embargo, es que el ISP se ha desactivado a través de los fusibles.
- De alguna manera el hardware puede haber sido dañado causando que la capacidad de programación no funcione. No sé de ningún daño que haya hecho pero no puedo descartar eso.
- El JTAGICEMKII puede estar dañado... aunque recibir el mismo error usando ArduinoISP debería desmentir esa posibilidad
- Durante la investigación en Google, leí que el cable de cinta JTAG tiene grandes problemas de sensibilidad. No estoy seguro de si esto es un problema grave o no.
Bueno, estoy oficialmente perdido. Espero haber incluido toda la información necesaria. Estoy ejecutando esta configuración en un PC estable con Windows 7 de 64 bits utilizando el último software de Arduino, AVR ToolChain y AVRStudio disponible desde hace dos semanas. En caso de que fuera mi ordenador de sobremesa, también descargué Arduino D/L y libusb-win32 en mi portátil Vista, intenté la consulta de AVRDude utilizando el primer comando DOS y recibí el primer error mencionado anteriormente. ¿Tengo que comprar un nuevo chip? Sé que no cuestan nada, pero preferiría guardarlo y aprender de mi error para poder arreglarlo la próxima vez o evitar el problema por completo.
¿Tiene alguna sugerencia que pueda ayudar? Gracias de antemano por su respuesta.
0 votos
Me encontré con un problema similar con mi PICkit 2 y algunos dsPIC. Me había olvidado de conectar el conector Vdd y Vss del PICkit 2 a la Vdd/Vss de mi circuito, lo que estaba causando todo tipo de problemas intermitentes. Añadiendo mi sonda de alcance a veces lo hacía funcionar.