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.