Autor Tema: Clonar un PIC10F202 con Pickit3 - Leo, exporto y grabo, pero no funciona  (Leído 8235 veces)

0 Usuarios y 5 Visitantes están viendo este tema.

Desconectado ataro

  • PIC10
  • *
  • Mensajes: 8
Hola amigos.

Tengo un PIC10F202 de un aparato que ya no se fabrica ni puedo contactar con el dueño. El caso es que quería clonar su microchip para hacerme un aparato igual y poder guardar el viejo para que no le pase nada.

No tenía ni idea de lo que era un PIC, aún así leí bastante y me fuí informando. Compré este kit Pickit3 con base para pics, y hoy lo he estrenado. He puesto los jumpers de la placa correctamente para poder meter un 10F202.



He metido el PIC viejo, he abierto el Pickit3 Standalone y seleccionado el pic correspondiente y... Voilà! Me ha leído el pic!

Hasta aquí bien. He ido a File->Export HEX, y he guardado el .hex al ordenador.

He sacado el pic, y he puesto un 10F202 virgen.

Le he dado a READ, y lógicamente estaba todo vacío.

Le he pulsado a Import->Hex, y me ha importado el archivo, le he dado a grabar, y ha grabado todo correctamente. Me he asegurado que había quedado grabado dándole otra vez a READ.

Pues bien, aquí el problema: El PIC no hace nada. Meto el PIC original en el aparato y hace sus funciones, luego pruebo el PIC grabado y no hace nada. He exportado y grabado 2 Pics más, esta vez con el MPLAB (leyendo el original otra vez, exportando de nuevo el HEX original) y me pasa igual.

Sin embargo, al leer los pics "grabados", parece que tienen los mísmos numeros que el pic original.

Podéis orientarme un poco en saber qué estoy fallando?

Muchísimas gracias!!!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Clonar un PIC10F202 con Pickit3 - Leo, exporto y grabo, pero no funciona
« Respuesta #1 en: 01 de Octubre de 2015, 19:00:13 »
Cuando lo lees , y exportas el .hex, te pasa los bits/palabra de configuracion ( o fuses ) ? puede que te este afectando eso.

Por otro lado, la EEPROM tiene algo guardado ? y tambien se lo pasa ?.

http://ww1.microchip.com/downloads/en/DeviceDoc/40001239F.pdf
En la pagina 35 estan los bits de configuracion, son 3, y unicamente se pueden cambiar cuando se graban. uno es de proteccion de codigo, los demas afectan al funcionamiento.
hay un pin que puede funcionar como MCLR es decir es capaz de resetear al micro o como salida/entrada y solo se configura de ahi.
Y el otro bit es del WDT, que es un temporizador que si no se borra en el programa cada tanto se resetea el micro.

Esos ultimos 2 pueden estar afectandote. Uno por que te puede estar reseteando continuamente MCLR, y el otro a cada ratito WDT.

Por ultimo y mas importante! SI esta activado la proteccion de codigo no quiere decir que no vas a poder leer nada, sino que vas a poder leer una pequeña parte. Las primeras 64 posiciones de memoria flash y la ultima no estan protegidas.
Con lo cual podrias leer hasta la posicion 0x40 del PC, o si esta representado en 8 bits hasta 0x60
« Última modificación: 01 de Octubre de 2015, 19:08:53 por KILLERJC »

Desconectado ataro

  • PIC10
  • *
  • Mensajes: 8
Re: Clonar un PIC10F202 con Pickit3 - Leo, exporto y grabo, pero no funciona
« Respuesta #2 en: 01 de Octubre de 2015, 19:18:21 »
Cuando lo lees , y exportas el .hex, te pasa los bits/palabra de configuracion ( o fuses ) ? puede que te este afectando eso.

Por otro lado, la EEPROM tiene algo guardado ? y tambien se lo pasa ?.

http://ww1.microchip.com/downloads/en/DeviceDoc/40001239F.pdf
En la pagina 35 estan los bits de configuracion, son 3, y unicamente se pueden cambiar cuando se graban. uno es de proteccion de codigo, los demas afectan al funcionamiento.
hay un pin que puede funcionar como MCLR es decir es capaz de resetear al micro o como salida/entrada y solo se configura de ahi.
Y el otro bit es del WDT, que es un temporizador que si no se borra en el programa cada tanto se resetea el micro.

Esos ultimos 2 pueden estar afectandote. Uno por que te puede estar reseteando continuamente MCLR, y el otro a cada ratito WDT.

Por ultimo y mas importante! SI esta activado la proteccion de codigo no quiere decir que no vas a poder leer nada, sino que vas a poder leer una pequeña parte. Las primeras 64 posiciones de memoria flash y la ultima no estan protegidas.
Con lo cual podrias leer hasta la posicion 0x40 del PC, o si esta representado en 8 bits hasta 0x60


Muchas gracias!

Antes de meterme a comprobar lo primero que has puesto, te muestro lo que veo cuando leo el pic, porque yo me pensaba que si podías leerlo es que no estaba protegido, pero ahora creo que SÍ está protegido, adjunto imagen por si me lo puedes confirmar, ya que veo que hay posiciones que parecen vacías/No se pueden leer


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Clonar un PIC10F202 con Pickit3 - Leo, exporto y grabo, pero no funciona
« Respuesta #3 en: 01 de Octubre de 2015, 20:37:37 »
Si lo de abajo es lo leido del PIC, no me queda otra que decirte que esta protegido contra lectura de codigo. Ahi hay varios "saltos" hacia otras partes del programa. Como todos los 0x0Axx y 0x0Bxx que ves ahi., Cada uno de esos valores es una instruccion.
Pero luego solo se ve que la memoria contiene 0x0FFF , es decir como si no estuviera grabado. O mejor dicho esta protegido el codigo y no se pudo leer o se devolvio eso. Tu programa tiene solo 11 instrucciones. con eso haces poco y nada.

Otra cosa que me hace sospechar que esta protegido es que si te fijas a la derecha donde dice Result, dice CP=OFF Checksum: , y pone N/A, como que al estar activada la proteccion directamente no calcula el cheksum, solo lo haria con el CP=OFF

Proba en tu PIC grabar algo con el bit de configuracion CP en OFF y fijate si aparece. Y luego podes grabar uno con el CP = ON y fijarte nuevamente.

Desconectado ataro

  • PIC10
  • *
  • Mensajes: 8
Re: Clonar un PIC10F202 con Pickit3 - Leo, exporto y grabo, pero no funciona
« Respuesta #4 en: 02 de Octubre de 2015, 08:51:33 »
Si lo de abajo es lo leido del PIC, no me queda otra que decirte que esta protegido contra lectura de codigo. Ahi hay varios "saltos" hacia otras partes del programa. Como todos los 0x0Axx y 0x0Bxx que ves ahi., Cada uno de esos valores es una instruccion.
Pero luego solo se ve que la memoria contiene 0x0FFF , es decir como si no estuviera grabado. O mejor dicho esta protegido el codigo y no se pudo leer o se devolvio eso. Tu programa tiene solo 11 instrucciones. con eso haces poco y nada.

Otra cosa que me hace sospechar que esta protegido es que si te fijas a la derecha donde dice Result, dice CP=OFF Checksum: , y pone N/A, como que al estar activada la proteccion directamente no calcula el cheksum, solo lo haria con el CP=OFF

Proba en tu PIC grabar algo con el bit de configuracion CP en OFF y fijate si aparece. Y luego podes grabar uno con el CP = ON y fijarte nuevamente.

Muchas gracias por tu ayuda Killerjc. Esta noche en casa lo pruebo y te comento!

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: Clonar un PIC10F202 con Pickit3 - Leo, exporto y grabo, pero no funciona
« Respuesta #5 en: 02 de Octubre de 2015, 10:40:45 »
Que tal ataro,

A mi parece que el codigo no esta protegido. Porque en todo el tiempo que he trabajado con PICs, uando el código está protegido arroja 0000 en todas las direcciones del código de programa. En tu caso hay valores en las primeras direcciones, aunque no son muchas las instrucciones, como bien dice KILLERJC. Pero sí está sospechoso.

Ahora bien estas usando MPLABX y yo no lo he usado, me quede en el antiguo MPLAB. Pero el PICKkit3 tambien tiene un software propio que es independiente del MPLAB(x) pareceido al que tenia el PICkit2 y en cuando lees un micro que esta protegido te arroja 0000 en cada localidad de memoria. Espo eso que sospecho que pudiera no estar protegido.

Ojala pudieras colgar el archivo hex que te entrega al realizar la lectura del PIC y así hacer un análisis un poco más profundo.

Saludos.

Elreypic.

Desconectado ataro

  • PIC10
  • *
  • Mensajes: 8
Re: Clonar un PIC10F202 con Pickit3 - Leo, exporto y grabo, pero no funciona
« Respuesta #6 en: 02 de Octubre de 2015, 12:17:02 »
Que tal ataro,

A mi parece que el codigo no esta protegido. Porque en todo el tiempo que he trabajado con PICs, uando el código está protegido arroja 0000 en todas las direcciones del código de programa. En tu caso hay valores en las primeras direcciones, aunque no son muchas las instrucciones, como bien dice KILLERJC. Pero sí está sospechoso.

Ahora bien estas usando MPLABX y yo no lo he usado, me quede en el antiguo MPLAB. Pero el PICKkit3 tambien tiene un software propio que es independiente del MPLAB(x) pareceido al que tenia el PICkit2 y en cuando lees un micro que esta protegido te arroja 0000 en cada localidad de memoria. Espo eso que sospecho que pudiera no estar protegido.

Ojala pudieras colgar el archivo hex que te entrega al realizar la lectura del PIC y así hacer un análisis un poco más profundo.

Saludos.

Elreypic.

Muchas gracias elreypic. Yo, desde mi total ignorancia, al ver valores me alegré un montón porque supuse que no estaba protegido. Me parecía raro que hubiera pocas líneas de código, pero como sus funciones son sencillas (simplemente activa un relé y un transistor durante 50ms al pulsar un switch momentáneo) pensaba que ya estaba bien así.

El programa que comentas, el Pickit3 Programmer standalone, fué el primero que probé, con los mismos resultados, luego pasé al MPLAB.

Ahora estoy en el trabajo, cuando llegue a casa os paso el Hex a ti y a KILLERJC por si queréis echarle un vistazo.

Un saludo y muchas gracias!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Clonar un PIC10F202 con Pickit3 - Leo, exporto y grabo, pero no funciona
« Respuesta #7 en: 02 de Octubre de 2015, 12:25:53 »
Yo me guie por esto del datasheet:

Citar
If the code protection bit has not been programmed, the on-chip program memory can be read out for verification purposes. The first 64 locations and the last location (Reset vector) can be read, regardless of the code protection bit setting.

Al ver que todo lo demas esta como "no programado" en una flash pense eso. si logras subir el .hex de ambos , identifica cual es el original y cual es el de tu PIC. Asi se puede comparar.

Desconectado ataro

  • PIC10
  • *
  • Mensajes: 8
Re: Clonar un PIC10F202 con Pickit3 - Leo, exporto y grabo, pero no funciona
« Respuesta #8 en: 02 de Octubre de 2015, 17:37:19 »
Gracias KILLERJC.

Os dejo los dos HEX, a ver si me podéis orientar dónde puede estar el fallo.

Link:
http://tempsend.com/C5F4A1AFF6/7FE2/Pic10f202.zip

Es un ZIP con los dos archivos, si os va mejor que sea un .rar decídmelo y lo subo.

Os explico mejor lo que he podido averiguar haciendo funcionar el circuito:

Pin VSS a masa
Pin VD a 5V
Pin GP3/MCLR a un interruptor momentáneo que lo conecta a masa
Pin GP2/T0CLK alimenta la base de un transistor BC549, dando masa a la bobina de un relé. El relé es Non-latching, por lo que este pin sólo alimenta en una de cada dos pulsaciones del interruptor momentáneo, y mantiene el relé activado hasta que no pulsas el interruptor momentáneo otra vez.
Pin GP0 alimenta el led de un optoacoplador durante unos 50ms aprox, cada vez que pulsas el interruptor momentáneo.

Los otros pines no sé lo que hacen, pero tampoco veo que sirvan para el circuito donde está montado.

Por lo que he podido ver, el PIC alimenta primero el optoacoplador, a los 20/30ms activa o desactiva el relé, y mantiene el optoacoplador por unos 10 o 20ms más.

Por último, agradeceros que me estéis siendo de tanta ayuda, muchas gracias!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Clonar un PIC10F202 con Pickit3 - Leo, exporto y grabo, pero no funciona
« Respuesta #9 en: 02 de Octubre de 2015, 17:59:46 »
Tal como dijo redpic si lees puro 00 es que esta protegido contra codigo.

Archivo original:
Código: [Seleccionar]
:020000040000FA
:10000000 6400 2500 030A 6D00 6E00 6F00 6400 A10B 00  // 8 posiciones de memoria por cada linea
:10001000 5D0B 000B 2D0B FF0F FF0F FF0F FF0F FF0F EF
:10002000 FF0F FF0F FF0F FF0F FF0F FF0F FF0F FF0F 60
:10003000 FF0F FF0F FF0F FF0F FF0F FF0F FF0F FF0F 50
:10004000FF0FFF0FFF0FFF0FFF0FFF0FFF0FFF0F40
:10005000FF0FFF0FFF0FFF0FFF0FFF0FFF0FFF0F30
:10006000FF0FFF0FFF0FFF0FFF0FFF0FFF0FFF0F20
:10007000FF0FFF0FFF0FFF0FFF0FFF0FFF0FFF0F10        // Aca se cumplen las 64 (8 x 8) posiciones de memoria que es lo que especifica el datasheet que no va a estar protegido por mas que este activado el CP
:100080000000000000000000000000000000000070        // A partir de aca esta protegido y se lee todo 0.
............................. TODO ESTO ES 0 ...................................... desde 08 a 3E
:1003E000000000000000000000000000000000000D
:1003F0000000000000000000000000000000 200C D1     //Ultima posicion de memoria que no esta tocada
:08040000FF0FEF
:00000001FF0FFF0FFF0FFF0FBC
:021FFE00E30FEF
:00000001FF

Y lo unico que cambia es el vector de reset. Entre los 2 archivos.

< :1003F0000000000000000000000000000000200CD1
---
> :1003F0000000000000000000000000000000380CB9


0x0C02 vs 0x0C38 en opcode de diferencia. De todas formas falta todo el programa, ese cambio no va a hacer la diferencia.

Tal ves pusieron el programa apartir de la direccion 0x100 para que no sea legible si es que lo leen y esta activado el CP como en este caso, por eso solo hay una parte del codigo que son los vectores de reset/interrupcion y luego en adelante quedo todo en 0xFFF como si no estuviera grabado para nada.

Desconectado ataro

  • PIC10
  • *
  • Mensajes: 8
Re: Clonar un PIC10F202 con Pickit3 - Leo, exporto y grabo, pero no funciona
« Respuesta #10 en: 02 de Octubre de 2015, 18:04:48 »
Tal como dijo redpic si lees puro 00 es que esta protegido contra codigo.

Archivo original:
Código: [Seleccionar]
:020000040000FA
:10000000 6400 2500 030A 6D00 6E00 6F00 6400 A10B 00  // 8 posiciones de memoria por cada linea
:10001000 5D0B 000B 2D0B FF0F FF0F FF0F FF0F FF0F EF
:10002000 FF0F FF0F FF0F FF0F FF0F FF0F FF0F FF0F 60
:10003000 FF0F FF0F FF0F FF0F FF0F FF0F FF0F FF0F 50
:10004000FF0FFF0FFF0FFF0FFF0FFF0FFF0FFF0F40
:10005000FF0FFF0FFF0FFF0FFF0FFF0FFF0FFF0F30
:10006000FF0FFF0FFF0FFF0FFF0FFF0FFF0FFF0F20
:10007000FF0FFF0FFF0FFF0FFF0FFF0FFF0FFF0F10        // Aca se cumplen las 64 (8 x 8) posiciones de memoria que es lo que especifica el datasheet que no va a estar protegido por mas que este activado el CP
:100080000000000000000000000000000000000070        // A partir de aca esta protegido y se lee todo 0.
............................. TODO ESTO ES 0 ...................................... desde 08 a 3E
:1003E000000000000000000000000000000000000D
:1003F0000000000000000000000000000000 200C D1     //Ultima posicion de memoria que no esta tocada
:08040000FF0FEF
:00000001FF0FFF0FFF0FFF0FBC
:021FFE00E30FEF
:00000001FF

Y lo unico que cambia es el vector de reset. Entre los 2 archivos.

< :1003F0000000000000000000000000000000200CD1
---
> :1003F0000000000000000000000000000000380CB9


0x0C02 vs 0x0C38 en opcode de diferencia. De todas formas falta todo el programa, ese cambio no va a hacer la diferencia.

Tal ves pusieron el programa apartir de la direccion 0x100 para que no sea legible si es que lo leen y esta activado el CP como en este caso, por eso solo hay una parte del codigo que son los vectores de reset/interrupcion y luego en adelante quedo todo en 0xFFF como si no estuviera grabado para nada.

Increíble rápida y elaborada respuesta Killerjc. Te lo agradezco de corazón. MUCHÍSIMAS GRACIAS.

Bueno, viendo esto, lo único que me queda es estudiar mucho y aprender a programar un PIC para que haga estas cuatro funciones, para que comprar el pickit y los pics almenos haya servido de algo. No sé ni por dónde empezar :D

Un abrazo, y reitero, muchas gracias!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Clonar un PIC10F202 con Pickit3 - Leo, exporto y grabo, pero no funciona
« Respuesta #11 en: 02 de Octubre de 2015, 18:10:38 »
Citar
Bueno, viendo esto, lo único que me queda es estudiar mucho y aprender a programar un PIC para que haga estas cuatro funciones. No sé ni por dónde empezar

Primero vas a tener que elegir el lenguaje, si es en C o si es ASM. Todo va a depender desde ahi. Hay mas lenguajes pero no me parecen relevantes a mi gusto, pero hay gente que le gusta BASIC por ejemplo.

En C te vas a salvar de muchas cosas de conocer de la arquitectura del micro, ademas hacer un programa va a ser mas rapido, aunque tal ves necesites aprender C de cualquier tutorial
En ASM vas a tener que conocer el micro mucho mas. Pero las instrucciones y el flujo de programa es mas secuencial e intuitivo, pero para hacer lo mismo que C una instruccion tal ves te lleve VARIAS en ASM y pensar todo en binario.

Curso de XC8 (compilador de Microchip):
http://www.todopic.com.ar/foros/index.php?topic=40649.0

ASM
http://www.todopic.com.ar/foros/index.php?topic=23623.0
http://www.todopic.com.ar/foros/index.php?topic=12345.0

Dependiendo de eso, y que expliques exactamente lo que hace el PIC se puede hacer el programa. y un esquematico del circuito tambien ayudaria.
Mi consejo es ir por C, C tenes 2 compiladores de los mas conocidos, XC8 y CCS, personalmente prefiero XC8 por que puedo ver el datasheet del micro y escribir los registros con los valores que quiero, pero de gustos como ya dije depende de cada uno.
« Última modificación: 02 de Octubre de 2015, 18:44:41 por KILLERJC »

Desconectado ataro

  • PIC10
  • *
  • Mensajes: 8
Re: Clonar un PIC10F202 con Pickit3 - Leo, exporto y grabo, pero no funciona
« Respuesta #12 en: 02 de Octubre de 2015, 18:58:05 »
Citar
Bueno, viendo esto, lo único que me queda es estudiar mucho y aprender a programar un PIC para que haga estas cuatro funciones. No sé ni por dónde empezar

Primero vas a tener que elegir el lenguaje, si es en C o si es ASM. Todo va a depender desde ahi. Hay mas lenguajes pero no me parecen relevantes a mi gusto, pero hay gente que le gusta BASIC por ejemplo.

En C te vas a salvar de muchas cosas de conocer de la arquitectura del micro, ademas hacer un programa va a ser mas rapido, aunque tal ves necesites aprender C de cualquier tutorial
En ASM vas a tener que conocer el micro mucho mas. Pero las instrucciones y el flujo de programa es mas secuencial e intuitivo, pero para hacer lo mismo que C una instruccion tal ves te lleve VARIAS en ASM y pensar todo en binario.

Curso de XC8 (compilador de Microchip):
http://www.todopic.com.ar/foros/index.php?topic=40649.0

ASM
http://www.todopic.com.ar/foros/index.php?topic=23623.0
http://www.todopic.com.ar/foros/index.php?topic=12345.0

Dependiendo de eso, y que expliques exactamente lo que hace el PIC se puede hacer el programa. y un esquematico del circuito tambien ayudaria.
Mi consejo es ir por C, C tenes 2 compiladores de los mas conocidos, XC8 y CCS, personalmente prefiero XC8 por que puedo ver el datasheet del micro y escribir los registros con los valores que quiero, pero de gustos como ya dije depende de cada uno.

Muchas gracias. Voy a hacerte caso e ir a por C, voy a leerme todo lo que pueda. El esquematico del circuito ya lo hice. Me pongo a estudiar!

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: Clonar un PIC10F202 con Pickit3 - Leo, exporto y grabo, pero no funciona
« Respuesta #13 en: 03 de Octubre de 2015, 08:37:57 »
Gracias KILLERJC,

Te me adelantaste en la respuesta.

Saludos.

Elreypic.