PICKit 3 ¿Cómo proteger el código?

Buenas tardes,

Imagino que muchos estaréis familiarizados con el sistema de volcado de un .hex en un pic mediante Pickit3, y mi duda es que no encuentro la opción de proteger código.
En pickit 2 se encontraba en Tools // "Enable Code Protected"

No se si es que han debilitado esta opción o es que hay que habilitarla de otra forma, agradecería cualquier comentario sobre el tema.

Un saludo.
Gracias de antemano. ...
 
Puedes hacerlo de dos formas.

  1. Por configuración de fuses en el programa.
  2. Por configuración de bits en el PICKit 3, en donde dice Configuration: XXX
Para saber que bits de la palabra de configuración tienes que establecer, debes ver la hoja de datos.
 
Perdonad mi ignorancia, pero no estoy muy puesto en el tema.
En el dataSheet hace mención a la protección con con estos parámetros, es un pic 16F946.

bit 7 CPD: Data Code Protection bit(2)
1 = Data memory code protection is disabled
0 = Data memory code protection is enabled
bit 6 CP: Code Protection bit(3)
1 = Program memory code protection is disabled
0 = Program memory code protection is enabled

(2): The entire data EEPROM will be erased when the code protection is turned off.
(3): The entire program memory will be erased when the code protection is turned off.

¿Por lo que poniendo estos 2 únicos bits a 0 debería de valer? (Accediendo a Configuration).

Y mediante modificación de fuses seria:

#FUSES CPD
#FUSES PROTECTED


Gracias por la respuesta.
 
Última edición:
OK. Ya viste que cuando el bit 6 y el bit 7 están en 0, es cuando se habilita la protección.
El Bit 7 habilita la protección de datos de la memoria EEPROM
Y el Bit 6 habilita la protección de código o memoria Flash.

Entonces en el PICKit 3 debes establecer esos bits en 0, en dado caso que requieras las dos protecciones.
PK3 Configuration Word.jpg

Pero también tendrás que configurar otros bits conforme a la palabra de configuración que requieras.
Si tienes el código fuente te será más sencillo, agregando la palabra de configuración.

Veo que usas PIC C Compiler. Si gustas dime el tipo de oscilador y frecuencia que usarás, para decirte como debe ser la palabra de configuración.
 
Siempre he tenido problemas con lo que respecta al usar los PICKIT. Entremos en contexto. Hace unos meses grabé un pic y ahora lo quiero usar en otra aplicación (use el modo half bridge con una frecuencia de 20 kHz de operación ) sin embargo, ahora lo que quiero es programarlo de nuevo y no me es posible dado que me sale lo siguiente. Que puedo hacer ?
 

Adjuntos

  • 1.JPG
    1.JPG
    18.4 KB · Visitas: 16
  • 2.JPG
    2.JPG
    81.2 KB · Visitas: 18
Ya he intetado borrarlo pero no me permite grabarlo. Aqui adjunto las imagenes.
1. Leo el codigo que tengo en el PIC
2. Borro lo que tiene el Pic
3. Le quito las protecciones de datos y de codigo
4. Noto que me cambia la palabra de configuración C00F
5. Intento grabar el PIC y me brinca un error.

AYUDA POR FAVOR..!
 

Adjuntos

  • 1.JPG
    1.JPG
    116.8 KB · Visitas: 14
  • 2.JPG
    2.JPG
    115.6 KB · Visitas: 11
  • 3.png
    3.png
    191.2 KB · Visitas: 10
  • 4.JPG
    4.JPG
    37.5 KB · Visitas: 13
  • 5.JPG
    5.JPG
    118.4 KB · Visitas: 13
Cualquier PIC puede ser reprogramado y borrado aunque se establezca la protección de código o memoria.
De igual forma puede ser leído pero si está protegido solo se leerán ceros.
Los PICkit programan en ICSP con alto voltaje, de hecho todos lo hacen, así se programan estos microcontroladores.
A menos de que se use LVP, pero este tipo de programación por bajo voltaje también reprograma los fuses.
Los PIC no son como los ATmega en este aspecto.
 
.


Disculpen que me entrometa, si cuando lo vuelves a grabar con un PicKit 2 por ejemplo y le colocas el Fuse para protegerlo, en la verificación que realiza luego de grabarlo te dará ERROR !!!

Se recomienda realizar las pruebas previas de depuración y prueba del programa sin la protección, una vez que se este seguro que funciona como uno desea lo vuelve a grabar con dicha protección de lectura.




Salu2.-
 
Es decir que tengo que configurar mi Pickit 3, en modo LVP para poder grabarlo?
No, ya lo dije, y lo he dicho en otros post. Un PIC siempre puede ser reprogramado sin importar que se hayan establecido los fuses de protección.
Así sea, por ICSP de alto voltaje o por LVP, eso no importa en los PIC.
Los fuses siempre se reprograman con lo que tenga el archivo. hex.
Y en dado caso que eso no se establezca por código, se programará con los fuses por defecto, y eso viene en la hoja de datos.
Mira, para que entiendas, los PIC no tienen problema con los fuses al momento de se programados.
Disculpen que me entrometa, si cuando lo vuelves a grabar con un PicKit 2 por ejemplo y le colocas el Fuse para protegerlo, en la verificación que realiza luego de grabarlo te dará ERROR !!!
Sí, eso es normal, la lectura de un PIC cuando tiene protección de código siempre dará ceros.
Esto lo he dicho ya y en muchas ocasiones.
Si un PIC se protege, es lógico que la verificación dé error desde la primer dirección.
¿En dónde está la logíca de un programador si no pueden entender eso?
PIC protegido: Grabas 0x7865 y la verificación te da 0x0000
Nada fuera de lo normal. ¿Qué cosa es lo que no entienden?
 
He solucionado el problema. Agradezco al moderador por compartir su conocimiento, sin embargo, con ello no pude solucionar mi problema.
Jamás en mi vida he puesto un fuse de protección. Sin embargo al leer el PIC me saltaba como prtección.
Ahora si..! Entremos en contexto para solucionar esta problemática.
  1. Al leer el Pic me refleja en el GUI del pickit3 "ALL PROTECT"
  2. Cuando he querido grabar el PIC [teniendo en cuenta que si se podría dado los pic no importa si tienen activados los fuses de protección. "DEBERÍA" permitir la sobreescritura] Sin embargo, no me permite grabar y me refleja el siguiente error Programming failed at program memory address 0x00002
  3. Despues de probar de todo, gritar e incluso dormir soñando cual es la posible solución.
  4. Deducí que el problema es de HARDWARE. (yo realizó la programación de los pic en el circuito montado solo conecto los pines correspondiente)
  5. Y estaba un resistor de 1Kohm ENTRE MCLR Y VDD. Por lo tanto lo ví y dije: tu eres el responsable de mi miseria.!!
  6. Finalmente lo desconecté y el programa se pudo grabar en el PIC.
Por lo tanto un SINTOMA de problemas de HARDWARE y que no te permita grabar tu pic es: que al leer el pic te muestre como all protect Y que te muestre un error "Programming failed at program memory address 0x00002" al querer grabar tu pic.

Saludos mi gente bella desde el rincón más bello del planeta tierra..!!!
 

Adjuntos

  • 6.JPG
    6.JPG
    122.3 KB · Visitas: 9
Atrás
Arriba