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

Temas similares

17/12/2010 #1

Avatar de xodin

Como Configurar el Reloj Interno del PIC12F629 en CCS
Hola a todos, mi problema es como calibrar el reloj interno del PIC12F629 en ccs ya que en asm es de la siguiente forma:

bsf STATUS,RP0
call 3FF
movwf OSCCAL //registro que calibra el reloj interno
bsf STATUS,RP0
************************
************************
ORG 0x3FF
retlw 0x20 // es el codigo que viene en cada pic12f629 varia en cada pic se
END //encuentra en la posicion de programa 3FF

Pero como se configura esto en lenguaje C en CCS ?????
antemano gracias
17/12/2010 #2


prueba con esto:

#org 0x3ff,0x400
const char reloj=0x20;

y despues en el codigo
OSCCAL=reloj;
17/12/2010 #3

Avatar de ByAxel

#org a ese rango no lo permite (sale error) y no tiene sentido crear una constante en ese lugar ya que al hacerlo se a sobre escribir el valor que se encuentra en esa dirección.

Lo mismo en este caso:
Código:
ORG 0x3FF
retlw 0x20
esta devolviendo el valor 0x20 y ese valor lo escribe en el registro OSCCON... por ningún lado veo que uses el contenido de la dirección 0x3FF.

Es decir que básicamente solo haces:
OSCCON = 0x20

Los registro no se pueden usar libremente, para eso hay que declarar y una forma es esta:
Código:
#byte OSCCAL = getenv("SFR:OSCCAL")
Realmente buscas más precisión ya que al configurar #FUSES INTRC_IO el PIC usa el oscilador interno a 4Mhz 1%.
O intenta usar directo asm:
Código:
void main()
{
   #asm
   bsf   STATUS,5 
   call  0x3FF
   movwf OSCCAL
   #endasm
pero te digo que crear un #org en la dirección 0x3FF no lo permite.
17/12/2010 #4

Avatar de electroconico

Puedes poner esto en caso de que hallas borrado el valor de calibracion o simplemente reescribirlo desde el compilador.

Código:
#rom 0x3FF = {0x3480}
Escribes directamente en el registro.

Código:
 #include <12F629.h>
#FUSES INTRC_IO,NOWDT,PUT,MCLR,BROWNOUT,NOPROTECT,NOCPD
#use delay(internal=4MHZ)
#rom 0x3FF = {0x3480}
En los pics que he tenido el valor ronda entre 70-80
19/12/2010 #5

Avatar de xodin

Bueno en mi caso mi valor de calibracion es de 4C pero el motivo por el que se hace en asm lo siguiente:

bsf STATUS,RP0
call 3FF
movwf OSCCAL //registro que calibra el reloj interno
bsf STATUS,RP0
************************
************************
ORG 0x3FF
retlw 0x20 // es el codigo que viene en cada pic12f629 varia en cada pic se
END //encuentra en la posicion de programa 3FF

es por q en el la direccion 3FF de la flash tiene que estar en 34XX (XX calibracion) recuerda que

retlw k su codigo de operacion es de 11 01xx kkkk kkkk
3 4 k k (esto en la flash 3FF para una
correcta calibracion en mi
caso
vendria hacer
3424)
tambien OSCCAL= xx pero en ccs osea programando en C como se inserta este codigo; ya que estos PIC son muy utiles debido a su reducido tamaño.

19/12/2010 #6

Avatar de ByAxel

Estuve revisando y sorpresa ya no te esfuerces en hacer un código para eso ya que el mismo compilador hace lo que buscas... revisé el archivo *.lst que genera al compilar y ahí está este bloque de código al inicio de todo:

Código:
0000:  MOVLW  00
0001:  MOVWF  PCLATH
0002:  GOTO   004
0003:  NOP
0004:  CALL   3FF
0005:  BSF    STATUS.RP0
0006:  MOVWF  OSCCAL
0007:  MOVLW  00
0008:  MOVWF  PCLATH
0009:  GOTO   main
19/12/2010 #7

Avatar de xodin

ummm si pero como inserto mi valor de calibracion de 4C en 3FF?? por qUE esa direccion en el lst no aparece.
20/12/2010 #8

Avatar de ByAxel

Ya te lo han sugerido:
Una vez sepas que valor tiene en la dirección 3FF al leer el PIC, usa #rom 0x3FF = {0x344C} al final del código.
20/12/2010 #9

Avatar de xodin

ok gracias a todos, me complicaba debo practicar mas c++, es mucho mas facil que asm; por ningun foro encontraba esta informacion ahora si gracias a todos otra vez
Respuesta
¿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.