Autor Tema: Oscilador Interno de los PIC's  (Leído 22278 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Oscilador Interno de los PIC's
« Respuesta #15 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
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado luarken

  • PIC10
  • *
  • Mensajes: 28
Re: Oscilador Interno de los PIC's
« Respuesta #16 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

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: Oscilador Interno de los PIC's
« Respuesta #17 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.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Oscilador Interno de los PIC's
« Respuesta #18 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.
El papel lo aguanta todo

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Oscilador Interno de los PIC's
« Respuesta #19 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. Es una presentacion en Flash, aunque esta en ingles es my entendible.

Saludos
El papel lo aguanta todo

Desconectado luarken

  • PIC10
  • *
  • Mensajes: 28
Re: Oscilador Interno de los PIC's
« Respuesta #20 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


Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
Re: Oscilador Interno de los PIC's
« Respuesta #21 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



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.
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado luarken

  • PIC10
  • *
  • Mensajes: 28
Re: Oscilador Interno de los PIC's
« Respuesta #22 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.
« Última modificación: 25 de Mayo de 2008, 22:02:18 por luarken »

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
Re: Oscilador Interno de los PIC's
« Respuesta #23 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.
« Última modificación: 25 de Mayo de 2008, 22:39:22 por Veguepic »
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado luarken

  • PIC10
  • *
  • Mensajes: 28
Re: Oscilador Interno de los PIC's
« Respuesta #24 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

Desconectado luarken

  • PIC10
  • *
  • Mensajes: 28
Re: Oscilador Interno de los PIC's
« Respuesta #25 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

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Oscilador Interno de los PIC's
« Respuesta #26 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
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado luarken

  • PIC10
  • *
  • Mensajes: 28
Re: Oscilador Interno de los PIC's
« Respuesta #27 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

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Oscilador Interno de los PIC's
« Respuesta #28 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?
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado luarken

  • PIC10
  • *
  • Mensajes: 28
Re: Oscilador Interno de los PIC's
« Respuesta #29 en: 26 de Mayo de 2008, 16:57:12 »
si en la scuela puedo disponer de uno!!!