TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Veguepic en 22 de Diciembre de 2006, 22:32:27

Título: Oscilador Interno de los PIC's
Publicado por: Veguepic en 22 de Diciembre de 2006, 22:32:27
Hola Amigos:

Les cuento mis aventuras y desventuras con los osciladores internos para ver si le son utiles a alguien y tambien para que si he hecho algo mal me corrijan.

Primero probe el siguiente circuito, usando un 12F508 como emisor y un 16F84 como receptor:

(http://img207.imageshack.us/img207/6137/12f508y16f84wn7.th.jpg) (http://img207.imageshack.us/my.php?image=12f508y16f84wn7.jpg)

Todo funciono perfecto, al presionar cada boton este envia un mensaje y se visualiza en el LCD, incluso lo probe usando modulos de 433 MHz,  use el oscilador interno del 12F508, y un cristal de 4 MHz con el 16F84, pues no tiene oscilador interno.

Luego probe el siguiente circuito, remplazando el 16F84 por otro 12F508 con su oscilador interno:

(http://img187.imageshack.us/img187/3739/12f508y12f508ey7.th.jpg) (http://img187.imageshack.us/my.php?image=12f508y12f508ey7.jpg)

Y todo bien, al presionar un boton se prende el respectivo led, tambien probado usando modulos de RF, luego quise usar el primer circuito remplazando el 12F508 por un 12F675, y el 16F84 por un 16F628, trabajando ambos con el oscilador interno, aqui empezaron mis problemas.
Título: Re: Oscilador Interno de los PIC's
Publicado por: Veguepic en 22 de Diciembre de 2006, 22:54:08
Usando el 12F675 y 16F628 no pude hacer andar el circuito.

En vista de esto use el emisor con el 12F508 con oscilador interno, el cual funciona perfectamente, y en el receptor use el 12F628 usando el oscilador interno tambien, lo simule en proteus y funciono perfecto, luego arme el circuito y no ando.

Tras mucho probar con el oscilador interno, decidi usar el oscilador externo con un cristal de 4MHz y o maravilla, todo perfecto por lo cual la falla es del oscilador interno.

Inmediatamente me puse a leer el datasheet y no pude encontrar el registro para ajustar la frecuencia del oscilador interno, debe ser porque no lo tiene y es mas, por lo que veo en el datasheet la frecuencia puede variar desde  3.65  hasta  4.28  MHz, esto es un error de  -8.75%  a  +7%  !!!!!

Entonces medi la frecuencia del oscilador interno del PIC 16F628 y en mi caso el error es algo mayor al 3% por lo que no podre usarlo en mi circuito, es mas en ninguno que implique  comunicaciones.

Debo acotar que el oscilador interno del 12F508 tiene un error de ±1%, el cual viene calibrado de fabrica de fabrica, con este porcentaje de error no he tenido ningun problema. El registro para ajustar la frecuencia es el OSCCAL, 05h, aunque con el valor de fabrica no es necesario tocarlo, solo que antes de grabarlo el PIC deben primero leer el valor de este registro para que al momento de grabar mantenga este valor. Esto winpic lo hace sin ningun problema.

De momento seguire usando el 16F84 con el cristal de 4 MHz en lo que consigo otro pic de 18 pines con oscilador interno con error de ±1% , ahora tengo otro problema, por error borre la calibracion de fabrica del 12F675, asi que ahora lo estoy ajustando, ya les contare como me va y si logro hacerlo andar.

Espero tambien compartan sus experiencias con los osciladores externos.

Saludos
Título: Re: Oscilador Interno de los PIC's
Publicado por: micro_cadaver en 23 de Diciembre de 2006, 00:42:49
hola veguepic, yo use el 16F818 y tiene para escoger desde 500KHz hasta 8Mhz e incluso menos aun , y ademas tiene un registro de calibracion de su oscilador interno. :-)
Título: Re: Oscilador Interno de los PIC's
Publicado por: ESTECA55 en 23 de Diciembre de 2006, 01:13:37
Yo e utilizado los 12c509 y 16f628 con los osciladores internos y funcionan muy bien, el 628 solo me trajo un pequeño problema, tuve que grabarlo 3 veces hasta que comenzó a funcionar el oscilador interno jojo, (como que tuve que asentarlo jajaja) después de eso funciono de 10, y los 12c509 nunca me trajeron problemas.

Saludos
Título: Re: Oscilador Interno de los PIC's
Publicado por: Veguepic en 23 de Diciembre de 2006, 02:42:57
Hola Henry:

No tengo ese pic pero al tener un registro de calibracion supongo que se puede lograr una precision del orden de ±1%, por aqui tengo un 16F88 con frecuencias similares, voy a probarlo a ver si me sirve para el circuito que quiero implementar.  :-)

Hola Esteban:

Revisando la hoja de datos del 12C509 veo que el oscilador interno tiene el mismo rango de frecuencias que el 16F628, 3.65 a 4.28 MHz, pero al tener un registro de calibracion supongo que viene calibrado de fabrica con la misma precision que el 12F508 osea ±1%. He vuelto a revisar la hoja tecnica del 16F628 y aun no encuentro el registro de calibracion.  :(

En que aplicaciones usaste el 16F628 ??

Ea Esteban, tu segundo nombre no es Jesus?  :mrgreen:

Si bien ambos PIC 12F675 y 16F628 digo que no he podido hacerlos funciona, me refiero al circuito de comunicaciones que quiero implementar, para otros circuitos de prueba que he armado en donde la precision del oscilador interno no es critica funcionan sin problemas.

Saludos y un abrazo a ambos.

Hugo

P.D. acabo de encontrar la aplicacion 00250A de Microchip para autocalibrar el oscilador interno del 12F675, ya tocara mañana ver si puedo implementarla con los instrumentos que tengo.
Título: Re: Oscilador Interno de los PIC's
Publicado por: ESTECA55 en 23 de Diciembre de 2006, 04:58:07
Hola, el 16f628 con el oscilador interno lo usamos con un amigo para hacer un control de luces, por lo cual no tenia necesidad de un cloc tan preciso, simplemente queríamos hacer algo barato, y como te ahorras un cristal, pues pusimos el oscilador interno, por lo que tengo entendido, no tiene registro de calibración, esto dice la hoja de dato: "Precision internal 4 MHz oscillator factory calibrated to +- 1%", con lo cual parece venir calibrado calibrado.

Citar
Ea Esteban, tu segundo nombre no es Jesus?  Mr. Green
jejeje supongo que es por la fecha de cumpleaños, no sos el primero que me hace ese chiste jejeje


Saludos
Título: Re: Oscilador Interno de los PIC's
Publicado por: maunix en 23 de Diciembre de 2006, 05:31:17
Les cuento mis aventuras y desventuras con los osciladores internos para ver si le son utiles a alguien y tambien para que si he hecho algo mal me corrijan.


veguepic, siendo generalistas sobre el término oscilador interno, te comento que yo los uso habitualmente en comunicaciones que son asíncronas (donde los timings toman gran importancia porque es lo único que permite que la comunicación sea buena) y andan perfectamente.

No solo eso sino que son equipos que funcionan hace tiempo y siguen funcionando.

Según leo del datasheet el PIC12F508 sí tiene registro de calibración, te expongo lo extraído del mismo

DataSheet 41236 versión b  - Sección 4.2 (http://ww1.microchip.com/downloads/en/DeviceDoc/41236B.pdf)
Location 01FFh (PIC12F508) and location 03FFh (PIC12F509) contain the internal clock oscillator calibration value. This value should never be overwritten.

En caso que lo hayas sobreescrito, puedes ir probando cargando valores a dicha posición hasta lograr que la frecuencia sea la adecuada.

Lo que debes hacer en tu código es casualmente hacer que en dicha posición se grabe un valor y tu 1er línea debiera ser algo así como

Código: ASM
  1. call     0x1FF
  2.       movwf    OSCCAL


Espero te haya servido.
Título: Re: Oscilador Interno de los PIC's
Publicado por: xocas en 23 de Diciembre de 2006, 10:46:56
hola veguepic

en su dia, y gracias a la ayuda de maunix, consegui poner a funcionar un sistema de transmision de datos en el cual necesitaba los dos pines del oscilador de un 12f675 y tratare de ayudarte aunque perdona porque estoy en plena mudanza, con el ordenador recien formateado y los archivos del proyecto ya guardados en alguna caja... si mi memoria no me falla esta es la solucion en pbp: (para tu imagen de los leds)

*****************************
include "modedefs.bas"
DEFINE OSCCAL_1K 1
define OSC 4

@ DEVICE pic12F675, 0x1fc4
' palabra de configuración:
    ' oscilador interno IO
    ' PWRT y BOREN enables

TRISIO = %001100 ' GP2 entrada, las demas como salidas.
CMCON = 7  ' comparadores en off
ADCON0 = 0 ' ADC off
ANSEL = 0  ' IO digitales

continua programa...

****************************

tratare de localizarte una web con amplia informacion sobre el 675 a lo largo del dia.

pd: no se hasta que punto de precision necesitas, yo realice varios circuitos con oscilador interno para transmision de datos via infrarrojos y todos funcionan sin problemas.

pd: aunque a mi estas fiestas me son bastante indiferentes vayan mis deseos de lo mejor para todos vosotros. salu2
Título: Re: Oscilador Interno de los PIC's
Publicado por: maunix en 23 de Diciembre de 2006, 13:06:49
Muchachos, he encontrado esta nota de aplicación que creo que aclara bastante bien el punto.

Espero les sirva


AN250 : Auto-calibration of the PIC12F6XX Internal RC Oscillator  (http://ww1.microchip.com/downloads/en/AppNotes/00250a.pdf)

Saludos!
Título: Re: Oscilador Interno de los PIC's
Publicado por: xocas en 23 de Diciembre de 2006, 20:37:02
y yo encontre la web que os comentaba: http://members.shaw.ca/picgroup/ opcion 'resources' - y dentro del apartado pic basic 'Burn on the 12F675 , a powerhouse with only 8 pins'

espero que te sirva de algo amigo veguepic

un saludo
Título: Re: Oscilador Interno de los PIC's
Publicado por: Veguepic en 27 de Diciembre de 2006, 13:56:21
Gracias Mauricio y Joaquin por sus respuestas.

La nota de aplicacion la habia visto pero por los equipos que involucra no me es posible implementarla, he tratado de implementar lo que puso Joaquin pero no me ha sido posible, mas tarde retomare el tema, pondre aqui los resultados para que los evaluen.

De momento he comprado otro 16F628A y sigo con el mismo problema que el anterior 16F628. Solo le he cargado los fuses en Winpic800, definiendo el oscilador interno pero con salida del clock, osea INTRC CLKOUT, el error es de +3% para el 16F628 y de 5% para el 16F628A.

De momento solo puedo suponer que los pics tengan defectos, probablemente sean muestras o samples, algo que no me sorprenderia o que estoy haciendo algo mal.

Saludos.
Título: Re: Oscilador Interno de los PIC's
Publicado por: maunix en 27 de Diciembre de 2006, 15:23:53
veguepic no te desanimes, puedes seguir usando el 12F e irle variando el registro de calibración "a mano" hasta que logres la frecuencia con la presición que deseas.

Una vez que lo logras, recuerda ese valor y guardalo en la posición 0x1FF o 0x3FF (dependiendo del pic) en forma de un retlw valor. 

Por último tu primera instrucción en tu software debiera ser un call a esa dirección y a continuación un movwf OSCCAL.

Código: ASM
  1. org 0x000
  2.     call    0x1FF
  3.     movwf   OSCCAL
  4.  
  5.   ;
  6.   ;
  7.  
  8.    org      0x1FF
  9.    retlw    0x24

El valor 0x24 es arbitrario, lo puse solo como ejemplo y lo debieras ir variando hasta que logres la frec. deseada.
Título: Re: Oscilador Interno de los PIC's
Publicado por: Veguepic en 28 de Diciembre de 2006, 02:38:16
Hola Mauricio:

Yo cargaba el valor del osccal de una forma mas burda, esto es modificando directamente el archivo en Winpic800:

(http://img403.imageshack.us/img403/3453/osccalpb2.jpg) (http://imageshack.us)

justo en la ultima posicion, donde dice 3440.

Sabia que no debo cambiar los dos primeros digitos (34), solo modificaba los ultimos digitos. Como es obvio, no es la mejor manera de hacerlo, por lo cual lo hice como indicas y con esto he logrado obtener un error menor a ±1%. Gracias por el dato.

Hay algo que me sigue molestando, he cargado el valor de la calibracion mediante el siguiente programa:

   LIST      P=12F675,
   #include   <p12f675.inc>

   __CONFIG h'11A5' ;  _CP_OFF&_PROTECT_OFF&_BOD_OFF&_MCLR_ON&_PWRTE_ON&_WDT_OFF&INTRC_OSC_CLKOUT   

    org          0x000
    bsf          STATUS,RP0        ;Banco 1
    call          0x3FF
    movwf     OSCCAL
    bcf          STATUS,RP0       ;Banco 0

   org        0x3FF
   retlw      0x04

   END

y segun tengo entendido una vez cargado este valor de calibracion, el PIC seria el equivalente a uno de fabrica. Luego siempre antes de grabarlo hay que leer este valor antes de grabar de nuevo el PIC.

Me pasa que luego de haber calibrado el PIC y posteriormente grabar el siguiente programa:

include "modedefs.bas"     

@ device pic12F675, CPD_OFF
@ device pic12F675, PROTECT_OFF
@ device pic12F675, BOD_OFF
@ device pic12F675, MCLR_ON
@ device pic12F675, PWRT_ON
@ device pic12F675, WDT_OFF
@ device pic12F675, INTRC_OSC_NOCLKOUT

DEFINE     OSC  4   'Oscillator speed in MHz

ADCON0  =   0
ANSEL      = 0             ' Disable analog converter
CMCON    = 7             ' Comparators off
TRISIO     = %011111

dato var byte

inicio:
    if  GPIO.0 = 0 then   serout GPIO.5,T1200,["OK","   QUE  PASEN   "]
    if  GPIO.1 = 0 then   serout GPIO.5,T1200,["OK","FELICES  FIESTAS"]
    if  GPIO.2 = 0 then   serout GPIO.5,T1200,["OK","  Y UN PROSPERO "]
    if  GPIO.4 = 0 then   serout GPIO.5,T1200,["OK","      2007      "]
    pause   50
    goto inicio
end


he verificado que el valor de calibracion esta en la ultima posicion, pero el programa sigue sin funcionar, el mismo programa adaptado para el 12F508 y el 12F683 funciona perfectamente. El diagrama es el del primer post.

Lo unico que puedo suponer es que o los pics estan mal o me los he "cargado" con alguna mala coneccion. Que opinan.

Saludos
Título: Re: Oscilador Interno de los PIC's
Publicado por: maunix en 28 de Diciembre de 2006, 08:48:32
Habría que ver que asm te genera ese programa en basic.

1) Que el programa en basic no borre el contenido de la posición 0x3FF
2) Que el software de tu programador no borre el contenido de la posición 0x3FF.  El winpic800 tiene en cuenta este detalle y te avisa antes de hacer algo.
3) Tu programa en basic debiera leer el valor de calibración del oscilador.  No se si el que le indiques que tu oscilador es de 4MHz haga que el basic genere un valor de calibración que ocupe la posición 0x3FF o simplemente lo use para generar los retardos necesarios dentro de tu aplicación

Una curiosidad, cómo pruebas que el valor del oscilador esté ok? Ese programita que yo te dí fue solo a modo de ejemplo y no debiera ser todo tu programa.  En algún lado debes hacer un loop infinito y configurar a tu pic para que saque el oscilador por sus pines así lo puedes medir con el osciloscopio. 

Es más, creo que medirías su valor dividido 4 si mal no recuerdo.

Título: Re: Oscilador Interno de los PIC's
Publicado por: Veguepic en 28 de Diciembre de 2006, 13:45:53
Estoy como medio entrampado en esto.  :( Pero sigo adelante.

1) Estoy seguro que mi programa no borra esta direccion, pues al grabarlo verifico que tenga el valor de calibracion, y al volver a regrabarlo compruebo que siga ahi.

2) Ahora si tengo el cuidado de leer el valor de calibracion y al grabarlo Winpic800 lo restaura.

3) Justo eso es lo que me lleva a pensar que algo anda mal con estos PICS, el mismo programa con muy ligeras modificaciones lo he implementado para 12F508, 12F675 y 12F683. Solo falla en los 12F675, a menos que sea un bug en el 12F675.

Digo que no es necesario que el programa llame al valor del oscilador pues en otros pics con oscilador interno como el 12F683, 16F628 y 16F628A he hecho la siguiente prueba:

Primero borro el PIC con Winpic800 salvando antes el valor de calibracion. Luego entro al config y solo activo INTRC CLKOUT y MCLR, luego le doy grabar, ojo que no he cargado ningun programa. Monto el PIC en el protoboard y le pongo alimentacion y tambien conecto el MCLR. Luego mido con un frecuencimetro la patilla OSC CLKOUT, y la frecuencia es la cuarta parte del oscilador interno. Fosc_int / 4 .

Este test lo he hecho con el 12F683 dando un error menor al 1%, tambien lo he hecho con los 16F628 y 16F628A dandome errores del 3 y 5 % respectivamente. Es por eso que mi programa funciona con el 12F683 y no funciona con los 16F628 y 16F628A. Con el 12F508 no se puede hacer este test pues no tiene CLKOUT.

El mismo test lo he tratado de hacer con el 12F675 y siempre me da 1.33 MHz, solo cuando cargo el programa del post anterior me da 1 MHz.

Hare un par de pruebas mas sino cambiare PICS.

Saludos
Título: Re: Oscilador Interno de los PIC's
Publicado por: maunix en 28 de Diciembre de 2006, 14:52:47
Veguepic más allá de que el soft de programación no te borre el valor de calibración, TU software debe leer dicho valor con una rutina como la que te puse anteriormente.  Es decir que tu software hecho en basic o en lo que desees DEBE cargar el valor 4 en OSCCAL sino no hay nada que estes modificando realmente.  El que dicho valor se guarde en 0x3FF es una convención de Microchip producto de sus seteos de fábrica y que nos permiten no preocuparnos por la variación que tienen los osciladores durante el proceso de fabricación de estos pics. 

Una vez que lo has borrado (intencionalmente o no) debes tú mismo guardarlo.

Repito: ya sea que es un valor de microchip o tuyo, lo debes cargar en el OSCCAL.

Prueba el siguiente programa

Código: ASM
  1. org    0x000
  2.     call    0x3FF
  3.     movwf   OSCCAL
  4.  
  5.     nop
  6.     goto $-1
  7.  
  8.  
  9.    org      0x3FF
  10.    retlw    0x4

Este software no hará nada más que cargar el valor de calibración.

Lee el .HEX que te genera este código, luego modificale el último valor en el winpic en la posición 0x3FFF de ser necesario y no te preocupes en este caso por sobreescribir tu pic.


Saludos
Título: Re: Oscilador Interno de los PIC's
Publicado por: luarken en 25 de Mayo de 2008, 04:05:37
hola  a todos

tambien tengo un problema con el osccal de mi pic12f508

trato de leer y no me aparece ningun valor

use el winpic , winpic800 ic-prog

y nada solo 3ff

y otra no se como hacer para agregarle ese valor a este programita


espero su ayuda gracias

   processor   12f508
   __config   0feeh      ; Internal Osc, WDT Enabled, not code protected
   include   "p12f508.inc"
#define   RAMSTART 07h

   radix   dec

#define trig   GPIO,0      ; trigger input from host
#define   pulse   GPIO,1      ; timing pulse output to host
#define   echo   GPIO,2      ; echo signals from comparitor
#define  nc   GPIO,3      ; Unused - do not connect.
#define   tx2   GPIO,4      ; Tx phase 2
#define   tx1   GPIO,5      ; Tx phase 1

#define _C   STATUS,C

;/////////////////////////////////////////////////////////////////////////////

   org   RAMSTART

loop      res   1   ; loop counter
dlyctr      res   1   ; delay counter
tone_cnt   res   1   ; count echo cycles
period      res   1   ; received burst cycle period from tmr0

;/////////////////////////////////////////////////////////////////////////////

   org     0x000          ;start address 0
    call    0xFF
   movwf   OSCCAL      ; use microchip's calibration value

   movlw   89h
   option         ;assign 1:2 prescaler to watchdog

   movlw   0dh
   tris   GPIO      ;GPIO 1, 4 & 5 are outputs
   movwf   0

   bcf   pulse



main:   clrwdt
   btfss   trig      ; wait for trigger signal from user to go high
   goto   main      ; from previous measurement.

m2:   clrwdt
   btfsc   trig      ; wait for trigger signal from user
   goto   m2

   call   burst      ; send the ultra-sonic burst
   bsf   pulse      ; start the output timing pulse
   

 
m1:   btfsc   echo
   goto   m1      ; wait for low
   bcf   pulse      ; end the output timing pulse



   goto   main

burst:   clrf   loop
   movlw   8      ; number of cycles in burst
   movwf   loop

burst1:   movlw   0x10      ; 1st half cycle
   movwf   GPIO

   movlw   3      ; (3 * 3inst * 1uS) -1uS = 8uS
   movwf   dlyctr      ; 8uS + (4*1uS) = 12uS
burst2:   decfsz   dlyctr,f
   goto   burst2

   movlw   0x20
   movwf   GPIO
   movlw   2      ; (2 * 3inst * 1uS) -1uS = 5uS
   movwf   dlyctr      ; 5uS + (8*1uS) = 13uS
burst3:   decfsz   dlyctr,f
   goto   burst3
   nop
   decfsz   loop,f
   goto   burst1

   movlw   0x00      ; set both drives low
   movwf   GPIO

   retlw   0



tone:   clrf   TMR0

t1:   btfsc   echo
   goto   t1      ; wait for low

   movfw   TMR0
   clrf   TMR0
   movwf   period      ; store timer0 value

   movlw   21      ; if(period>22 && period<30)
   subwf   period,w
   btfss   _C
   goto   t2
   movlw   30
   subwf   period,f
   btfsc   _C
   goto   t2

   decfsz   tone_cnt,f   ; 25uS period OK, so
   goto   t1      ; if not yet 3 of them, keep looking
   retlw   0      ; else - success - return
   
t2:   movlw   3      ; failed to detect 25uS period, so reset tone detect
   movwf   tone_cnt   ; to 3 and keep looking
   goto   t1

;////////////////////////////////////////////////////////////////////////////

   end
Título: Re: Oscilador Interno de los PIC's
Publicado por: Javicho en 25 de Mayo de 2008, 12:27:57
Tal vez tu grabador no está funcionando, primero que nada prueba si reconoce el pic o coloca otro pic del cual estes seguro que esta en buenas condiciones, hay un icono de un IC con un signo de interrogación, dale clic ahi te deberia reconocer el tipo de pic que has colocado si no te reconoce el problema es en tu grabador, tambien hay otro icono de un conector con un cable paralelo dale clic ahi para saber si tu grabador está bien conectado con la PC, si sale error revisa el cable y el grabador, tal vez tu fuente tiene poco voltaje o revisa las pistas.

Por otro lado para configurar el oscilador interno:
BANCO1
movlw  b'xxxxxxxx'
movwf   OSCCAL
BANCO0

Ademas de ello en la palabra de configuración por ejemplo para un pic12F629 yo uso esto:
__CONFIG _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _CP_OFF & _CPD_OFF

Eso es todo ahora tu pic correrá usando el oscilador interno.
Ojo: este ejemplo es para un pic12F629 no he visto el datasheet del pic que estas usando tal vez algún fusible este demás o tal vez falte algo mas pero en síntesis esa es la idea, tomalo como una guia.

Javicho.
Título: Re: Oscilador Interno de los PIC's
Publicado por: MLO__ en 25 de Mayo de 2008, 16:17:16
Saludos

Pues a mi el oscilador interno no me ha dado problema, para las aplicaciones que he usado, para leer el dato del OSCCAL lo hago con el ICD2  :mrgreen:
Algo para anotar es que segun las recomendaciones de Microchip, no debe usarse el oscilador interno cuando se hacen comunicaciones RS232.

Adjunto un pdf donde hablan al respecto de los osciladores, muy util.

Chao.
Título: Re: Oscilador Interno de los PIC's
Publicado por: MLO__ en 25 de Mayo de 2008, 16:38:44
Intente colgar el .swf donde explican lo del IntRC, pero pesa mucho asi que les dejo el link donde lo pueden descargar: LINK (http://www.4shared.com/dir/6295901/701d27e8/sharing.html). Es una presentacion en Flash, aunque esta en ingles es my entendible.

Saludos
Título: Re: Oscilador Interno de los PIC's
Publicado por: luarken en 25 de Mayo de 2008, 16:48:01
pss estoy usando un jdm entonces tal vez no sirva!!!


cren q me sirva este el de steren pic-600
PIC-600   Módulo cargador/programador de microcontroladores PICs, para puerto USB

Título: Re: Oscilador Interno de los PIC's
Publicado por: Veguepic en 25 de Mayo de 2008, 20:11:20
Hola Luarken, a ver si te soy de ayuda

Hace mucho que no uso el JDM por lo que no se decirte si soporta ese pic, mira si con winpic800 y usa la opcion de reconocer pic a ver si lo identifica. Si no te deberas conseguir un programador que si lo soporte.

Yo uso el PP2, una version mejorada del PROPIC2, que si lo soporta, aunque debo mencionar que winpic800 no lo reconoce, pero lo selecciono manualmente y listo.

En esta imagen de winpic800 podras ver que el ultimo valor corresponde al de calibracion que es 3440

(http://img403.imageshack.us/img403/3453/osccalpb2.jpg) (http://imageshack.us)

dinos que valor te da

En tu programa a mi parecer veo un error

   org     0x000          ;start address 0
    call    0x1FF
   movwf   OSCCAL      ; use microchip's calibration value

en rojo pongo como deberia ir.

Adjunto un programa que me fue muy util para calibrar un pic 12F508

Código: [Seleccionar]
list p=12f508
#include p12f508.inc

__config _IntRC_OSC & _WDT_OFF & _CP_OFF & _MCLRE_ON

ORG 0

CALL 0x1FF
MOVWF OSCCAL
CLRF GPIO
MOVLW b'00000000'
TRIS GPIO

INICIO
BCF GPIO,0
NOP
NOP
NOP
NOP
BSF GPIO,0
NOP
NOP
GOTO INICIO

ORG 0x1FF
RETLW 0x12

END

es necesario un frecuencimetro, yo use uno sencillo que me fabrique, el programa da una frecuencia de 100 KHz, el valor 0x12 es el que deberan ir variando hasta obtener los 100 KHz.

Haciendo  unos cambios sencillos pude calibrar tambien varios pics de la serie 12F y 16F a los que por torpeza les borre la calibracion o el valor no coincidia.

Ya nos cuentas que tal te fue.

Saludos.

Hugo

P.D.  Agradecer tardiamente a Mauricio por su ayuda.
Título: Re: Oscilador Interno de los PIC's
Publicado por: luarken en 25 de Mayo de 2008, 21:35:10
pss mira me arme un circuito rrapidamente para esto pss decen que el jdm no lo soporta

y puse un pic12c508 y el valor final me da 0c60

pero puse el pic12f508 y me da igua que a ti la lectura 3FFF y no me da el valor de calibracion


y con el mplab ecribo esto


org 0x000
call 0x1ff
movwf   OSCCAL      ; use microchip's calibration value

y me hacer error al compilar

Error[120]   C:\SRF04\SRF04.ASM 46 : Call or jump not allowed at this address (must be in low half of page)


..

no se que pasara con esto si estoy haciendo algo mal o que, o tendre q conseguir un programador bueno.


y al tratar de cargar con el winpic800 me sale un error

.

gracias por la ayuda!!!!!

espero poder hacer esto!!!!!!!


PD:

puse estoy asi y no me da error

pero al cargar me sale error en el winpic

    org     1ffh         
    movlw   70h
   movwf  OSCCAL      ; use microchip's calibration value
    org 0x000           ;start address 0

tambien agrege los circuitos
y el codigo fuente del programa completo. es el codigo fuente del srf04 sensor ultrasonico.
Título: Re: Oscilador Interno de los PIC's
Publicado por: Veguepic en 25 de Mayo de 2008, 22:35:38
Que significa "pss" ????

Si al leer el pic te da 3FFF significa que lo borraste, lo unico que te queda es volver a calibrarlo, si tienes como conseguirte un frecuencimetro prueba con el programa que puse para calibrar el pic. El programador lee el programa que grabaste??

No conosco el error que mencionas, me inclino a pensar que tienes mal definido el pic.


Porque no pruebas primero con un ejemplo sencillo, por ejemplo de parpadear un led cada 0.5 segundos usando el oscilador interno y verificas que el pic acepta el valor de calibracion. Luego incluso puedes usar un reloj y ver si el valor de calibracion esta dentro del 1%, osea en 100 segundos te debera dar 99 o 101 segundos en el peor de los casos. Mejor si usas mas tiempo

Suerte.
Título: Re: Oscilador Interno de los PIC's
Publicado por: luarken en 25 de Mayo de 2008, 23:09:00
pss significa pues

voi a tener que calibrarlo entonces pero como te digo

me pone error mplab 8.10 si escribo esto

   ORG      0
   
   CALL         0x1FF    ; por esto que esta aki
   MOVWF   OSCCAL
   CLRF   GPIO
   MOVLW   b'00000000'
   TRIS   GPIO

no me esta leyendo nada si leo el pic solo 3FFF


voi a buscar un ejemplo para calar con el led.

gracias por la ayuda
Título: Re: Oscilador Interno de los PIC's
Publicado por: luarken en 25 de Mayo de 2008, 23:30:18
pss significa pues

voi a tener que calibrarlo entonces pero como te digo

me pone error mplab 8.10 si escribo esto

   ORG      0
   
   CALL         0x1FF    ; por esto que esta aki
   MOVWF   OSCCAL
   CLRF   GPIO
   MOVLW   b'00000000'
   TRIS   GPIO

no me esta leyendo nada si leo el pic solo 3FFF

que pasos tengo que seguir para hacer la calibracion??

voi a buscar un ejemplo para calar con el led.

gracias por la ayuda
Título: Re: Oscilador Interno de los PIC's
Publicado por: maunix en 26 de Mayo de 2008, 13:30:38
no me esta leyendo nada si leo el pic solo 3FFF

Para mi lo has sobreescrito anteriormente y ya no lo puedes leer.  Seguramente has hecho un ERASE del pic, con tu programa de grabación.

Esto del valor de oscilador es UNICAMENTE si no lo has borrado.  Viene de fábrica.  El Winpic800 tiene cuidado de no borrarlo, pero no se si el programa que has usado lo ha hecho.

Saludos
Título: Re: Oscilador Interno de los PIC's
Publicado por: luarken en 26 de Mayo de 2008, 14:44:55
entonces lo tendre q calibrar con el programica q dejo Veguepic

q pasos sigo para calibrarlo
Título: Re: Oscilador Interno de los PIC's
Publicado por: maunix en 26 de Mayo de 2008, 14:56:17
entonces lo tendre q calibrar con el programica q dejo Veguepic

q pasos sigo para calibrarlo

Tienes osciloscopio?
Título: Re: Oscilador Interno de los PIC's
Publicado por: luarken en 26 de Mayo de 2008, 16:57:12
si en la scuela puedo disponer de uno!!!
Título: Re: Oscilador Interno de los PIC's
Publicado por: maunix en 29 de Mayo de 2008, 16:08:05
si en la scuela puedo disponer de uno!!!

Primero fijate en este mismo hilo como indico la forma de grabar un valor de calibración al micro en la posición 0x3FF o 0x7FFF o la que sea dependiendo de cual uses.

Luego hay dos posibilidades

1. Que configures el oscilador para que haga un CLOCKOUT , esto es , por el pin del oscilador sacará la frecuencia del oscilador/4.  Si lo calibraste justo a 4Mhz, debieras ver un clock de 1MHz.   Esto lo ves con el osciloscopio y vas cambiando el valor que te mencioné antes hasta que sea de 4Mhz.

2. Que hagas un programa que cambie un pin constantemente ON/OFF/ON/OFF, por muuuchas lineas de código y luego que haya un goto que repita el programa.  esto es para evitar que el goto que dura 2 instrucciones afecte la salida del pin. 

Bueno, con esto tu deberías poder ver un pin oscilando a Fosc/8.  El /8 es porque en un ciclo de instrucción lo pone en alto y otra en bajo .  Entonces la frecuencia sería la mitad de lo que es normarmente.


Saludos


Título: Re: Oscilador Interno de los PIC's
Publicado por: Papalote en 29 de Abril de 2009, 07:00:43
Hola tengo una idea que nose si funcionara pero seria mas que util.
Yo uso pics 12f629 y 12f683 y me pasa que no puedo enviar datos seriales a la pc, pero usando picaxes (que son los mismos pics) anda perfecto

Bueno mi idea es si alguien que la tenga mas clara que yo puede hacer un programa que vaya variando el valor del OSCAL y luego envie algo como "Valor de OSCAL: XXXX" de manera serial por gpio.0, luego cambie el valor y envie lo mismo denuevo, entonces lo conecto a la PC y va a entrar a recibir cualquiercosa hasta que cuando la pegue con un OSCAL que me sirva me va a enviar el texo bien y el valor correcto.

Es solo una idea yo no la tengo muy clara con este tema recien estoy tratando de migrar de picaxe a PBP, pero esto de que no anden las comunicaciones seriales me esta jodiendo mucho.