Valor OSCCAL del PIC12F508

#1
Hola a todos, escribo este texto para presentarles una duda que tengo con el codigo OSCCAL del PIC12F508.

Estoy tratando de hacer un codigo sencillo de encender y apagar un LED con el pic 12F508, pero al momento de quemar el pic atraves de PICkit me da un error en el valor OSCCAL, realmente soy nuevo en el tipo de PIC, anteriormente he programado PICs16F y no me habia pasado eso!

Este es el Codigo que estoy haciendo (Super sencillo, lo que quiero es que funcione la programadora)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LIST P=12F508, r=hex
include <P12F508.INC>

OUT7 EQU 0 ;GP0 QUE ES LA PATA 7

ORG 0
CLRWDT
MOVLW b'11000000'
OPTION
MOVLW b'00001000'
TRIS GPIO
BCF GPIO,OUT7 ;BORRO LA SALIDA

INICIO

BSF GPIO,OUT7 ; ENCIENDE EL LED
BCF GPIO,OUT7 ; AGAPA EL LED

GOTO INICIO
END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Que debo agregar para que pueda quemar en el PIC??
En Proteus funciona normal, pero al momento de pasar el archivo HEX a PICkit y voy a transmitir el codigo al PIC me da ese error.

De antemano gracias por su ayuda!!
 
#2
el valor osccal viene grabado de fabrica, y sirve para calibrar el oscilador, si lo perodiste o borraste, puedes ajustarlo de forma automatica con algunos programadores o armar un circuito que usa la red electrica, deja buscarlo y lo coloco aqui

mira es algo como esto:

http://picprojects.org.uk/projects/recal/recal.htm
 
Última edición:
#3
Hola
El PIC12F508 tiene configurado el OSCCAL de fábrica, por eso se lee primero la memoria antes de grabar algo, el valor se encuentra en la última parte de la memoria y siempre debe de estar ahí.

Pero es posible recuperar desde el PicKit, ve a Tools > OSCCAL > Auto Regenerate.

Saludos
 
#4
papirrin ya ByAxel me dijo que lo podia regenerar automaticamente desde PICkit, pero ahora lo que no se es si tengo que colocar algo mas en el codigo, xq de igual forma me sigue dando error cuando voy a escribir el PIC



Cuando le doy auto regenerar valor OSCCAL me dice esto
 

Adjuntos

Última edición:
#5
No tengo el pickit, ni uso mucho ASM pero supongo que debes cerciorarte que si este en la memoria el valor de calibracion al grabarlo.



aaahh! si falla la recalibracion automatica debes hacerlo con un metodo manual como el circuito que puse, o comprar otro pic y apuntar el valor en un cuaderno. :D
 
Última edición:
#6
jajajaja Por Suerte tengo varios PICs, pero entonces quiere decir que ya tengo 6 PICs que debo recuperar manual :D :D, que hago para que los otros PICs no me pase lo mismo???

Seguro que no tengo que agregarle otra variable en el Codigo? lee el codigo a ver si le falta algo de eso o asi deberia funcionar.
 
#7
que hago para que los otros PICs no me pase lo mismo???
antes de grabar nada lee el pic y apunta en un cuaderno el valor del osccal, que esta en el ultimo registro de la memoria flash.



Seguro que no tengo que agregarle otra variable en el Codigo?
segurisimo, puedes escribir ese valor que tienes perdido desde codigo en el registro, pero si no lo sabes da lo mismo
 
Última edición:
#8
Bueno voy a intentar con otro PIC a ver y luego posteo el resultado.

Mas adelante me falta buscar la forma de recuperar los otros PICs xq no puedo perderlos!

Luego de obtener ese valor de OSCCAL que hago con el??
 
#9
nada solo fijate que al grabar tu pic aparezca el valor del osccal correcto al grabar el pic en esta parte:

Dibujo.JPG

pero el error ese que te aparece en el pickit de 0x00000 generalemete aparece cuando esta dañado el pic o hay algo mal conectado. verifica eso.
 
#10
No, cuando leo el PIC no me sale ningun tipo de codigo, considero que es que no tiene ninguna programacion entonces no tiene nada que mostrar!

Me dice valor invalido

Ahhhhhhhh ok ok listo ya lo tengo!!!



Ahora..... incerto el PIC, Exporto el archivo HEX y le doy grabar a ver?
 
Última edición:
#11
mira estuve viendo el datasheet, y no se si en asm debes escribir ese valor en el registro 05h o lo coloca por default como en basic o en C, por las dudas hazlo desde tu codigo.
 
#13
no se mucho asm jajajaja

pero a ver... yo intentaria asi:

BCF 03h,5 ; Ve al banco 0
MOVLW 348Ch ; Pon valor del Osscal que esta en el flash por ejemplo 348C
MOVWF 05h ; Mueve valor oscal a registro oscall
 
#14
jajaja bueno el intento vale, creo que entonces quedaria algo asi:
LIST P=12F508, r=hex
include <P12F508.INC>

OUT7 EQU 0 ;GP0 QUE ES LA PATA 7

ORG 0
CLRWDT
MOVLW b'11000000'
OPTION
MOVLW b'00001000'
TRIS GPIO
BCF GPIO,OUT7 ;BORRO LA SALIDA

BCF 03h,5 ; Ve al banco 0
MOVLW 348Ch ; Pon Osscall
MOVWF 05h ; Mueve valor oscal a registro oscall

INICIO

BSF GPIO,OUT7 ; ENCIENDE EL LED
BCF GPIO,OUT7 ; AGAPA EL LED

GOTO INICIO
END
 
#15
si mas o menos pero el 348c solo lo puse como ejemplo, debe ser el que tiene el pic, que no se cual sea, y estaba viendo que el 12f508 solo tiene un banco asi que podria omitirse el bcf 03h,5 pero bueno debe funcionar.

si te sigue marcando error pon una imagen del error.
 
#18
Lo que puedo hacer es probar con el valor que sale en el link que adjuntastes ateriormente, algo asi:

CALL 3FFH ; VALOR DE OSCILADOR
MOVWF OSCCAL ; PARA CALIBRAR

Y listo con eso deberia funcionar, vamos a ver...
 
#19
si pero no es 3ffh porque el 12f508 no llega hasta alla la memoria, creo que seria 1fh

y deberias ver si en el archivo inc dice algo como:

osccal equ 05h

por eso te puse,como te puse el codigo. se entiende?



Código:
LIST P=12F508, r=hex
include <P12F508.INC>

VOSC equ 1fh

OUT7 EQU 0 ;GP0 QUE ES LA PATA 7

ORG 0
CLRWDT
MOVLW b'11000000'
OPTION
MOVLW b'00001000'
TRIS GPIO
BCF GPIO,OUT7 ;BORRO LA SALIDA

MOVF VOSC,0 ; Pon Osscall
MOVWF OSCCAL ; Mueve valor oscal a registro oscall

INICIO

BSF GPIO,OUT7 ; ENCIENDE EL LED
BCF GPIO,OUT7 ; AGAPA EL LED

GOTO INICIO
END
no seria asi? lo que quiero es apuntar VOSC al registro 1fh
 
Última edición:
#20
Eso podria funcionar, pero ahora lo mejor de todo es que me esta dando este error:

no me deja exportar archivos nada, no se que fue lo que hice!!

Por los momentos tengo que dejar la oficina, pero seguire posteando los resultados

Gracias por la ayuda y tu tiempo en escribir y tratar de ayudarme, acepta la solicitud y te estare informando de los resultados.

Saludos
 

Adjuntos

Temas similares

Arriba