Arduino Diecimila (ATMEGA168) + JTAG ICE MKII Infierno ... ¿Frié el chip?

4

Hace dos semanas, saqué mi AVR JTAG ICE MKII y grabé con éxito algunos programas de C en mi Arduino a través de AVRStudio 4 SP3. Todo funcionaba muy bien.

La vida me alcanzó y no toqué el Arduino o JTAG hasta ayer. Decidí que quería jugar con algunos XBees. XCTU descargado para actualizar el firmware y lo que no. Me di cuenta de que necesitaba volver a instalar el firmware de Arduino en Diecimila para usar el escudo Arduino-XBee para actualizar el firmware. Intenté cargar el archivo hexadecimal del cargador de arranque Arduino a través del JTAGICE2 con AVRProg en AVRStudio y encontré un problema que no he podido resolver durante las últimas 9 horas.

Cambié a AVRDude para poder ver una salida detallada. 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 recibí:

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 utilizaba el JTAGICE2, estaba conectando su encabezado de 6 pines al encabezado ICSP en el Arduino. Primero conectaría mi verruga de pared de 12 VCC al Arduino, luego encendí el JTAGICE2 conectado por USB, y luego abrí AVRStudio o usé AVRDude en DOS para intentar la programación. Ambos programas nunca tuvieron un problema con el jtag en sí ... solo el objetivo. Durante el problema de JTAGICE2, 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 arruiné ArduinoISP a través del último Arduino Wiring. Conectó los cables correctamente de acuerdo con el sitio web Arduino.cc (First 'Schematic') e intentó cargar el cargador de arranque en 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 extraño es que el último programa que cargué hace 2 semanas en la Diecimila funciona perfectamente bien. ¡Simplemente no puedo quitarme la maldita cosa de aquí!

El hecho de que el error mencione que la Firma del dispositivo del chip ATMEGA168 es 0xffffff me preocupa.

Ahora creo que este problema puede estar ocurriendo por varias razones diferentes:

  1. Mientras programaba el Arduino hace dos semanas con AVRProg & JTAGICEMK2, tal vez se instalaron fusibles. Sin embargo, puedo decirle que estaban en el estado predeterminado que utiliza AVRProg, ya que NUNCA lo atornillé con la pestaña de fusibles. Sin embargo, mi explicación más plausible es que el ISP se ha desactivado a través de un fusible.
  2. De alguna manera, el hardware pudo haberse dañado y la capacidad de programación no funcionó. No sé de ningún daño que hice, pero no puedo descartarlo.
  3. El JTAGICEMKII puede estar dañado ... aunque recibir el mismo error al usar ArduinoISP debería refutar esa posibilidad
  4. Durante la investigación de Google, leí que el cable de cinta JTAG tiene problemas importantes y delicados. No estoy seguro de si este es un problema grave o no.

Bueno, estoy oficialmente perdido. Espero haber incluido toda la información necesaria. Estoy ejecutando esta configuración desde una PC estable con Windows 7 de 64 bits con el último software Arduino, AVR ToolChain y AVRStudio disponible desde hace dos semanas. En caso de que fuera mi computadora de escritorio, también descargué Arduino D / L y libusb-win32 en mi computadora portátil Vista, intenté realizar una consulta AVRDude usando el primer comando de DOS y recibí el primer error mencionado anteriormente. ¿Necesito comprar un nuevo chip? Sé que no cuestan nada, pero preferiría guardarlo y aprender de mi error para poder solucionarlo la próxima vez o evitar el problema por completo.

¿Tiene alguna sugerencia que pueda ayudar? Gracias de antemano por su respuesta.

    
pregunta ThaKidd KG5ORD

1 respuesta

2

Creo que puedo haber encontrado una solución de dos partes para mi problema particular. Actualmente poseo un Arduino Diecimila (que tiene el ATMEGA168 con el problema) y también un nuevo Arduino Nano 3.0. Seguí adelante y le mostré al Arduino Nano el firmware ArduinoISP . Luego recogí 3 chips DIP ATMEGA328P de 28 pines por $ 5.00 cada uno en la tienda de electrónica local.

Usé el ArduinoISP para flashear uno de los chips vírgenes con el Firmware Arduino usando el enlace anterior con un cristal. Ahora planeo flashear uno de los otros ATMEGA328Ps con el High Voltage Programmer firmware. Este chip, junto con un poco de cableado en una placa de pruebas, me permitirá restablecer todos los fusibles del ATMEGA168 original. Una vez hecho esto, podré usar el Arduino Nano para reprogramar el chip.

Ya que el ATMEGA328Ps solo cuesta $ 5 cada uno, mi objetivo final es configurar un 328 como programador ISP de Arduino, configurar el 168 como un programador de HV, mantener un chip 328 en mi Arduino Diecimila actual (¡actualizar!), y Tendré una sobra para lo que sea. Entonces puedo cambiar las fichas en Diecimila o construir una placa real para las placas ISP y HV Programmer.

Todavía no he probado el JTAG ICE MKII con un osciloscopio / lógica. No estoy seguro si es la raíz del problema o no. Abordaré este problema después de crear el programador HV.

Informaré sobre el éxito / fracaso del programador HV. Solo necesito ir por unos cuantos resistores 1K más para lograrlo. Alguien alguna vez probó el programador HV? ¿Cualquier otra sugerencia? Si nada más, espero que esto ayude a alguien.

    
respondido por el ThaKidd KG5ORD

Lea otras preguntas en las etiquetas