Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

28/03/2014 #1


Valor OSCCAL del PIC12F508
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!!
28/03/2014 #2

Avatar de papirrin

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
28/03/2014 #3

Avatar de ByAxel

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
28/03/2014 #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

---------- Actualizado después de 6 minutos ----------

Cuando le doy auto regenerar valor OSCCAL me dice esto
Imágenes Adjuntas
Tipo de Archivo: jpg Captura.jpg (114,3 KB (Kilobytes), 36 visitas)
28/03/2014 #5

Avatar de papirrin

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.

---------- Actualizado después de 2 minutos ----------

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.
28/03/2014 #6


jajajaja Por Suerte tengo varios PICs, pero entonces quiere decir que ya tengo 6 PICs que debo recuperar manual , 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.
28/03/2014 #7

Avatar de papirrin

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
28/03/2014 #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??
28/03/2014 #9

Avatar de papirrin

nada solo fijate que al grabar tu pic aparezca el valor del osccal correcto al grabar el pic en esta parte:



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.
Imágenes Adjuntas
Tipo de Archivo: jpg Dibujo.JPG (31,1 KB (Kilobytes), 79 visitas)
28/03/2014 #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!!!

---------- Actualizado después de 2 minutos ----------

Ahora..... incerto el PIC, Exporto el archivo HEX y le doy grabar a ver?
28/03/2014 #11

Avatar de papirrin

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.
28/03/2014 #12


Podrias hacer un ejemplo de como escribirias el codigo? sigo sin resolver, me da el mismo error!!
28/03/2014 #13

Avatar de papirrin

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
28/03/2014 #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
28/03/2014 #15

Avatar de papirrin

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.
28/03/2014 #16


Osea, ahi deberia ir es el valor del Oscilador?
28/03/2014 #17

Avatar de papirrin

si, el que te dije que leyeras del ultimo registro de la memoria flash
28/03/2014 #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...
28/03/2014 #19

Avatar de papirrin

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?

---------- Actualizado después de 19 minutos ----------

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
28/03/2014 #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
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.