Oscilador Primario del PIC18F45K50

Creado: 2024-07-11 16:29:10

Actualizado: 2024-07-15 22:51:00

Oscilador Primario (Primary Oscillator)

Al seleccionar este bloque como modo de trabajo del oscilador, vamos a necesitar una fuente de reloj externa conectada a los puertos OSC1 Y OSC2, ya sea un circuito RC, cristal de cuarzo o una fuente de señal de reloj cuyos valores a considerar se tienen en la siguiente imagen.

Para Habilitar el Oscilador Primario (EN), se necesita que el bit PCLKEN (CONFIG1H) o el bit PRISD (OSCCON2)esté como ‘1’.

OSCCON2bits.PRISD = 1;

Siguiendo el proceso ahora tenemos que indicar al selector que vamos a utilizar fuente de reloj externa, a su vez debemos definir que tipo de oscilador será. Para ello haremos uso del grupo de bits FOSC<3:0> (CONFIG1H).

Para utilizar reloj externo, podemos utilizar los siguientes valores en el registro, dependiendo del valor de la frecuencia y el tipo de oscilador, con excepción de ‘1001’ y ‘1000’ ya que dichos valores corresponden a una configuración para usar oscilador interno.

El siguiente proceso es donde se elige entre usar un escalado o no, este escalador lo que hace es multiplicar la frecuencia dada por el oscilador externo por una constante ‘3’ o ‘4’. El escalador se utiliza en caso necesitemos una frecuencia mayor a la que nuestro oscilador externo puede dar. Los valores que debe tener el oscilador externo es entre 8 MHz a 12 MHz o de 16 MHz, siendo la frecuencia máxima escalable de 48 MHz. Si los valores son entre 8 MHz a 12 MHz el escalador que se puede utilizar es ‘3 x PLL’ y si el valor es de 16 MHz el escalador a usar es de ‘4 x PLL’.

Por ejemplo, si tenemos un oscilador externo con valor de 8 MHz, en caso necesitemos usar un escalador, este podrá ser de ‘4 x PLL’ para obtener así una frecuencia para el oscilador primario de 32 MHz. En caso tengamos un oscilador externo de 16 MHz y debamos maximizarla, podremos usar el escalador de ‘3 x PLL’ para obtener así una frecuencia máxima de 48 MHz.

Los bits a configurar para utilizar o no el escalador son los siguientes:

  • FOSC<3:0> (CONFIG1H):
    Se encargan de configurar que el tipo de oscilador a utilizar.
  • CFGPLLEN, PLLSEL (CONFIG1L):
    En caso se utilice una fuente de señal de reloj externa y se desea escalar la frecuencia, se debe poner el bit CFGPLLEN con valor ‘1’; para seleccionar el valor del escalador, se usará el bit PLLSEL, si este tiene valor ‘1’ entonces el escalador será de ‘3xPLL’ y en caso sea ‘0’ el valor del escalador será de ‘4xPLL’. En caso nuestro oscilador conste de componentes pasivos como circuitos RC o cristal de cuarzo, el bit CFGPLLEN debe ponerse en ‘0’.

  • PLLEN (OSCCON2):
    En caso se utilice componentes pasivos como fuente de oscilación, poner este bit en ‘1’ si se desea usar el escalador; para seleccionar el valor del escalador se usará el bit SPLLMULT.

OSCCON2bits.PLLEN = 1;

  • SPLLMULT (OSCTUNE):
    Cuando el bit PLLEN esta como ‘1’, este bit selecciona el escalador, si SPLLMULT tiene valor ‘1’ el escalador será de ‘3xPLL’, caso contrario será de ‘4xPLL’.

OSCCON2bits.SPLLMULT = 1; //PLLx3

NOTA:

  • Los escaladores son opcionales y solo se pueden utilizar con osciladores externos.

  • En caso no se usen los escaladores, los registros mencionados anteriormente no deben configurarse o en su lugar dejarlos en ‘0’.

Como ultima parte del proceso para poder utilizar el oscilador primario, tendremos un escalador que dividirá la frecuencia si o solo si estemos trabajando con 48 Mhz resultado de una fuente de reloj externa o gracias al PLL o con 24 Mhz también de fuente externa. Para ello se utilizarán los bits CPUDIV<1:0> (CONFIG1L) cuyo valores dependerán del divisor que deseamos escoger. Esto se utiliza en caso se haya necesitado frecuencias altas para el protocolo USB y que para la CPU no sea necesario.

En caso trabajemos con una frecuencia diferente a la mencionada o no se desea dividir, solo colocar esos bits en '0'.

El proceso busca llegar a esta siguiente etapa, Clock Switch MUX, selector del tipo de oscilador que va a trabajar nuestro microcontrolador, ya sea oscilador primario, secundario o interno. Para el presente informe se tendría que elegir la opción de Primary Clock ya que es lo que estamos analizando. Se utilizan los bis SCS<1:0> (OSCCON), cuyos valores son los que determinaran si trabajara con oscilador primario, secundario o interno.

De esta manera terminamos de analizar como funciona el oscilador primario en estos microcontroladores, las etapas por las que pasa hasta llegar a la CPU y periféricos con el uso de los registros tanto en el IDE MPLAB X y guiándonos de las tablas e información que nos brinda su Datasheet.

Nuestras redes sociales

Síguenos en nuestras redes sociales para más contenido sobre ingeniería y programación.