El procedimiento para recuperar el valor de fábrica de OSCCAL es igual al que se trató por aquí: Consulta de osccal del 12f629
Solo que en los 12F508 se encuentra en la dirección 0x1FF y en el 12F509 en la dirección 0x3FF
También existe una locación reservada para un backup de los bits de OSCCAL: 12F508 = 0x204 y 12F509 = 0x404
El programador no borra esas direcciones, pero se pueden borrar por accidente.
Cuando eso sucede, se puede leer esa dirección y obtener el valor de fábrica el cual deberá ser escrito nuevamente en la última dirección de memoria RAM del PIC.
En los PIC12F6XX lo que se encuentra en la última dirección es un RETLW 0xXX
Dónde 0xXX es el valor de calibración para el registro OSCCAL.
Al leer esa dirección se mira algo como esto 3430 (34 = RETLW y 30 el valor para OSCCAL)
En los PIC12F508/509 la lectura encontrada es un MOVLW 0xXX
Aquí se verá algo así por ejemplo: 0C30 (0C = MOVLW y 30 el valor para OSCCAL)
Solo que en los 12F508 se encuentra en la dirección 0x1FF y en el 12F509 en la dirección 0x3FF
También existe una locación reservada para un backup de los bits de OSCCAL: 12F508 = 0x204 y 12F509 = 0x404
El programador no borra esas direcciones, pero se pueden borrar por accidente.
Cuando eso sucede, se puede leer esa dirección y obtener el valor de fábrica el cual deberá ser escrito nuevamente en la última dirección de memoria RAM del PIC.
En los PIC12F6XX lo que se encuentra en la última dirección es un RETLW 0xXX
Dónde 0xXX es el valor de calibración para el registro OSCCAL.
Al leer esa dirección se mira algo como esto 3430 (34 = RETLW y 30 el valor para OSCCAL)
En los PIC12F508/509 la lectura encontrada es un MOVLW 0xXX
Aquí se verá algo así por ejemplo: 0C30 (0C = MOVLW y 30 el valor para OSCCAL)
Dirección de Backup de OSCCAL en PIC12F508
Lectura de un PIC12F508 en la dirección 0x1FF
Lectura de un PIC12F508 en la dirección 0x1FF
Esta herramienta que yo escribí puede recuperar un valor muy cercano al valor de fábrica para OSCCAL
OSCCAL Recovery Tool
Sin embargo no escribí el programa para un PIC12F508, el cual adjunto aquí en este post.
Este programa funciona a través del puerto serial, pero también se puede hacer uso de un conversor de USB a puerto serial RS-232 como lo es el chip FT232RL
Sin embargo no escribí el programa para un PIC12F508, el cual adjunto aquí en este post.
Este programa funciona a través del puerto serial, pero también se puede hacer uso de un conversor de USB a puerto serial RS-232 como lo es el chip FT232RL
Conexión con FT232RL
Usando el programa para recuperar el valor de fábrica para el oscilador.
Usando el programa para recuperar el valor de fábrica para el oscilador.
Así es como obtengo el valor de fábrica para OSCCAL y es el que se vuelve a escribir en la dirección 0x1FF
Nota: aquí se mira un RETLW ya que el programa fue escrito para los PIC12F6XX, pero lo que importa es el valor encontrado, en este caso la lectura correcta de en medio (48 = 0x30)
Suerte.
Nota: aquí se mira un RETLW ya que el programa fue escrito para los PIC12F6XX, pero lo que importa es el valor encontrado, en este caso la lectura correcta de en medio (48 = 0x30)
Suerte.
Adjuntos
Última edición: