3.10 Oscilador De Reloj
Para sincronizar todos los procesos que se llevan a cabo dentro del microcontrolador, se debe utilizar una señal de reloj, mientras que para generar una señal de reloj, se debe utilizar un oscilador. Así de simple. El microcontrolador dispone de varios osciladores capaces de funcionar en modos diferentes. Y aquí es donde viene lo interesante...
Como se muestra en la siguiente figura, la señal de reloj se genera por uno de los dos osciladores integrados.
Un oscilador externo está incorporado dentro del microcontrolador y conectado a los pines OSC1 y OSC2. Es denominado ‘externo’ porque está conectado a los componentes externos tales como: cristal de cuarzo, resonador cerámico o circuito resistor - capacitor. El modo de funcionamiento del oscilador se selecciona por los bits de la Palabra de Configuración, cargados en el microcontrolador durante la programación.
El oscilador interno consiste en dos osciladores internos separados:
El HFINTOSC es un oscilador interno de alta frecuencia calibrado a 8MHz. El microcontrolador puede utilizar una señal de reloj generada a esta frecuencia o después de haber sido dividida en el pre-escalador.
El LFINTOSC es un oscilador interno de baja frecuencia calibrado a 31 kHz. Sus pulsos de reloj se utilizan para funcionamiento de los temporizadores de encendido y perro guardián, asimismo puede utilizarse como fuente de señal de reloj para el funcionamiento de todo el microcontrolador.
El bit System Clock Select (bit de selección del reloj del sistema - SCS) del registro OSCCON determina si una fuente de señal de reloj del microcontrolador será interna o externa.
Registro OSCCON
El registro OSCCON se utiliza para seleccionar y gobernar el oscilador de reloj y la frecuancia de reloj. Contiene los siguientes bits: bits de selección de frecuencia (IRCF2, IRCF1, IRCF0), bits de estado de frecuencia (HTS, LTS), bits de control de reloj del sistema (OSTA, SCS).
IRCF2-0 - Internal Oscillator Frequency Select bits. (bits de selección de frecuencia del oscilador interno). El valor del divisor de frecuencias depende de la combinación de estos tres bits. La frecuencia de reloj del oscilador interno se determina de la misma manera.
IRCF2 |
IRCF1 |
IRCF0 |
FRECUENCIA |
OSC. |
1 |
1 |
1 |
8 MHz |
HFINTOSC |
1 |
1 |
0 |
4 MHz |
HFINTOSC |
1 |
0 |
1 |
2 MHz |
HFINTOSC |
1 |
0 |
0 |
1 MHz |
HFINTOSC |
0 |
1 |
1 |
500 kHz |
HFINTOSC |
0 |
1 |
0 |
250 kHz |
HFINTOSC |
0 |
0 |
1 |
125 kHz |
HFINTOSC |
0 |
0 |
0 |
31 kHz |
LFINTOSC |
OSTS - Oscillator Start-up Time-out Status bit (bit de estado del temporizador de encendido) indica cuál fuente de reloj está actualmente en uso. Es un bit de sólo lectura.
- 1 - Se utiliza el oscilador de reloj externo.
- 0 - Se utiliza uno de los osciladores de reloj interno (HFINTOSC o LFINTOSC).
HTS - HFINTOSC Status bit (8 MHz - 125 kHz) (bit de estado del HFINTOSC) indica si el oscilador interno de alta frecuencia funciona en modo estable.
- 1 - HFINTOSC está estable.
- 0 - HFINTOSC no está estable.
LTS - LFINTOSC Stable bit (31 kHz) (bit de estado del LFINTOSC) indica si el oscilador de baja frecuencia funciona en modo estable.
- 1 - LFINTOSC está estable.
- 0 - LFINTOSC no está estable.
SCS - System Clock Select bit (bit de selección del reloj del sistema) determina cuál oscilador se utilizará como una fuente de reloj.
- 1 - Oscilador interno se utiliza como reloj del sistema.
- 0 - Oscilador externo se utiliza como reloj del sistema. El modo del oscilador se configura por medio de los bits, denominados Palabra de Configuración, que se escribe en la memoria del microcontrolador durante el proceso de la programación.
MODOS DE RELOJ EXTERNO
El oscilador externo se puede configurar para funcionar en uno de varios modos, lo que habilita que funcione a diferentes velocidades y utilice diferentes componentes para estabilizar la frecuencia. El modo de funcionamiento se selecciona durante el proceso de escribir un programa en el microcontrolador. Antes que nada, es necesario activar el programa en una PC que se utilizará para programar el microcontrolador. En este caso, es el programa PICflash. Pulse sobre la casilla del oscilador y seleccione uno de la lista desplegable. Las informaciones sobre esta configuración se gurdan automáticamente en la Palabra de Configuración.
Durante el proceso de la programación del microcontrolador, los bits de la Palabra de Configuración se escriben en la memoria ROM del microcontrolador y se almacenan en los registros especiales no disponibles al usuario. A base de estos bits, el microcontrolador “sabe” qué hacer, aunque eso no se indica explícitamente en el programa.
Modo de funcionamiento se sele-cciona después de escribir y compilar un programa.
OSCILADOR EXTERNO EN MODO EC
El oscliador de reloj externo en el modo EC (external clock) utiliza un oscilador externo independiente como una fuente de señal de reloj. La máxima frecuencia de señal de reloj está limitada a 20 MHz.
Las ventajas del funcionamiento del oscilador externo en modo EC son las siguientes:
- La fuente de reloj externa independiente está conectada al pin de entrada OSC1. El pin OSC2 está disponible como pin de E/S de propósito general;
- Es posible sincronizar el funcionamiento del microcontrolador con los demás componentes incorporados en el dispositivo;
- En este modo el microcontrolador se pone a funcionar inmediatamente después de encenderlo. No se requiere esperar para estabilizar la frecuencia.
- Al deshabilitar temporalmente la fuente de reloj externa, se detiene el funcionamiento del dispositivo, dejando todos los datos intactos. Después de reiniciar el reloj externo, el dispositivo sigue funcionando como si no hubiera pasado nada.
OSCILADOR EXTERNO EN MODO LP, XT o HS
El oscilador en los modos LP, XT y HS utilizan un oscilador externo dentro del microcontrolador como una fuente de reloj. La frecuencia de reloj está determinada por un cristal de cuarzo o por resonadores cerámicos conectados a los pines OSC1 y OSC2. Dependiendo de las características de los componentes utilizados, seleccione uno de los siguientes modos:
- Modo LP - (Baja potencia) se utiliza sólo para cristal de cuarzo de baja frecuencia. Este modo está destinado para trabajar con cristales de 32.768 KHz normalmente embebidos en los relojes de cristal. Es fácil de reconocerlos por sus dimensiones pequeñas y una forma cilíndrica. Al utilizar este modo el consumo de corriente será menor que en los demás modos.
- Modo XT se utiliza para cristales de cuarzo de frecuencias intermedias hasta 8 MHz. El consumo de corriente es media en comparación con los demás modos.
- Modo HS - (Alta velocidad) se utiliza para cristales de reloj de frecuencia más alta de 8 MHz. Al utilizar este modo el consumo de corriente será mayor que en los demás modos.
Resonadores cerámicos en modo XT o HS
Los resonadores cerámicos son similares a los cristales de cuarzo según sus características, por lo que se conectan de la misma manera. A diferencia de los cristales de cuarzo, son más baratos y los osciladores que hacen uso de ellos son de calidad más baja. Se utilizan para las frecuencias de reloj entre 100 kHz y 20 MHz.
OSCILADOR EXTERNO EN MODOS RC Y RCIO
El uso de los componentes para estabilizar la frecuencia sin duda alguna tiene muchas ventajas, pero a veces realmente no es necesario. En la mayoría de casos el oscilador puede funcionar a frecuencias que no son precisamente definidas, así que sería una pérdida de dinero embeber tales componentes. La solución más simple y más barata es estas situaciones es utilizar una resistencia y un capacitor para el funcionamiento del oscilador. Hay dos modos:
Modo RC. Cuando el oscilador externo se configura a funcionar en modo RC, el pin OSC1 debe estar conectado al circuito RC como se muestra en la figura a la derecha. La señal de frecuencia del oscilador RC dividida por 4 está disponible en el pin OSC2. Esta señal se puede utilizar para la calibración, sincronización o para otros propósitos.
Modo RCIO. De manera similar, el circuito RC está conectado al pin OSC1. Esta vez, el pin OSC2 está disponible para ser utilizado como pin de E/S de propósito general.
En ambos casos se le recomienda utilizar los componentes como se muestra en la figura.
La frecuencia de este oscilador se calcula por medio de la fórmula f = 1/T según la que:
- f = frecuencia [Hz];
- T = R*C = constante de tiempo [s];
- R = resistencia eléctrica [W]; y
- C = capacitancia del condensador [F].
MODOS DE RELOJ INTERNO
El circuito del oscilador interno consiste en dos osciladores separados que se pueden sele-ccionar como la fuente del reloj del microcontrolador:
El oscilador
HFINTOSC está calibrado de fábrica y funciona a 8Mhz. La frecuencia de este oscilador se puede configurar por el usuario por medio de software utilizando los bits del registro OSCTUNE.
El oscilador
LFINTOSC no está calibrado de fábrica y funciona a 31kHz.
Similar al oscilador externo, el interno también puede funcionar en varios modos. El modo de funcionamiento se selecciona de la misma manera que en el oscilador externo - por medio de los bits que forman Palabra de configuración. En otras palabras, todo se lleva a cabo dentro del software antes de escribir un programa en el microcontrolador.
OSCILADOR INTERNO EN MODO INTOSC
En este modo, el pin OSC1 está disponible para ser utilizado como pin de E/S de propósito general. La señal de frecuencia del oscilador interno dividida por 4 está disponible en el pin OSC2.
OSCILADOR INTERNO EN MODO INTOSCIO
En este modo, los dos pines están disponibles como pines de E/S de propósito general.
CONFIGURACIÓN DEL OSCILADOR INTERNO
El oscilador interno consiste en dos circuitos separados:
1. El oscilador interno de alta frecuencia HFINTOSC está conectado al post-escalador (divisor de frecuencias). Está calibrado de fábrica y funciona a 8 Mhz. Al utilizar el post-escalador, este oscilador puede producir una señal de reloj a una de siete frecuencias. La selección de frecuencia se realiza dentro del software utilizando los pines IRCF2, IRCF1 y IRCF0 del registro OSCCON.
El HFINTOSC está habilitado al seleccionar una de siete frecuencias (entre 8 Mhz y 125 kHz) y poner a uno el bit de la fuente de reloj del sistema (SCS) del registro OSCCON. Como se muestra en la siguiente figura , todo el procedimiento se realiza por medio de los bits del registro OSCCON.
2. El oscilador de baja frecuencia LFINTOSC no está calibrado de fábrica y funciona a 31 kHz. Está habilitado al seleccionar la frecuencia (bits del registro OSCCON) y poner a uno el bit SCS del mismo registro.
MODE DE CAMBIO AUTOMÁTICO DE VELOCIDAD DE RELOJ
(Two-Speed Clock Start-up Mode)
El modo de cambio automático de velocidad de reloj se utiliza para reducir el consumo de corriente cuando el microcontrolador funciona en modo de reposo. ¿De qué se trata todo esto?
Cuando se configura en modo LP, XT o HS, el oscilador externo se desactiva al pasar a modo de reposo para reducir el consumo de corriente total del dispositivo.
Cuando se cumplen las condiciones de “despertamiento”, el microcontrolador no se pone a funcionar inmediatamente puesto que tiene que esperar a que se estabilice la frecuencia de señal de reloj. Este tiempo muerto dura exactamente 1024 pulsos, después de que el microcontrolador continúa con la ejecución del programa. El caso es que se ejecutan sólo unas pocas instrucciones antes de que el microcontrolador vuelva al modo de reposo. Eso significa que la mayoría de tiempo así como la mayoría de corriente de baterías se ha perdido en vano. El caso se soluciona utilizando el oscilador interno para ejecutar el programa durante la duración de 1024 pulsos. Tan pronto como se estabilice la frecuencia del oscilador externo, él retoma automáticamente “el papel principal.” Todo el procedimiento se habilita al poner a uno el bit de palabra de configuración. Para programar el microcontrolador, es necesario seleccionar la opción Int-Ext Switchover (conmutación interna/externa) por software.
MONITOR PARA DETECTAR UN FALLO DE LA FUENTE DE RELOJ (FAIL-SAFE CLOCK MONITOR)
Como indica su nombre, el monitor para detectar un fallo de la fuente de reloj (Fail-Safe Clock Monitor - FSCM) monitorea el funcionamiento del oscilador externo y permite al microcontrolador continuar con la ejecución de programa en caso de que el oscilador falle por alguna razón. En tal caso, el oscilador interno toma su función.
El monitor detecta un fallo al comparar las fuentes de reloj interno y externo. Si los pulsos del oscilador externo tardan más de 2mS en llegar, la fuente de reloj será automáticamente cambiada por la interna. Así, el oscilador interno sigue funcionando controlado por los bits del registro OSCCON. Si el bit OSFIE del registro PIE2 está a uno, se producirá una inte-rrupción. El reloj interno sigue siendo la fuente del reloj del sistema hasta que el dispositivo reinicie con éxito el oscilador externo que vuelve a ser la fuente de reloj del sistema.
De manera similar a casos anteriores, este módulo está habilitado al cambiar la palabra de configuración justamente antes de que se inicie el proceso de programar el chip. Esta vez, esto se realiza al seleccionar la opción Fail-Safe Clock Monitor.
Registro OSCTUNE
Los cambios del registro OSCTUNE afectan a la frecuencia del oscilador HFINTOSC, pero no a la frecuencia del LFINTOSC. No hay ninguna indicación de que haya ocurrido desplazamiento de frecuencia durante el funcionamiento del microcontrolador.
TUN4 - TUN0 Frequency Tuning bits. (bits de calibrar la frecuencia). Al combinar estos cinco bits, la frecuencia del oscilador de 8Mhz se reduce o se aumenta. De este modo, las frecuencias obtenidas por la división en el post-escalador cambian también.
TUN4 |
TUN3 |
TUN2 |
TUN1 |
TUN0 |
FRECUENCIA |
0 |
1 |
1 |
1 |
1 |
Máxima |
0 |
1 |
1 |
1 |
0 |
|
0 |
1 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
1 |
|
0 |
0 |
0 |
0 |
0 |
Calibrada |
1 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
0 |
1 |
0 |
|
1 |
0 |
0 |
0 |
1 |
|
1 |
0 |
0 |
0 |
0 |
Mínima |