desktop

Problema para grabar dsPIC30F6014A

Hola,

Estoy intentado programar el PIC30f6014A con el programador PICkit3 y tengo muchos problemas y dudas.
No me permite ni borrar ni programar el PIC, terminando siempre con el mismo error "Programming failed at program memory address 0x000000".
Con el PICkit3 he programado muchos pics de 8 bit sin ningún problema, pero es la primera vez que lo intento con uno de 16 bits.
¿el programador PICkit3 sirve para programar este pic?, ¿el pic puede tener algún tipo de protección que impida su reprogramación?

Quedaré muy agradecido si alguien puede aclarar mis dudas y me puede orientar en como puedo programar este pic.

Saludos.
 
¿El programador PICkit3 sirve para programar este PIC?
Sí, ya es un PIC antiguo, si no fuera soportado, no aparecería en la lista de dispositivos.
¿El PIC puede tener algún tipo de protección que impida su reprogramación?
No, solo para lectura.

No mencionas qué aplicación estás usando, pero te recomiendo que uses MPLAB IPE
 
Gracias por tu pronta respuesta D@rkbytes.

Intento explicar la situación:
Yo no soy el programador, simplemente tengo un archivo .hex para actualizar un equipo de radio.
Pasa que el equipo que he comprado no es original. Resulta que es un clon chino, y además de ser un clon no permite la actualización.
Por lo que he leído, existe la posibilidad de proteger tanto la lectura como la escritura, y eso es lo que han hecho.
Creo que tiene activado el Code y Data Protect.
Si lo que digo es correcto, ¿existe algún método para forzar el borrado del micro ó la única solución es sustituir el micro por uno "virgen" ?

Cualquier sugerencia o ayuda la agradezco sinceramente. Saludos.
 

Adjuntos

  • image014.jpg
    image014.jpg
    90.3 KB · Visitas: 8
  • image007.jpg
    image007.jpg
    152.6 KB · Visitas: 8
Por lo que he leído, existe la posibilidad de proteger tanto la lectura como la escritura, y eso es lo que han hecho.
Creo que tiene activado el Code y Data Protect.
No es así, estás mal informado.
"Code Protect" hace referencia a la protección de la zona de código, esta puede protegerse por bloques o completamente.
"Data Protect" hace referencia a la protección de datos de la memoria EEPROM interna.
Ambas protecciones únicamente son para el modo de lectura, no de escritura.
Ten en cuenta que se trata de un PIC con memoria Flash y este puede ser reprogramado más de 10000 veces y la EEPROM más de 100000 veces.
Los PIC OTP (One Time Programmable) solo pueden programarse una sola vez.
Los PIC OTP suelen contener la letra C en su nomenclatura y los del tipo Flash la letra F, como en este caso: dsPIC30F6014A.
La letra A al final de la nomenclatura hace referencia a que se trata de una versión mejorada del microcontrolador.

Si durante la lectura te aparecen esas opciones bloqueadas, es porque el PIC está protegido y obviamente no las puedes desactivar.
Si la aplicación detectara que el PIC no está protegido, esas opciones no estarían bloqueadas y aparecerían sin selección.
Si lo que digo es correcto, ¿existe algún método para forzar el borrado del micro o la única solución es sustituir el micro por uno "virgen"?
Bueno, ya expliqué que lo que dices no es correcto, tal vez estés tratando de grabar el PIC en la tarjeta del equipo, y está puede tener componentes conectados a los pines ICSP del PIC que interfieren con la programación.
Cuando un PIC está pensado para ser reprogramado en la tarjeta, se debe tener esto en cuenta y el circuito se diseña para no interferir con la reprogramación, de aquí provienen las siglas ICSP (In Circuit Serial Programming), no confundir con SPI (Serial Peripheral Interface).

En un PIC del tipo Flash no es necesario forzar el borrado, simplemente se le da a borrar y su contenido será borrado.

¿Qué puedes hacer para solucionar el problema de grabado?
1.- Verificar que la resistencia entre el programador y los pines PGD, PGC, Vpp/MCLR, VDD y GND no sea superior a 10 Ohms.
2.- Verificar que la impendancia de los pines mencionados, con respecto a masa, no sea inferior a 47 K.
3.- Verificar que al momento de iniciar la grabación, en el pin Vpp/MCLR suba la tensión alrededor de 12.5 V.
4.- Intenta programar el PIC directamente con un adaptador.
5.- Te recomiendo leer la hoja de datos del dsPIC30F6014A.
 
Gracias de nuevo. Son muchos datos que trato de digerir en poco tiempo y no es una actividad que realice habitualmente.

Por lo que respecta al punto 1 y 2 creo que la resistencia e impedancia son correctas.

Sobre el punto tres me surge una duda ¿ el circuito se alimenta a 5 voltios excepto el LCD, por lo que los 12,5 V. los debe generar el programador marcando la casilla MCLR? ¿ debo comprobar si hay 12V. entre la patilla 1 (MCLR) y 3 (GND) al iniciar la programación?

¿Para programar el pic con un adaptador debería desoldar y volver a soldar el micro no? ¿existen adaptadores para este formato de micro?

Adjunto esquema del circuito por si puede dar alguna pista (el conector de programación es el J19).

Saludos
 

Adjuntos

  • esquema.jpg
    esquema.jpg
    87.7 KB · Visitas: 14
Sobre el punto tres me surge una duda. ¿El circuito se alimenta a 5 voltios, excepto el LCD, por lo que los 12,5 V los debe generar el programador marcando la casilla MCLR?
No, la casilla MCLR sirve para mantener ese pin estado bajo, o sea, genera el estado de reset.
Los >12.5V siempre se deben generar en modo de programación, menos en el modo LVP (Low Voltage Programming).
¿Debo comprobar si hay 12V entre la patilla 1 (MCLR) y 3 (GND) al iniciar la programación?
Así es, fue lo que mencioné.
¿Para programar el PIC con un adaptador debería desoldar y volver a soldar el micro?
Obviamente.
¿Existen adaptadores para este formato de micro?
Por supuesto que existen adaptadores para ese tipo de encapsulado.
Puedes comprar uno sencillo que sirve desde 32 hasta 100 terminales.
TQFP-32-100.jpg
En este tipo de tarjeta solo debes soldar los terminales que se requieren para la programación.
el conector de programación es el J19
El conector para programación es ICD2, ya que seguramente el diseñador usaba depuración para hacer pruebas.
Con el PICkit3 también se puede depurar, pero se requiere el código fuente.
 
Gracias por tu paciencia D@rkbytes.

He comprobado el pin1 (MCLR) y da 12,5 voltios durante toda la programación. También el pin 2 de alimentación da 4,9V.
Durante la programación se enciende el LCD, pero con estos valores descarto una caída de tensión.
También he intentando programarlo con el equipo encendido, pero el error es siempre el mismo "Programming failed at program memory address 0x000000".
Mirando el esquema los pines PGC, PGD, y MCLR van directos, así que no parece que nada pudiera interferir por el camino.
Efectivamente el creador de este equipo habla del programador ICD2, pero si con el PICkit3 no funciona imagino pasará lo mismo con el ICD2.
Es curioso pero parece que algo en ese integrado impidiera su grabación. Lo que más me mosquea es el identificador único ID que aparece siempre cuando se conecta el programador. Lo he intentado borrar 20 veces, y al leer siempre me aparece el ID más el code protect.

Descartada esta vía, paso al plan dos: Voy a comprar un pic nuevo y el adaptador que me comentas. Luego tocará lo que más me fastidia, que es desoldar y sobre todo soldar el nuevo pic, pero no veo otra salida.

Gracias de nuevo. Saludos.
 
Última edición:
Lo que más me mosquea es el identificador único ID que aparece siempre cuando se conecta el programador. Lo he intentado borrar 20 veces, y al leer siempre me aparece el ID más el code protect.
Todos los microcontroladores tienen un identificador único que es con el cual el programador sabe de qué dispositivo se trata.
Descartada esta vía, paso al plan dos: Voy a comprar un PIC nuevo y el adaptador que me comentas. Luego tocará lo que más me fastidia, que es desoldar y sobre todo soldar el nuevo PIC, pero no veo otra salida.
Antes de hacer eso, intenta programarlo con el MPLAB IPE, es mucho más sofisticado y muestra más información sobre los errores.
te recomiendo que uses MPLAB IPE
 

Adjuntos

  • MPLAB_IPE.jpg
    MPLAB_IPE.jpg
    130.9 KB · Visitas: 6
¿Si fuera cierto lo de la tensión, donde conecto la fuente?
¿ 5 voltios entre el pin 2 y 3 ó 12 voltios entre el pin 1 y 3?
He probado a alimentar el equipo y entonces falla la comunicación con el pic.
También he oído que MPLAB se lleva mal con los PICkit no originales.
 

Adjuntos

  • MPLAB IPE.jpg
    MPLAB IPE.jpg
    110 KB · Visitas: 4
Si fuera cierto lo de la tensión, ¿dónde conecto la fuente?
¿La fuente de qué cosa? El PICkit3 se alimenta por el puerto USB y cuenta con salida de voltaje para alimentar al PIC.
¿5 voltios entre el pin 2 y 3 o 12 voltios entre el pin 1 y 3?
5 o 3.3 V en el pin VDD y solo debe haber >12.5 V en el pin MCLR/Vpp en modo de programación.
En modo normal MCLR siempre se debe mantener en 5 o 3.3 V (Estado lógico 1) y con 0 V (Estado lógico 0) se produce un reset.
He probado a alimentar el equipo y entonces falla la comunicación con el PIC.
El programador (PiCkit3) es el que debe alimentar al PIC cuando se quiere leer o programar.
También he oído que MPLAB se lleva mal con los PICkit no originales.
MPLAB es un entorno de desarrollo integrado (IDE), el programador es otra cosa, aunque desde MPLAB también se pueda realizar el grabado del PIC.
Y eso es falso, puesto que los programadores no originales están basados en el código fuente original que proporciona Microchip.
Lo que puede pasar es que el programador no esté bien diseñado, porque quitan tantas cosas del diseño original, que termina en resultados inesperados, pero la aplicación no es consciente de eso y ni se entera que se está usando un clon.

Lectura recomendada: In-Circuit Serial Programming
dsPIC33F/PIC24H Flash Programming Specification
 
Buenas, cuando estaba a punto de tirar la toalla me he dado cuenta que el KITpic3 no estaba puesto en modo de compatibilidad con MPLAB. Siempre lo había utilizado de forma individual y no me acordaba de esta opción. Ahora si funciona perfectamente.

Paso íntegro el log del MPLAB IPE:

*****************************************************

Connecting to MPLAB PICkit 3...

Currently loaded firmware on PICkit 3
Firmware Suite Version.....01.56.09
Firmware type..............Enhanced Midrange
Now Downloading new Firmware for target device: dsPIC30F6014A
Downloading AP...
AP download complete
Programming download...


Currently loaded firmware on PICkit 3
Firmware Suite Version.....01.56.09
Firmware type..............dsPIC30F
Programmer to target power is enabled - VDD = 5,000000 volts.
Target device dsPIC30F6014A found.
Device Revision ID = 1041

Erasing...
Erase successful
Loading code from C:\Users\RadioG\Downloads\JUMA PA-100\Firmware\Combined PA100 V 1.04 firmware hex & bootloader.hex...
2024-09-08 15:37:22 +0200 - Hex file loaded successfully.
2024-09-08 15:37:37 +0200 - Programming...


You are trying to change protected boot and secure memory. In order to do this you must select the "Boot, Secure and General Segments" option on the debug tool Secure Segment properties page.
Failed to program device

*****************************************************

La pregunta es evidente, ¿que es protected boot and secure memory y como se selecciona la opción "Boot, Secure and General Segments" ?. Gracias.


Saludos.
 
Última edición:
Buenas, cuando estaba a punto de tirar la toalla me he dado cuenta que el KITpic3 no estaba puesto en modo de compatibilidad con MPLAB. Siempre lo había utilizado de forma individual y no me acordaba de esta opción. Ahora si funciona perfectamente.
Ese no era el problema. Lo que sucedió es que al usar MPLAB IPE, este cambió el modo para poder ser usado por él.
Lo mismo sucedía con el descontinuado MPLAB IDE cuando se programaba el PIC desde el entorno de desarrollo.
Por eso recomendé el uso de MPLAB IPE, ya que tiene un LOG al estilo del IDE.
¿que es protected boot and secure memory y como se selecciona la opción "Boot, Secure and General Segments" ?
CodeGuard™ Intermediate Security
CodeGuard Memory and Configuration
CodeGuard Device Implementation Overview
IPE error "You are trying to change protected boot and secure memory"
 
Hola D@rk, ya estaba viendo en el foro de michrochip personas con este problema que les dan como única solución disponer del código fuente. ¡ Si esto no es una protección de escritura se le parece mucho!.
Como conclusión saco que el chip no se puede borrar y por lo tanto tampoco grabar. ¡integrado a la basura!.
Ya he pedido un pic y un adaptador y me resigno a cambiar el micro.

Gracias por toda la información que me has dado.

Saludos.
 
Sí se puede grabar pero con el Code Guard va a haber un problema.
Aquí está la respuesta: "In order to do this you must select the "Boot, Secure and General Segments" option on the debug tool Secure Segment properties page."
Y me parece que esto solo se puede hacer desde el ICD2, aunque esta herramienta no es muy costosa, tal vez no valga la pena la inversión.
 
Atrás
Arriba