AVRISP mkII no lee la firma del dispositivo

Recientemente compré una docena de MCU ATtiny85 y estaba tratando de probar uno simplemente poniendo un programa de parpadeo a través del IDE de Arduino con AVRISP mkii (Arduino 1.0.5, Ubuntu 13.04). Seguía recibiendo un error que sugería que no estaba conectado correctamente, pero lo revisé varias veces (y está alimentado externamente a 4.8v). Incluso probé varios ATtinys, por lo que es muy poco probable que todos sean falsos. Cuando cambié a usar mi Arduino como ISP, se programó bien. Intenté usar avrdude -c avrispmkii -p t85 -P usb -tpara ver si era un problema con la configuración del IDE de Arduino, pero me dio el mismo error. Establecí todas las /etc/udevreglas correctamente hasta donde puedo decir, y todavía no hay dados...

Así que inicié Windows 8, instalé Atmel Studio 6 y los controladores para AVRISP mkii. Actualicé el firmware de los dispositivos (a 1.16) y luego traté de leer la firma del archivo attiny85. Esto falló, dándome [ERROR] Failed to enter programming mode. ispEnterProgMode: Error status received: Got 0xc0, expected 0x00, ModuleName: TCF (TCF command: Device:startSession failed.). Lo intenté de nuevo, esta vez con el atmega328p de mi arduino, y una vez más falló. El reloj del ISP se redujo a 125 khz (y también probé más bajo). Sé que tanto el atmega328p como el attiny85 todavía funcionan y los bits del fusible nunca se manipularon (el programa de parpadeo en el attiny de cuando usé mi Arduino como ISP todavía se ejecuta).

¿Significa esto que mi avrisp mkii está muerto? Todas las luces LED se comportan exactamente como se esperaba (el LED se vuelve verde cuando se alimenta la MCU, rojo de lo contrario. El LED USB es verde fijo y parpadea cuando hay tráfico). Además, es reconocido tanto por el administrador de dispositivos de Windows como por Atmel Studio 6.

Gracias

Tuvimos problemas con el cable plano de 6 polos en el AVRISP mkii varias veces. La mayoría de las veces esto provocaba errores esporádicos y tras cambiar el cable volvía a funcionar sin problemas. Pero algunos de nuestros programadores se usan con mucha frecuencia (producción), por lo que no es tan inesperado que en algún momento el cable se da por vencido después de haber sido doblado y torcido 1000 veces.

Respuestas (6)

Hay varios problemas posibles. Uno es en realidad udev. Si funciona bien llamando avrdude con sudo, tienes que hacer bien tus cosas de udev. En Debian Wheezy tengo la siguiente línea en mi /etc/udev/rules.d/56-avr.rulesarchivo:

# Atmel AVR ISP mkII
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2104", GROUP="users", MODE="0660"

Supongo que puedes cambiar cualquier grupo apropiado.

Si ese no es tu error, revisa tu circuito. Un problema común es que otras cosas están conectadas al encabezado del pin ISP. Si quiere estar seguro, coloque el controlador en algún lugar, donde nada más esté conectado a estos pines e intente flashearlo allí.

Y por último: comprobar los colores del LED en el mkII. Los errores o advertencias se indican en color amarillo/naranja o rojo. Si todo está cableado correctamente, el LED del programador es verde.

Tuve que configurar la frecuencia más baja para poder leer la firma correcta del dispositivo "-B 5", funcionó para mí.

¿Cuál es la historia del programador ISP? Si tienen sobretensión, pueden fallar con los síntomas descritos. Por lo general, es el IC frontal en ellos, el MAX-algo, lo que necesita ser reemplazado.

Si debugwire está habilitado, el ISP no funcionará. En el depurador, ejecute el programa y luego elija Depurador->Deshabilitar Debugwire y cierre, y luego, después de apagar y encender la placa, el ISP volverá a funcionar.

Atmel Studio 6 (v6.2.1563 SP2), en Windows 10 (compilación 10240)

He tenido el mismo problema en un Attiny13A, con un AVRISPMKII.
Tengo múltiples placas Attiny13A aquí y 2 programadores AVRISPMKII. El problema es con todos estos.

el Attiny se ejecuta en el oscilador interno de forma predeterminada. Se pudo leer el voltaje objetivo pero la firma del dispositivo no dio el resultado correcto.
Cambié la velocidad de programación en la herramienta de programación del dispositivo, a 64khz, presioné "set" y desde este punto, la lectura y programación del dispositivo funciona correctamente.

No estoy muy seguro de por qué es esto, pero al menos puedo seguir trabajando ahora.
Espero que esto pueda ayudar a cualquiera.

Carlos

Bajar la frecuencia del reloj del ISP a 1.747 kHz me resolvió el mismo problema.

Esta respuesta es de bastante baja calidad. Considere mejorar su respuesta para incluir más información.