Autor Tema: ICSP: voltage para desactivar CP ?  (Leído 1372 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pollastre

  • PIC12
  • **
  • Mensajes: 65
ICSP: voltage para desactivar CP ?
« en: 07 de Abril de 2007, 13:58:04 »
Estimados foreros,

a ver si alguien me puede echar un cable con ésta...

en un pequeño sistema formado por dos 16F689, uno de ellos actua como controlador (digamos, un watchdog), y es capaz de reprogramar el código del otro.

Para ello, he programado un ICSP en ese 16F689, y funciona perfecto.

Ahora bien, en la version final, ambos PICs tendran habilitado el bit de proteccion de codigo (CP) en la palabra de configuracion. Y aquí viene la duda:

El sistema funciona con una bateria de LI-on, con lo cual Vdd=3,7 volts. Para reprogramar el 16F689 deshabilitando la proteccion de codigo, según datasheet, se recomienda hacer un bulk erase de la memoria de programa, para luego reescribir la palabra de configuración.

El problema es que el datasheet especifica claramente que un bulk erase REQUIERE Vdd = [4,5-5,5] volts. Al contrario que los otros comandos (load word for program, load configuration, etc...) que pueden funcionar a partir de Vdd = 2,0 volts

Por lo tanto, se diría en principio que con Vdd = 3,7 volts no es posible deshabilitar la proteccion de codigo si hacemos caso al datasheet (???), lo que para mí no tiene demasiado sentido.

Luego viene una pequeña contradicción : en el mismo datasheet, cuando explica los bits de la palabra de configuracion, aparece una pequeña nota que dice "Si se desactiva el bit de CP en la palabra de configuracion, se borrará automaticamente la memoria de programa".

Eso es totalmente lógico, ya que en un pic protegido, la desactivacion de CP debe al mismo tiempo borrar el código. Perfecto. Si esto último fuera cierto, podría entonces realizar toda la desprotección + reprogramación + protección  a 3,7v, ya que en ningún momento necesitaría un bulk erase.

Lo que me despista es que, anteriormente, el mismo datasheet te recomienda hacer un bulk erase para deshabilitar CP (cosa que no puedo hacer por carecer de 4,5v en Vdd).

Entonces, mi pregunta es : existen por lo tanto dos metodos de borrar una memoria de programa protegida ? ( primero :a traves de un bulk erase ;  segundo : simplemente desactivando la proteccion de codigo )

gracias por la aclaración y un saludo,

l'pollastrê



 

anything