Autor Tema: Duda con la frecuencia de oscilación del PIC  (Leído 4948 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado RinconR

  • PIC10
  • *
  • Mensajes: 27
Duda con la frecuencia de oscilación del PIC
« en: 10 de Octubre de 2016, 07:58:25 »
Tengo varias dudas acerca de este aspecto.
Tengo un programa en C y he leído que poniendo #pragma FOSC=INTIO67 al principio se establece que el oscilador principal trabaje a 1MHz en los bits RA6 y RA7. ¿Este 1MHz es fosc o fosc/4? ¿Sería lo mismo que poner al principio del programa #define _XTAL_FREQ 1000000?

Tengo un programa en C para la transmisión de datos por USART y para calcular la velocidad de trasmisión aparece FOSC en la fórmula, y no sé que valor utilizar.

¡Gracias!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Duda con la frecuencia de oscilación del PIC
« Respuesta #1 en: 10 de Octubre de 2016, 12:27:11 »
Citar
Tengo un programa en C y he leído que poniendo #pragma FOSC=INTIO67 al principio se establece que el oscilador principal trabaje a 1MHz en los bits RA6 y RA7. ¿Este 1MHz es fosc o fosc/4? ¿Sería lo mismo que poner al principio del programa #define _XTAL_FREQ 1000000?

Leiste mal, INTIO67 , es Oscilador interno y los pines RA6 y RA7 como I/O (Entradas/salidas), ya que podes tener a RA6 como salida de reloj (salida es FOSC/4) y RA7 como puerto si es que usas el oscilador interno. NADA MAS.

Como ves esto no significa que la frecuencia sea de 1Mhz, esto va a depender del PIC que tengas. Hay algunos PICs, por ejemplo el PIC16F887 que el oscilador interno es de 8Mhz pero el preescaler por default es de 1:2 y por lo tanto tiene un FOSC de 4Mhz. Para cambiar la frecuencia solamente debemos cambiar los bits del registro OSCCON que es el que controla eso.
La frecuencia que hablamos aca es FOSC (como si fuera el valor de un cristal).
Otro ejemplo un PIC18F46K20 tiene oscilador de 16Mhz interno y por default tiene un preescaler que lo baja a 1Mhz. Que obviamente luego podes cambiar.

El #define _XTAL_FREQ es simplemente para que el compilador sepa la velocidad de FOSC, ya que no sabe que cristal o que oscilador vas a ponerle. Ese define se utiliza luego para calcular la cantidad de ciclos necesarias en cada delay. Desconozco que exista algun otro uso del mismo.

Desconectado RinconR

  • PIC10
  • *
  • Mensajes: 27
Re:Duda con la frecuencia de oscilación del PIC
« Respuesta #2 en: 10 de Octubre de 2016, 13:06:09 »
Gracias, creo que lo he entendido.
¿Entonces si quiero una frecuencia de 4MHz tengo que poner al principioel INTIO67 y después los bits IRCF del OSCCON a "101"?
¿Esa sería mi Fosc, no? ¿Y la frecuencia de cada instrucción sería Fosc/4?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Duda con la frecuencia de oscilación del PIC
« Respuesta #3 en: 10 de Octubre de 2016, 16:00:31 »
Citar
¿Entonces si quiero una frecuencia de 4MHz tengo que poner al principioel INTIO67 y después los bits IRCF del OSCCON a "101"?
Exacto, con el FUSE le decis al micro que usas el oscilador interno y los pines queden como entrada/salidas.
Con los bits del IRCF simplemente cambias la frecuencia de los 1Mhz que comienza desde el Reset a los 4Mhz, no tenes que esperar por ningun bit que se active ni nada por el estilo.

Citar
¿Esa sería mi Fosc, no? ¿Y la frecuencia de cada instrucción sería Fosc/4?
Exacto, quedaria:

Fosc  = 4Mhz
Fcy = Fosc/4 = 1Mhz
Tcy = 1/Fcy = 1us

Desconectado Carmito Diaz

  • PIC10
  • *
  • Mensajes: 1
Re:Duda con la frecuencia de oscilación del PIC
« Respuesta #4 en: 12 de Octubre de 2016, 17:00:18 »
Ayuda x fa,,, soy nuevo y no se como publicar en esta pagina. Muchas gracias y disculpe la intromisión.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Duda con la frecuencia de oscilación del PIC
« Respuesta #5 en: 12 de Octubre de 2016, 19:37:35 »
Ayuda x fa,,, soy nuevo y no se como publicar en esta pagina. Muchas gracias y disculpe la intromisión.

De la misma forma que lo hiciste, pero cuando estas en la seccion que necesitas elegi "Nuevo Tema"

Desconectado RinconR

  • PIC10
  • *
  • Mensajes: 27
Re:Duda con la frecuencia de oscilación del PIC
« Respuesta #6 en: 19 de Octubre de 2016, 20:23:59 »
Vuelvo a este tema con otra pregunta. Tengo mi Fosc a 4MHz.
Estoy programando en C y para hacer esperas uso la funcion __delay_ms(tiempo);
¿El valor del tiempo de espera son milisegundos tenga la Fosc que tenga?
¡Gracias por adelantado!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Duda con la frecuencia de oscilación del PIC
« Respuesta #7 en: 19 de Octubre de 2016, 20:31:23 »
Citar
Estoy programando en C y para hacer esperas uso la funcion __delay_ms(tiempo);
¿El valor del tiempo de espera son milisegundos tenga la Fosc que tenga?

Tenes que definir _XTAL_FREQ con la frecuencia del oscilador, asi el MPLAB sabe que oscilador tiene y crea la rutina de delay. Es decir:


#define _XTAL_FREQ 4000000

Desconectado Paula

  • PIC10
  • *
  • Mensajes: 19
Re:Duda con la frecuencia de oscilación del PIC
« Respuesta #8 en: 13 de Noviembre de 2016, 18:50:42 »
Hola,

Estoy realizando un programa sencillo y quise llevar el PIC a la máxima frecuencia con el PLL así que deje los fuses así:
 #pragma config WDT = ON   
#pragma config MCLRE = OFF       
#pragma config LVP = OFF       
 #pragma config PLLDIV = 5
 #pragma config CPUDIV = OSC1_PLL2
 #pragma config USBDIV = 2
 #pragma config FOSC = HSPLL_HS
 #pragma config FCMEN = OFF   
 #pragma config IESO = OFF

Mi pregunta esta en que al hacer uso de la función __delay_ms() y colocar en _XTAL_FREQ el valor del cristal que estoy usando, en mi caso 20MHz no corresponde al tiempo que debería pero al colocar _XTAL_FREQ con 48Mhz si corresponde al segundo que tengo calculado. Quisiera saber a que hace referencia _XTAL_FREQ porque lo que tenía entendido es que esa función no usaba la frecuencia de oscilación de la CPU. Gracias

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Duda con la frecuencia de oscilación del PIC
« Respuesta #9 en: 13 de Noviembre de 2016, 19:08:34 »
_XTAL_FREQ hace referencia a la frencuencia que sale del circuito oscilador.

En tu caso serian los 48Mhz, pensa como si todo el circuito PLL + XTAL sea el cristal solo.

Desconectado Paula

  • PIC10
  • *
  • Mensajes: 19
Re:Duda con la frecuencia de oscilación del PIC
« Respuesta #10 en: 14 de Noviembre de 2016, 11:04:54 »
Vale, muchas gracias!


 

anything