lunes, 6 de abril de 2020

Pickit 3 - Solución al error: "Target Device ID (0x0) is an Invalid Device ID"

Pickit3

Solución al error:

"Target Device ID (0x0) is an Invalid Device ID"

 Contexto:

En resumen, adquirí un Pickit3 por Aliexpress a un precio increíble. Evidentemente no es el dispositivo original, se trata de un clon.
El clon funcionó de maravilla la primera vez que lo usé en mi MPLABX IDE; sin embargo, luego lo desconecté y volví a conectar, intenté programar y no funcionó más programar mi pequeño PIC12F629.
El error que aparecía era: 

"Target Device ID (0x0) is an Invalid Device ID"

 Problema:

 ¿Qué fue lo qué pasó...?, ¿Qué originó el problema?
  • ¿Quemé el microcontrolador
  • ¿La configuración del proyecto había cambiado?
  • ¿Conecté mal el PIC?
  • ¿El pickit3 vino fallado?
No encontré el problema de inmediato, pero buscando en internet hallé un remedio: Utilizar la herramienta PICkit 3 Stand Alone Programmer App v1.0 
Este es link:
https://www.microchip.com/development-tools/pic-and-dspic-downloads-archive

Con esa herramienta he programado sin mayor problema, fue mi solución temporal por ese entonces, pero, ¿cuál había sido el error...?. Y sobre todo, programar de esta manera no era tan cómodo, tenía que tener MPLABX IDE abierto y cuando quería pasar el programa al PIC tenía que cambiar a la herramienta PICKIT3 Stand Alone Programmer. Y para colmo tenía que hacer todo esto en Windows, porque la herramienta mencionada no funcionaba en Linux.
Estuve cerca de dejar PIC y probar con AVR o STM.

Decidí probar con el anterior MPLAB IDE (no el moderno MPLABX IDE). Resultado: funcionó!. Sin embargo, no me convence: el MPLAB IDE es algo arcaico.

Hasta entonces, los programas antiguos funcionan, el moderno no.

Para no alargar más la historia, el problema fue el FIRMWARE del Pickit3. Las versiones antiguas utilizan un Firmware antiguo como era de suponer. Cada vez que usas alguno de los programas, este le descarga automáticamente al dispositivo (al pickit3) su versión de firmware.

¡La buena noticia, se puede escoger el firmware a utilizar!

 Solución:

Por ejemplo, utilizo el MPLABX IDE v3.65.
Este MPLABX utiliza el firmware 1.49.09, como se muestra en la imagen:
Y efectivamente no funciona.

En cambio, ahora emplearemos el MPLABX IDE v3.00, que es una versión anterior.
Vemos que ahora cargó el firmware 1.37.15. Y el dispositivo fue programado correctamente.

Nuestra misión ahora es configurar el firmware adecuado. También, queremos utilizar el último MPLABX (actualmente la versión 5.35), es bueno estar actualizados.

El MPLABX IDE v5.35 usa el firmware 01.56.07. Y el error es el mismo. 

Para cambiar el firmware:

  1. Proyecto > Propiedades > Pickit3 > Firmware

  2. Desmarcar la casilla "Use latest firmware".

  3. Elegir el firmware adecuado. Yo usé la versión de firmware 1.37.15, el cual extraje del MPLABX IDE v3.00. Les comparto el link:
    https://drive.google.com/open?id=1sGIEZ4TduWa4ftPETGXU9Rg5XLfWajUh

Resultados y conclusiones:

  • Se logra utilizar el último MPLABX IDE.
  • Programa sin problemas.
  • Ya no son necesarias otras herramientas antiguas.
  • Los Pickit3 clones funcionan adecuadamente.
  • Y sobre todo... el error "Target Device ID (0x0) is an Invalid Device ID" no vuelve a aparecer!


Espero les haya podido ser de ayuda.

 Actualización:

Ahora hice un video, espero les sea de utilidad:
https://www.youtube.com/watch?v=U_STydsRlNA