SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
GUIA DE OSCILADORES
Estimado amigo lector:
El presente texto nació con el afán de poder programar pics con seguridad, sabiendo de
antemano que es lo que estamos haciendo, entendiendo que es cada bit de configuración, pudiendo así
interpretar cada uno de los fuses, sin tener que limitarnos a copiar y pegar un ejemplo descargado de la web
y hacerlo funcionar por arte de magia o de casualidad.
Si bien la mayor parte del texto es básicamente la traducción del inglés al español del
capítulo 2 del datasheet de los PIC18F2455/2550/4455/4550 confeccionado por la empresa Microchip en el
cual se tratan las distintas configuraciones de osciladores para dichos microcontroladores, me he esforzado
para que sea más fácil de comprender el tema en cuestión ampliando las tablas, figuras, y el texto en si y
agregando luego de algunos párrafos las figuras que están disgregadas por todo el datasheet que va
citando el texto para poder tenerlas más a mano, como así también ejemplos exhibiendo las configuraciones
en C18. Por lo que la traducción no ha sido respetada al 100%, tanto en el texto como en el contenido. Vale
aclarar que es sólo una guía de estudio y así debe ser interpretada, pudiendo contener muchos errores.
No me hago responsable por el uso del presente texto.
Todo el contenido ha sido exclusivamente sacado de sitios públicos de Internet..-
Mi mayor deseo es que sirva para aclararle los conceptos a quien lo necesite.
.. Saludos cordiales
Jukinch
2.0 CONFIGURACIONES DE OSCILADORES
2.1 Resumen:
La familia de los PIC18F2455/2550/4455/4550 incorporó un sistema diferente de oscilador
frente a sus antecesores PIC18F. Al haberles agregado el módulo USB, el cual tiene como único
requerimiento una fuente estable de reloj, se hizo necesario proveer a estos nuevos microcontroladores de
una fuente separada de reloj, que fuese estable, y que cumpla con las especificaciones técnicas del USB,
para que puedan trabajar tanto en baja como en alta velocidad.
Para cumplir con estos requisitos los PIC18F2455/2550/4455/4550 incluyen una nueva
rama de fuente de reloj que provee la frecuencia necesaria para operar el módulo USB sea a baja (6 MHz) o
alta velocidad (48 MHz).
Desde que el módulo USB toma la frecuencia de trabajo de una fuente primaria de reloj,
para ello se les ha agregado un sistema de prescalers y postscalers, para poder conseguir un amplio
rango de frecuencias de oscilador. Otras características de la estructura de los osciladores de la familia de
los PIC18, como el bloque de reloj interno, o la conmutación de fuentes de reloj (clock switching), siguen
siendo las mismas.
Mas abajo en la Figura 2.1 se exhibe un esquema de la estructura del oscilador.
Básicamente hay tres fuentes de reloj para esta familia de dispositivos:
Oscilador Primario
Oscilador Secundario
Bloque de Oscilador Interno
2.1.1 CONTROL DEL OSCILADOR
El funcionamiento del oscilador de los PIC18F2455/2550/4455/4550 es controlado por:
2 Registros de Configuración.
y 2 Registros de Control.
Los Registros de Configuración, CONFIG1L y CONFIG1H, seleccionan el modo de
oscilador y las opciones del USB prescaler/postscaler.
Como Bits de Configuración, estos parámetros son seteados en el momento en que la
memoria de programa del pic es grabada con un programador y quedan guardados hasta que el pic es
reprogramado.
Registros de Control: OSCCON y OSCTUNE
El registro OSCCON (register 2-2) permite seleccionar el modo activo de oscilador. Dicho registro es
usado ante todo para controlar el cambio de fuente de reloj en los modos de alimentación controlada (son 7 modos, los
cuales proveen una gran variedad de opciones de alimentación del PIC para conservar la energía). Este supuesto será
tratado más adelante (ver datasheet Sección 2.4.1 “Oscillator Control Register”.)
El registro OSCTUNE (register 2-1) es utilizado para hacer ajustes de precisión o para “afinar” la
fuente de frecuencia INTRC, como también para seleccionar la fuente de baja frecuencia para manejar características
especiales. Su uso será descripto más adelante (ver sección 2.2.5.2 “OSCTUNE Register”).
2.2 TIPOS DE OSCILADORES
Los PIC18F2455/2550/4455/4550 cuentan con tres tipos de osciladores, uno primario (usa
cristal o señal externa), otro secundario (utiliza el timer1), y un bloque de oscilador interno (utiliza el
oscilador interno o el INTRC), pudiendo seleccionar 12 modos de configuración de fuente de oscilador.
4 de estas configuraciones usan dos tipos de osciladores al mismo tiempo (INTHS, INTXT,
INTIO e INTCKO (son los modos 9 a 12 de la siguiente tabla).
Mediante los bits de configuración FOSC3:FOSC0 del Registro de Configuración
CONFIG1H se puede seleccionar uno de estos 12 modos. En C18 se utiliza la directiva #pragma config
FOSC como se ejemplifica en la siguiente taba:
N° Fuente de
reloj
NOMBRE TIPO DE OSCILADOR/ES CONFIGURACIÓN EN C18
1 Cristal o
Resonador
XT Crystal/Resonator #pragma config FOSC = XT_XT
2 Cristal o
Resonador
XTPLL Crystal/Resonator con PLL activado #pragma config FOSC = XTPLL_XT
3 Cristal o
Resonador
HS High-Speed Crystal/Resonator #pragma config FOSC = HS
4 Cristal o
Resonador
HSPLL High-Speed Crystal/Resonator con PLL activado #pragma config FOSC = HSPLL_HS
5 Señal
externa
EC External Clock como fuente de clock para la CPU con
salida de Frecuencia/4 en RA6
#pragma config FOSC = EC_EC
6 Señal
externa
ECIO External Clock como fuente de clock para la CPU con pin
de Input/Output en RA6
#pragma config FOSC = ECIO_EC
7 Señal
externa
ECPLL External Clock con PLL activado con salida de
Frecuencia/4 en RA6
#pragma config FOSC = ECPLL_EC
8 Señal
externa
ECPIO External Clock con PLL activado, con pin de
Input/Output en RA6
#pragma config FOSC = ECPLLIO_EC
9 Oscilador
interno y
Cristal
INTHS Internal Oscillator como fuente de clock para la CPU,
oscilador HS como fuente de oscilador para el módulo
USB
#pragma config FOSC = INTOSC_HS
10 Oscilador
interno y
Cristal
INTXT Internal Oscillator como fuente de clock para la CPU,
oscilador XT como fuente de oscilador para el módulo USB
#pragma config FOSC = INTOSC_XT
11 Oscilador
interno y
Señal
externa
INTIO Internal Oscillator como fuente de clock para la CPU,
señal externa EC como fuente de oscilador para el
módulo USB, con pin de Input/Output digital en el pin
RA6
#pragma config FOSC = INTOSCIO_EC
12 Oscilador
interno y
Señal
externa
INTCKO Internal Oscillator como fuente de clock para la CPU,
señal externa EC como fuente de oscilador para el
módulo USB, con salida de frecuencia dividida por 4
(FOSC/4) en RA6
#pragma config FOSC = INTOSC_EC
Los modos XT, HS, EC, y ECIO pueden utilizar el Oscillator Postcaler (CPUDIV) para
dividir la frecuencia de entrada del Oscilador Primario, por 1, por 2, por 3 o por 4.
Los modos INTHS, INTXT, INTIO, e INTCKO pueden utilizar el INTOSC Postcaler para
dividir la frecuencia de salida de la fuente del Oscilador interno de 8mhz, para lograr una
frecuencia de 8Mhz (sin dividir), de 4Mhz, de 2Mhz, de 1Mhz, de 500Khz, de 250 Khz, de
125 Khz, o de 31 Khz, o directamente la de 31Khz si se utiliza como fuente el INTRC.
(Los ejemplos en c18 se citan en páginas subsiguientes)
2.2.1 MODOS DE OSCILADORES Y MODULO USB
Un diferente enfoque es necesario efectuar con estos nuevos PICs con módulo USB.
En los PICs antecesores una única fuente de oscilador alimentaba el núcleo de
microcontrolador (CPU) y los periféricos. La fuente usual de oscilador era la primaria, la secundaria o la
interna. Con los PICS 18F2455/2550/4455/4550 el oscilador primario forma parte del módulo USB y por ello
el módulo USB no puede ser asociado con ninguna de las otras fuentes de reloj. Así el módulo USB debe
recibir la señal de reloj únicamente desde la fuente primaria de oscilador. Sin embargo el núcleo del
microcontrolador (CPU) y los periféricos también pueden recibir señal de reloj desde la fuente de reloj
primaria como también desde la fuente secundaria o del oscilador interno al igual que en los PICs
antecesores.
Cuando el módulo USB es activado para conectividad USB, necesita una fuente de reloj
interna de 6 MHz o 48 MHz (esto a causa del requerimiento del estandard del protocolo USB) dependiendo
del modo de velocidad que se use, sea Baja-Velocidad o Alta-Velocidad. Afortunadamente el
microcontrolador y los periféricos no requieren que se ejecuten a la misma velocidad que el módulo USB
cuando se utiliza el oscilador primario. Hay numerosas opciones de configuración para brindarle la
frecuencia necesaria al módulo USB y a su vez proveer un amplio rango de diferentes frecuencias desde el
oscilador primario al núcleo del microncontrolador y a los periféricos. (el concepto será ampliado más abajo
en la sección 2.3 “AJUSTES DEL OSCILADOR PARA EL USO DEL MÓDULO USB”).
OSCILADOR PRIMARIO
2.2.2 OSCILADOR a CRISTAL / RESONADOR CERAMICO
En los modos de oscilador HS, HSPLL, XT y XTPLL un cristal o resonador cerámico se
conecta a los pines del PIC OSC1 (PIN 13 en el 18F4550 de 40pines) y OSC2 (PIN 14 en el 18F4550 de
40pines) para establecer oscilación.
Esta configuración es la que se utilizará en la mayoría de los proyectos iniciales en los que
no sea utilizado el módulo USB. Normalmente se usará el modo de oscilador n°1 XT para cristales de 4 mhz
y la configuración n°3 HS para cristales de más de 4mhz.
De acuerdo al cristal que se elija se deberán conectar en paralelo diferentes capacitores:
En modo XT con cristal de 4.0 MHz 33 pF 33 pF
En modo HS con cristal de 8.0 MHz 27 pF 27 pF
En modo HS con cristal de 16.0MHz 22 pF 22 pF
En modo HS con cristal de 20.0MHz 15 pF 15 pF
Mediante el uso de un postscaler interno se puede reducir la frecuencia de reloj que entrega el
cristal para hacer funcionar al CPU a diferentes velocidades dividiendo dicha frecuencia.
Para ello se debe utilizar uno de los modos de oscilador que no utilice el PLL.
La división de la frecuencia estará determinada por los bits de configuración de CPUDIV. Pudiendo
seleccionar mediante el uso del Oscillator Postcaler (CPUDIV) la frecuencia directa de reloj del oscilador o
1/2, o 1/3 o 1/4 de dicha frecuencia,conforme se detalla en la siguiente tabla.
Frecuencia
del Oscilador
Divisor CPUDIV1:CPUDIV0
Oscillator Postcaler
Configuración en c18 para los modos:
FOSC = XT_XT o FOSC = HS
Frecuencia de trabajo del CPU
4 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 4 Mhz
4 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 2 Mhz
4 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 1,33 Mhz
4 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 1 Mhz
8 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 8 Mhz
8 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 4 Mhz
8 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 2,67 Mhz
8 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 2 Mhz
12 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 12 Mhz
12 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 6 Mhz
12 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 4 Mhz
12 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 3 Mhz
16 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 16 Mhz
16 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 8 Mhz
16 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 5,33 Mhz
16 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 4 Mhz
20 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 20 Mhz
20 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 10 Mhz
20 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 6,67 Mhz
20 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 5 Mhz
24 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 24 Mhz
24 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 12 Mhz
24 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 8 Mhz
24 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 6 Mhz
40 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 40 Mhz
40 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 20 Mhz
40 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 13,33 Mhz
40 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 10 Mhz
48 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 48 Mhz
48 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 24 Mhz
48 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 16 Mhz
48 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 12 Mhz
En el modo HS también se puede usar ENTRADA EXTERNA DE FRECUENCIA DE RELOJ
(HS OSC CONFIGURATION). En este caso se deja desconectado el pin OSC2/CLKO.
En la siguiente figura se indica en amarillo el recorrido que hace la señal desde que sale del
oscilador primario, pasando por el Oscillator Postcaler CPUDIV que divide la frecuencia, hasta llegar al
núcleo del microcontrolador (CPU CLock).
2.2.3 ENTRADA DE CLOCK EXTERNO
En los modos de oscilador EC, ECIO, ECPLL y ECPIO se requiere una fuente de reloj
externa para ser conectada al pin OSC1 (PIN 13 en el 18F4550 de 40pines). No se requiere tiempo de
espera para que el oscilador arranque luego de un Power-on Reset o luego de que el microcontrolador salga
del modo Sleep.
En los modos de oscilador EC y ECPLL, la frecuencia externa que ingresa al
microcontrolador está disponible para el uso en el pin OSC2 (PIN 14 en el 18F4550 de 40pines) pero
dividida por 4. Esta señal puede ser usada para testeos, para sincronismo, etc.
Los modos de oscilador ECIO y ECPIO funcionan como los modos EC y ECPLL, excepto en
cuanto que el pin OSC2 (PIN 14 en el 18F4550 de 40pines) se convierte en un pin l/O adicional de
propósito general, más precisamente, se convierte en el bit 6 del PORTA (RA6).
El postscaler interno (Oscillator Postcaler CPUDIV) para reducir la frecuencia de clock de
los modos XT y HS también está disponible para los modos EC y ECIO.
2.2.4 MULTIPLICADOR DE FRECUENCIA PLL
Los PIC18F2455/2550/4255/4550 incluyen un circuito PLL (Phase Locked Loop). Este ha
sido previsto específicamente para aplicaciones USB con osciladores de baja velocidad y también para ser
usado como fuente de reloj para el CPU del microcontrolador.
El PLL se activa en los modos de osciladores HSPLL, XTPLL, ECPLL y ECPIO.
El PLL ha sido diseñado para producir una frecuencia de reloj fija de referencia de 96 MHz
desde una entrada fija de 4 Mhz. La salida de 96Mhz puede ser dividida y utilizada por ambos, tanto por el
módulo interno USB como por el CPU o núcleo del microcontrolador para correr los programas. Y atento
que el PLL tiene una entrada de 4mhz y una salida de 96mhz, ambas de frecuencia fija, hay ocho opciones
de prescaling para que la frecuencia del oscilador primario pueda alcanzar la entrada del PLL. Dividiendo la
frecuencia que entrega el oscilador /1, /2, /3, /4, /5, /6, /10 / 12. mediante el uso del PLL Prescaler.
Frecuencia
del Oscilador
divisor
PLL
Poscaler
Configuración en C Frecuencia de entrada al
PLL
4 Mhz / 1 #pragma config PLLDIV = 1 = 4 Mhz
8 Mhz / 2 #pragma config PLLDIV = 2 = 4 Mhz
12 Mhz / 3 #pragma config PLLDIV = 3 = 4 Mhz
16 Mhz / 4 #pragma config PLLDIV = 4 = 4 Mhz
20 Mhz / 5 #pragma config PLLDIV = 5 = 4 Mhz
24 Mhz / 6 #pragma config PLLDIV = 6 = 4 Mhz
40 Mhz / 10 #pragma config PLLDIV = 10 = 4 Mhz
48 Mhz / 12 #pragma config PLLDIV = 12 = 4 Mhz
También hay una opción separada de postcaler para derivar frecuencia de reloj desde el
PLL al CPU del microcontrolador, mediante el uso del PLL-Postcaler CPUDIV. Esto permite que el módulo
USB y la CPU del microcontrolador usen una misma fuente de entrada de oscilador y operar a diferentes
velocidades de frecuencias de reloj. Es decir, el módulo USB a una velocidad y el CPU a otra.
Por ejemplo con un cristal de 4Mhz podemos hacer funcionar el módulo USB a 48Mhz y
ejecutar nuestros programas a 24Mhz.
En contraste con el Oscillator Postcaler CPUDIV que se utiliza para los modos de oscilador
XT, HS y EC, las opciones disponibles de división de frecuencia del PLL-Postcaler CPUDIV son de 1/2, 1/3,
1/4 y 1/6 de la frecuencia de salida del PLL.
Salida
del PLL
Divisor
PLLPostcaler
CPUDIV
Configuración en c18 para modos que usan el PLL Frecuencia de
trabajo para el CPU
extraida del PLL
96 Mhz / 2 #pragma config CPUDIV = OSC1_PLL2 = 48 Mhz
96 Mhz / 3 #pragma config CPUDIV = OSC2_PLL3 = 32 Mhz
96 Mhz / 4 #pragma config CPUDIV = OSC3_PLL4 = 24 Mhz
96 Mhz / 6 #pragma config CPUDIV = OSC4_PLL6 = 16 Mhz
Los modos de oscilador HSPLL, ECPLL y ECPIO hacen uso del modo de oscilador HS para
frecuencias de hasta 48 MHz.
Para ello el PLLprescaler divide la frecuencia de entrada del oscilador hasta por 12 para
producir los 4MHz que se necesitan para hacer funcionar el PLL.
El modo XTPLL sólo puede usar una entrada de frecuencia de 4 MHz la cual hará funcionar
directamente al PLL, sin hacer divisiones.
En la siguiente figura se indica en amarillo el recorrido que hace la señal desde que sale del
oscilador primario, pasando por el PLL Prescaler que divide la frecuencia para lograr los 4Mhz que requiere
el PLL para generar 96Mhz. Luego la señal de 96Mhz generada por el PLL tomará 2 caminos. Una rama
seguirá hacia el módulo USB, siendo dividida por 2 para alcanzar 48Mhz necesarios para el USB Clock y la
otra rama se dirigirá hacia el PLL Postcaler que nos permite elegir la frecuencia de trabajo del CPU hasta
llegar al núcleo del microcontrolador (CPU Clock).
2.2.5 BLOQUE DEL OSCILADOR INTERNO
La familia de PIC18F2455/PIC18F2550/PIC18F4455/PIC18F4550 tiene un oscilador interno
que genera dos señales de reloj diferentes (fuente de 8Mhz INTOSC y fuente de 31Khz INTRC); cualquiera
de las dos se puede utilizar como fuente de frecuencia de reloj del microcontrolador. Si el módulo USB no se
va a utilizar se puede ahorrar el uso del oscilador externo y utilizar las fuentes de reloj internas para así
conseguir liberar los pines OSC1 (PIN 13 en el 18F4550 de 40pines) y/o OSC2 (PIN 14 en el 18F4550 de
40pines)para usarlos para otras aplicaciones.
La salida principal de frecuencia del oscilador interno es una fuente de reloj de 8MHz
llamada INTOSC que se puede utilizar como fuente de señal de reloj directa para el CPU del
microcontrolador.
Esta señal de 8Mhz gobierna el INTOSC Postscaler, el cual puede proporcionar un rango de
frecuencias de 31kHz a 4MHz.
La salida INTOSC se activará cuando se seleccione una frecuencia de reloj de 125kHz a
8MHz.
La otra frecuencia que genera el oscilador interno es la llamada INTRC que brinda una
salida nominal de 31kHz. INTRC estará activa si se la selecciona como fuente de reloj para el CPU del
microcontrolador. Además también se activará automáticamente cuando alguno de los siguientes módulos
esté activo:
• Temporizador de encendido (Power-Up Timer)
• Monitor de reloj de seguridad (Fail-Safe Clock Monitor)
• Temporizador perro guardián (Watchdog Timer)
• Dos velocidades de inicio (Two speed Start-Up)
La fuente de frecuencia de reloj (Frecuencia INTOSC directa, INTRC directa, o INTOSC con
postcaler) se elige configurando el bit IRCF del registro OSCCON.
2.2.5.1 MODOS DE CONFIGURACIÓN DEL OSCILADOR INTERNO
Cuando se utilice el módulo USB y el oscilador interno se active como fuente de frecuencia
de reloj para el CPU del microcontrolador, al menos alguno de los otros modos (Señal de reloj externa o
Cristal/Resonador externo) deberá utilizarse como fuente de frecuencia de reloj para brindarle señal al USB
Clock. La elección de la fuente de reloj para dicho módulo USB estará determinada por el modo de oscilador
interno seleccionado.
Hay disponibles 4 modos de configuración del oscilador interno los cuales se pueden seleccionar
mediante las directivas de preprocesado #pragma o mediante la modificación de los registros de
configuración config1L y config1H. :
4 modos de
configuración del
OSCILADOR INTERNO
DESCRIPCION Configuración en c18 mediante
directivas pragma config
9. INTHS La fuente de frecuencia de reloj para el
módulo USB es provista por el oscilador en
modo HS
#pragma config FOSC = INTOSC_HS
10. INTXT La fuente de frecuencia de reloj para el
módulo USB es provista por el oscilador en
modo XT
#pragma config FOSC = INTOSC_XT
11. INTCKO La fuente de frecuencia de reloj para el
módulo USB es provista por una señal en la
entrada externa en OSC1/CLKI. En el pin
OSC2/CLKO tendremos como salida la
frecuencia de entrada dividida por 4
FOSC/4.
#pragma config FOSC = INTOSC_EC
12. INTIO La fuente de frecuencia de reloj para el
módulo USB es provista por una señal en la
entrada externa en OSC1/CLKI. El pin
OSC2/CLKO funcionará como un pin I/O
digital I(RA6).
Este es el único de los 4 modos de
oscilador interno que libera un pin del
puerto A. (OSC2/CLKO/RA6) para uso de
#pragma config FOSC = INTOSCIO_EC
I/O.
Una vez elegido el modo de configuración del oscilador interno con las directivas pragma de la tabla antes
citada, desde el código principal del programa se puede cambiar la frecuencia con el INTOSC Postcaler
modfiicando los bits del registro OSCCON (Registro 2-2 del datasheet pág. 32) Puntualmente los bits
IRCF2, IRCF1 e IRCF0.
IRCF2:IRCF0: Internal Oscillator Frequency Select bits (Bits de selección de Frecuencia del
Oscilador Interno )
111 = 8 MHz (INTOSC drives clock directly)
110 = 4 MHz
101 = 2 MHz
100 = 1 Mhz (3) this is the default. Valor por defecto.
011 = 500 kHz
010 = 250 kHz
001 = 125 kHz
000 = 31 kHz (from either INTOSC/256 or INTRC directly)
PASOS A SEGUIR PARA CONFIGURAR EL OSCILADOR INTERNO
// en los bits de configuración elegir el modo de oscilador
#pragma config FOSC = INTOSC_EC // ejemplo
// dentro del código Setear la frecuencia de trabajo
IRCF2 = 1; IRCF1 = 1; IRCF0 = 0; // ejemplo a 4mhz
/*
programa: prueba oscilador interno
pic: 18f4550
crystal: NO CPU: 1Mhz (valor por defecto)
CONEXIONES:
1 led en port D1 con una resistencia en serie de 470ohms
*/
/*Includes globales*/
#include <p18f4550.h>
#include <delays.h>
/*Includes locales*/
/* Bits de configuración*/
#pragma config FOSC = INTOSCIO_EC // Oscilador interno, uso de pin RA6 activado, El USB usa Clock Externo.
#pragma config WDT = OFF //desactivamos watchdog timer
#pragma config PWRT = ON // activamos power up timer
/*declaración de funciones*/
//////////////////////////////////////////////////////////////////////////////////////////////////
// Programa Principal //
//////////////////////////////////////////////////////////////////////////////////////////////////
void main()
{
ADCON0 = 0X00,ADCON1 = 0X0F,CMCON = 0X07; //puerto A con todos los pines digitales
TRISA = 0X00; // puertos A B y C como salida. Recordar Tip: el 0 es una o de ouput y el 1 una I de input!!!
TRISB = 0X00;
TRISC = 0X00;
LATA = 0X00; // ponemos los puertos en cero
LATB = 0X00;
LATC = 0X00;
TRISDbits.TRISD0 = 0; // Seteamps el pin D1 como salida para el LED
TRISDbits.TRISD1 = 0; // Seteamps el pin D1 como salida para el LED
LATDbits.LATD0 = 1; // Encendemos el led0
LATDbits.LATD1 = 0; // Apagamos el led1
while(1)
{
LATDbits.LATD0 = ~LATDbits.LATD0; // Intercambiamos el estado del pin del led (Toggle LED)
LATDbits.LATD1 = ~LATDbits.LATD1; // Intercambiamos el estado del pin del led (Toggle LED)
Delay10KTCYx(25); //Delay de 250K ciclos (1 segundo a 1MHz. Ya que cada instrucción toma 4 ciclos)
}
}
2.2.5.2 REGISTRO OSCTUNE
La salida del oscilador interno viene calibrada de fábrica pero puede ser reajustada por el
usuario en sus aplicaciones escribiendo en el registro OSCTUNE. La sensibilidad de la afinación es
constante durante todo el rango de ajuste.
Cuando el registro OSCTUNE es modificado la frecuencia INTOSC e INTRC comenzarán a
desplazarse hasta llegar a la nueva frecuencia.
La frecuencia de reloj INTRC alcanzará su nueva frecuencia en 8 ciclos de reloj
(aproximadamente 8*32us=256us).
La frecuencia de reloj INTOSC se estabilizará aproximadamente en un plazo de hasta 1ms.
La ejecución del programa continuará efectuándose durante el tiempo en que es reajustada
la frecuencia. No existe indicador de que la frecuencia ya haya sido reajustada.
El registro OSCTUNE también contiene el bit INTSRC. Este bit permite al usuario
seleccionar que fuente de oscilador interno proveerá de señal de reloj cuando la opción de frecuencia de
31khz es seleccionada. Esto se tratará más adelante (section 2.4.1 Oscillator Control Register).
2.2.5.3 FRECUENCIA DE SALIDA DEL OSCILADOR INTERNO y
DESFASE
El bloque del oscilador interno está calibrado de fábrica para producir en la salida INTOSC
una frecuencia de 8MHz. Sin embargo, esta frecuencia se puede desfasar si Vdd o la temperatura cambian,
pudiendo en este caso afectar la operación normal del microcontrolador de muchas formas.
El oscilador de baja frecuencia INTRC opera independientemente de la fuente INTOSC.
Cualquier cambio en INTOSC por tensión o temperatura no tiene porqué reflejarse en INTRC ni viceversa.
En la siguiente página se adjunta figura en donde se describe el registro OSCTUNE.
2.2.5.4 COMPENSACION POR DESFASE en INTOSC
Es posible ajustar la frecuencia de INTOSC modificando el valor en el registro OSCTUNE.
Esto no producirá ningún cambio en la fuente de frecuencia de reloj de INTRC.
El ajuste de la fuente de INTOSC requiere saber cuando debe hacerse dicho ajuste, como
así también en que dirección debe hacerse (si la frecuencia es baja o es alta), y en algunos casos, cuan
grande debe ser el cambio.
Por ejemplo:
Módulo EUSART: cuando usamos la EUSART en modo Asíncrono, en el caso en que
comiencen a generarse errores de framing o a recibirse datos con errores, deberá hacerse un ajuste.
Los errores de framing indican que la frecuencia de reloj del dispositivo es muy alta. Para
corregir esto se debe reducir la frecuencia de reloj decrementando el valor en OSCTUNE.
En el otro extremo, si aparecen errores en los datos, esto nos sugiere que la frecuencia de
reloj del dispositivo es muy baja. Para elevar la frecuencia de reloj se deberá incrementar el valor en
OSCTUNE.
También es posible verificar la velocidad en la que está trabajando el oscilador de dos
maneras:
a) comparándola con una señal de referencia. Para ello deben utilizarse dos
temporizadores: Un timer que fijará su frecuencia de reloj desde la señal que recibe el
periférico mientras que el otro fijará su frecuencia de reloj desde una fuente de referencia
fija como el oscilador del Timer1. Ambos temporizadores son borrados pero el timer que fija
su frecuencia de reloj desde una fuente de referencia fija es el que genera interrupciones.
Cuando ocurre una interrupción, se lee el valor del otro timer (el que trabaja con la
frecuencia de reloj interna) y luego se borran los dos temporizadores. Si el valor del Timer
interno es más grande de lo esperado, entonces significa que el bloque del oscilador interno
está funcionando muy rápido. Para ajustarlo hay que decrementar el valor del registro
OSCTUNE.
b) Utilizando un módulo CCP (Capture, Compare, PWM), y el Timer1 o el Timer3 (los
cuales ajustarán su frecuencia de reloj desde el bloque del oscilador interno) y un evento
externo con un periodo conocido (por ejemplo, la frecuencia de la corriente alterna, 50 o 60
ciclos por segundo dependiendo el país). El tiempo del primer evento es capturado en los
registros CCPRxH:CCPRxL y es guardado para su posterior utilización. Cuando un
segundo evento causa una captura, se resta el tiempo del primer evento al tiempo del
segundo evento. Como el periodo del evento externo es conocido, la diferencia de tiempo
entre los dos eventos se puede calcular. Si el tiempo medido es mucho mayor que el
tiempo calculado significa que el bloque del oscilador interno está funcionando muy rápido.
Para compensarlo, hay que decrementar el registro OSCTUNE. Si el tiempo medido es
mucho menor que el tiempo calculado, significa que el bloque del oscilador interno está
funcionando muy lento; para compensarlo se deberá aumentar el registro OSCTUNE.
2.3 AJUSTES DEL OSCILADOR PARA EL USO DEL MÓDULO USB
CUANDO el PIC18F4550 es usado para conectividad USB, el módulo USB necesitará una
fuente de reloj de 6 MHz o 48 MHz dependiendo el modo de velocidad que se use, sea de Baja-Velocidad o
de Alta-Velocidad. Esto requerirá cierta planificación en la selección del oscilador y de la frecuencia de
trabajo a utilizar como así también en la programación.
¿Y esto de las frecuencias de 6Mhz y de 48 Mhz por qué?
Porque la transferencia de datos en el modo de alta velocidad se trabaja por
estandarización del protocolo USB a 12.00Mb/s y en baja velocidad a 1.50Mb/s.
Y como un Ciclo Maquina está compuesto por 4 ciclos de reloj, para poder procesar datos a
velocidades de 12.00Mb/s o de 1.50Mb/s será necesario que el módulo trabaje a una frecuencia de trabajo
que sea 4 veces más rápida para poder ejecutar 1 instrucción por dato (4 ciclos de reloj por instrucción).-
Entonces tenemos 12.0 Mhz * 4 = 48 mhz: Full speed data is clocked at 12.00Mb/s
Así tenemos 1.5 Mhz * 4 = 6 Mhz: Low speed data is clocked at 1.50Mb/s
En la tabla (OPCIONES DE CONFIGURACION DEL OSCILADOR PARA USO DEL
MODULO USB) que se adjunta más abajo se exhibirá el amplio rango de configuraciones de osciladores
compatibles con la operación del módulo USB.
2.3.1 USB en modo Baja-Velocidad
Como la frecuencia de reloj para el modo Baja-Velocidad es derivada directamente del
oscilador primario y no del PLL. El PIC 18F4550 toma la señal del cristal y usa el Oscillator Postcaler para
dividir dicha señal por un numero (que puede ser /1, /2, /3, /4) alcanzando una frecuencia de 24MHz, los
cuales serán divididos nuevamente por 4 para producir los 6Mhz que se requieren como señal de entrada
para operar el módulo USB a Baja Velocidad. (ver recorrido resaltado en amarillo en la siguiente figura).
Por ello cuando se utilicen como fuente de reloj uno de los siguientes modos del oscilador
primario: XT, HS, o EC con o sin PLL y el modo de USB a Baja-Velocidad esté activo, la CPU del
microcontrolador solamente podrá usar como frecuencia de trabajo la de 24Mhz, ya que esos 24 Mhz que
salen derivados del Oscilator Postcaler hacia el divisor por 4 de la entrada del Módulo USB a baja-velocidad
continúan también hacia la CPU del Pic. Esta restricción no se aplica si el microcontrolador toma de fuente
de reloj el oscilador secundario o el bloque de oscilador interno.
ADVERTENCIA!. lo explicado precedentemente no quiere decir que sólo se pueda usar un
cristal de 24Mhz para usar el PIC18f4550 en modo USB a baja velocidad, sino que la frecuencia de entrada
del oscilador primario debe cumplir con ciertos requisitos para que sirva como alimentación de frecuencia
para el módulo USB en modo baja-velocidad para que al final de todo el recorrido que hace la frecuencia
desde que ingresa al oscilador primario hasta que llega a la entrada del Módulo USB se puedan obtener los
6Mhz.
Para operar el módulo USB a baja velocidad la frecuencia del oscilador primario deberá ser
divisible por 1, o por 2, o por 3 o por 4 y a su vez ser múltiplo de 24, ya que la frecuencia del cristal primero
pasará por el Oscillator Postcaler (CPUDIV 1/1, 1/2, 1/3, 1/4) y luego será dividida nuevamente por 4 para
entrar al módulo USB a baja-velocidad.
Estos requisitos hacen que existan pocas posibilidades de combinaciones de frecuencias de
entrada en el modo USB a baja velocidad.
Estas restricciones no se aplican si la fuente de reloj del microncontrolador es el oscilador
secundario o el bloque de oscilador interno.
2.3.2 EJECUTANDO tareas con diferentes fuentes de reloj para el
módulo USB y para la CPU del Microcontrolador.
El módulo USB, en cualquiera de los modos, puede ser ejecutado asincrónicamente con
respecto a la CPU del núcleo del microncontrolador como así también con respecto a otros periféricos. Esto
significa que las aplicaciones pueden utilizar el oscilador primario para dar señal de reloj al módulo USB
mientras que la CPU del microcontrolador es ejecutada desde una fuente de reloj diferente a baja velocidad.
Si es necesario ejecutar toda la aplicación desde una única fuente de reloj, la operación en modo Alta-
Velocidad (Full-speed) provee una gran variedad de diferentes configuraciones de frecuencias de reloj, en
contraste con las pocas posibilidades que otorga el modo de operación a baja-velocidad.
OPCIONES DE CONFIGURACION DEL OSCILADOR PARA USO DEL
MODULO USB
TABLA 2-3 OPCIONES DE CONFIGURACION DEL OSCILADOR PARA UTILIZAR EL MODULO USB
INPUT
OSCILLATOR
FREQUENCY
PLL DIVISION
PLLDIV2:DIV0)
PLL-Prescaler
Clock Mode
FOSC3:FOSC0
MCU CLOCK
DIVISION
CPUDIV1:CPUDIV0
Oscillator
Postcaler
or PLL -
Postcaler
Microcontroller
Clock
Frequency
48 MHz PLL-Prescaler
N/A(1)
EC, ECIO 48 ÷ None(00) Osc. Postcaler 48 Mhz
48 ÷ 2 (01) Osc. Postcaler 24 Mhz
48 ÷ 3 (10) Osc. Postcaler 16 Mhz
48 ÷ 4 (11) Osc. Postcaler 12 Mhz
48 Mhz PLL-Prescaler
+12(111)
48/12=4
EC, ECIO 48 ÷ None (00) Osc. Postcaler 48 Mhz
48 ÷ 2 (01) Osc. Postcaler 24 Mhz
48 ÷ 3 (10) Osc. Postcaler 16 Mhz
48 ÷ 4 (11) Osc. Postcaler 12 Mhz
ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz
96 ÷ 3 (01) PLL postcaler 32 Mhz
96 ÷ 4 (10) PLL postcaler 24 Mhz
96 ÷ 6 (11) PLL postcaler 16 Mhz
40 Mhz PLL-Prescaler EC, ECIO 40 ÷ None (00) Osc. Postcaler 40 Mhz
+10(110)
40/10=4
40 ÷ 2 (01) Osc. Postcaler 20 Mhz
40 ÷ 3 (10) Osc. Postcaler 13.33 Mhz
40 ÷ 4 (11) Osc. Postcaler 10 Mhz
ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz
96 ÷ 3 (01) PLL postcaler 32 Mhz
96 ÷ 4 (10) PLL postcaler 24 Mhz
96 ÷ 6 (11) PLL postcaler 16 Mhz
24 Mhz PLL-Prescaler
+6(101)
24/6=4
HS, EC, ECIO 24 ÷ None (00) Osc. Postcaler 24 Mhz
24 ÷ 2 (01) Osc. Postcaler 12 Mhz
24 ÷ 3 (10) Osc. Postcaler 8 Mhz
24 ÷ 4 (11) Osc. Postcaler 6 Mhz
HSPLL, ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz
96 ÷ 3 (01) PLL postcaler 32 Mhz
96 ÷ 4 (10) PLL postcaler 24 Mhz
96 ÷ 6 (11) PLL postcaler 16 Mhz
20 Mhz PLL-Prescaler
+5(100)
HS, EC, ECIO 20 ÷ None (00) Osc. Postcaler 20 Mhz
20 ÷ 2 (01) Osc. Postcaler 10 Mhz
20 ÷ 3 (10) Osc. Postcaler 6,67 Mhz
20 ÷ 4 (11) Osc. Postcaler 5 Mhz
HSPLL, ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz
96 ÷ 3 (01) PLL postcaler 32 Mhz
96 ÷ 4 (10) PLL postcaler 24 Mhz
96 ÷ 6 (11) PLL postcaler 16 Mhz
16 Mhz PLL-Prescaler
+4(011)
16/4+4
HS, EC, ECIO 16 ÷ None (00) Osc. Postcaler 16 Mhz
16 ÷ 2 (01) Osc. Postcaler 8 Mhz
16 ÷ 3 (10) Osc. Postcaler 5,33 Mhz
16 ÷ 4 (11) Osc. Postcaler 4 Mhz
HSPLL, ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz
96 ÷ 3 (01) PLL postcaler 32 Mhz
96 ÷ 4 (10) PLL postcaler 24 Mhz
96 ÷ 6 (11) PLL postcaler 16 Mhz
12 Mhz PLL-Prescaler
+3(010)
12/3=4
HS, EC, ECIO 12 ÷ None (00) Osc. Postcaler 12 Mhz
12 ÷ 2 (01) Osc. Postcaler 6 Mhz
12 ÷ 3 (10) Osc. Postcaler 4 Mhz
12 ÷ 4 (11) Osc. Postcaler 3 Mhz
HSPLL, ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz
96 ÷ 3 (01) PLL postcaler 32 Mhz
96 ÷ 4 (10) PLL postcaler 24 Mhz
96 ÷ 6 (11) PLL postcaler 16 Mhz
8 Mhz PLL-Prescaler
+2(001)
8/2=4
HS, EC, ECIO 8 ÷ None (00) Osc. Postcaler 8 Mhz
8 ÷ 2 (01) Osc. Postcaler 4 Mhz
8 ÷ 3 (10) Osc. Postcaler 2.67 Mhz
8 ÷ 4 (11) Osc. Postcaler 2 Mhz
HSPLL, ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz
96 ÷ 3 (01) PLL postcaler 32 Mhz
96 ÷ 4 (10) PLL postcaler 24 Mhz
96 ÷ 6 (11) PLL postcaler 16 Mhz
4 Mhz PLL-Prescaler
+1(000)
HS, EC, ECIO 4 ÷ None (00) Osc. Postcaler 4 Mhz
4 ÷ 2 (01) Osc. Postcaler 2 Mhz
4/1=4
4 ÷ 3 (10) Osc. Postcaler 1.33 Mhz
4 ÷ 4 (11) Osc. Postcaler 1 Mhz
HSPLL, ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz
96 ÷ 3 (01) PLL postcaler 32 Mhz
96 ÷ 4 (10) PLL postcaler 24 Mhz
96 ÷ 6 (11) PLL postcaler 16 Mhz
NOTA: todas las frecuencias de salida excepto la de 24Mhz son asociadas con el funcionamiento del módulo USB en modo Alta-
Velocidad (Fulll-Speed) USB clock 48Mhz.
En azul se remarcan los modos compatibles con el modo Baja-Velocidad (Low-Speed) System clock 24Mhz. Usb Clock 6 Mhz.
2.4 INTERCAMBIO DE FUENTES DE RELOJ Y OSCILADORES
Como en el caso de los PIC18 antecesores, la familia de PIC18F2455/2550/4455/4550
incluye una característica que les permite cambiar la fuente de frecuencia de reloj desde el oscilador
principal a una fuente alternativa de baja frecuencia de reloj.
Los PIC18F2455/2550/4455/4550 ofrecen 2 fuentes alternativas de reloj. Cuando se activa
una fuente de reloj alternativa, están disponibles los modos de alimentación controlada de ahorro de energía
(power-managed operating modes).
Básicamente hay tres fuentes de frecuencia de reloj para estos dispositivos:
• Osciladores Primarios (Primary oscillators)
• Osciladores Secundarios (Secondary oscillators)
• Bloque de Oscilador Interno (Internal oscillator block)
El oscilador primario incluye el modo de Cristal Externo y de Resonador (External Crystal and
Resonator modes), el modo de Frecuencia de Reloj Externa (the External Clock modes) y el bloque de
oscilador interno (the internal oscillator block). El modo de uso será definido por los bits de configuración
FOSC3:FOSC0.
Los osciladores secundarios (secondary oscillators) son aquellas fuentes externas de
frecuencia de reloj que no se conectan al par de pines OSC1 y OSC2. Estas fuentes pueden continuar
operando aún después de que el microcontrolador se coloque en un modo de alimentación controlada
(power-managed mode).
Los PIC18F2455/2550/4455/4550 ofrecen el Timer1 oscillator como un oscilador secundario
(secondary oscillator). Este oscilador, en todos los modos de alimentación controlada (power-managed
modes), es a menudo la base de tiempo para funciones como el reloj de tiempo real (Real-Time Clock). Muy
a menudo, un cristal de reloj de 32.768 kHz es conectado entre los pines RC0/T1OSO/T13CKI (PIN 15 en el
18F4550 de 40pines) y RC1/T1OSI/UOE (PIN 16 en el 18F4550 de 40pines).
Como los circuitos de los modos de oscilador XT y HS, también será necesario conectar
capacitores desde cada pin a tierra o gnd.
Además de poder ser utilizado como fuente de reloj primaria, el bloque de oscilador interno
(internal oscillator block) está también disponible como fuente de reloj para los modos de alimentación
controlada (power-managed mode clock source). La fuente de reloj INTRC también es usada como fuente
de reloj para varias funciones especiales como ser el Wacht dog Timer y el Fail-Safe Clock Monitor.
2.4.1 REGISTRO DE CONTROL DEL OSCILADOR
El registro OSCCON (Register 2-2) controla varios aspectos de la operación de la frecuencia
de reloj del microcontrolador, tanto en los modos de alimentación total (full power operation) como en los
modos de alimentación controlada (power-managed mode).
Los bits de selección de sistema de reloj (System Clock Select bits), SCS1:SCS0,
seleccionan la fuente de reloj (clock source). Las fuentes de reloj disponibles son el reloj primario (primary
clock) (definido por los bits de configuración FOSC3:FOSC0), el reloj secundario (secondary clock) (Timer1
oscillator) y el bloque de oscilador interno (the internal oscillator block). La fuente de reloj cambia
inmediatamente después de que uno o mas bits son escritos, siguiendo el reloj un breve intervalo de
transición. Los bits SCS son borrados en todas las formas de Reset.
Los bits de selección de frecuencia del oscilador interno (Internal Oscillator Frequency
Select bits), IRCF2:IRCF0, eligen la frecuencia de salida del bloque de oscilador interno para controlar la
frecuencia de reloj del microcontrolador. Las opciones son la fuente del INTRC, la fuente del INTOSC (8
MHz) o uno de las frecuencias derivadas del INTOSC postscaler (31 kHz to 4 MHz). Si el bloque de
oscilador interno está abasteciendo al microcontrolador, cambiando el estado de estos bits tendremos un
inmediato cambio en la salida del oscilador interno. En los casos de Resets, la salida de frecuencia por
defecto del bloque de oscilador interno es establecida a 1 MHz.
Cuando se selecciona la salida de frecuencia de 31 kHz (IRCF2:IRCF0 = 000), los usuarios
podrán elegir que oscilador interno actuará como fuente. Esto se realiza con el bit INTSRC en el registro
OSCTUNE (OSCTUNE<7>). Estableciendo este bit selecciona INTOSC como fuente de reloj de 31.25 kHz
(8Mhz INTOSC / 256 = 31.25Khz) mediante la activación de la salida del INTOSC postscaler divide_por_256
(divide-by-256 output). Borrando INTSRC seleccionaremos como fuente de reloj a INTRC (nominalmente 31
kHz). Esta opción permite a los usuarios seleccionar el ajustable y más preciso INTOSC como fuente de
reloj, mientras se mantiene el ahorro de energía con una muy baja velocidad de reloj. Sin importar el seteo
de INTSRC, INTRC siempre queda activa la fuente de reloj para características como el Watchdog Timer y
el Fail-Safe Clock Monitor.
Los bits OSTS, IOFS y T1RUN indican que fuente de reloj está actualmente proveyendo de
señal de reloj al microcontrolador.
El bit OSTS indica que el timer de arranque (Start-up Timer) ha cumplido su tiempo y el reloj
primario (primary clock) está proveyendo de señal de reloj en los modos de reloj primarios (primary clock
modes).
El bit IOFS indica cuando el bloque del oscilador interno ha sido estabilizado y se encuentra
proveyendo señal de reloj al microcontrolador en los modos de reloj RC. El bit T1RUN (T1CON<6>) indica
cuando el oscilador del Timer1 está proveyendo de señal de reloj al microcontrolador en los modos de
relojes secundarios. En los modos de alimentación controlada (power-managed modes), solo uno de estos 3
bits podrá ser seleccionado al mismo tiempo. Si ninguno de estos bits se ha seteado, implicará que INTRC
está proveyendo de señal de reloj o el bloque de oscilador interno ha comenzado a funcionar y todavía no
está estable. El bit IDLEN determina si el microcontrolador se ha puesto a funcionar en modo Sleep, o uno
de los modos Idle, cuando la instrucción SLEEP es ejecutada. El uso de la bandera (flag) y bits de control en
el registro OSCCON será discutido en mayor detalle en la Sección 3.0 “Power-Managed Modes”.
NOTA 1: El oscilador Timer1 debe ser activado para poder seleccionar la fuente secundaria de reloj. El
oscilador del Timer1 se activa seteando el bit en T1OSCEN en el registro Timer1 Control register
(T1CON<3>). Si el oscilador Timer1 no está activo, cualquier intento de seleccionar la fuente secundaria de
reloj será ignorado.
NOTA 2: Es recomendable que el oscilador Timer1 se encuentre operativo antes de seleccionarlo como
fuente de reloj principal; de lo contrario un muy largo delay podrá ocurrir mientras el oscilador Timer1
oscillator arranque.
2.4.2 TRANSICIONES DEL OSCILADOR
Los PIC18F2455/2550/4455/4550 contienen circuitería para prevenir malfuncionamientos en
el reloj cuando se hacen intercambios de diferentes fuentes de señales de reloj. Una breve pausa en el reloj
ocurre cuando se intercambia de reloj. La medida de esta pausa es la suma de 2 ciclos de la vieja fuente de
reloj y 3 a 4 ciclos de la nueva fuente de reloj. Esta fórmula asume que la nueva fuente de reloj es estable.
Las transiciones de relojes serán discutidas en mayor detalle en la sección 3.1.2 “Entering Power-Managed
Modes”.
2.5 EFECTOS DE LOS MODOS DE ALIMENTACIÓN CONTROLADOS EN
LAS DISTINTAS FUENTES DE RELOJ
Cuando el modo PRI_IDLE es seleccionado, el oscilador primario designado continuará
funcionando sin interrupción. Para todos los otros modos de alimentación controlada, el oscilador que se
encuentre usando el pin OSC1 será desactivado. A menos que el módulo USB se encuentre activado, el pin
OSC1 (y el pin OSC2 si es usado por el oscilador) no oscilará más.
En los modos de reloj secundario (SEC_RUN y SEC_IDLE), funcionará el oscilador Timer1
proveyendo de fuente de reloj al microcontrolador. El oscilador Timer1 podrá también funcionar en todos los
modos de alimentación controlada si es requerido como señal de reloj para el Timer1 o el Timer3.
En los modos de oscilador interno (RC_RUN and RC_IDLE), el bloque de oscilador interno
proveerá de señal de reloj al microcontrolador.
La salida de 31 kHz de INTRC podrá ser utilizada directamente para proveer de señal de
reloj y podrá ser activada para dar soporte a varias de las características especiales, sin importar en que
modo de alimentación controlada se encuentre (see Section 25.2 “Watchdog Timer (WDT)”, Section 25.3
“Two-Speed Start-up” and Section 25.4 “Fail-Safe Clock Monitor” for more information on WDT, Fail-Safe
Clock Monitor and Two-Speed Start-up).
La salida de INTOSC de 8 Mhz puede ser usada directamente para dar señal de reloj al
microcontrolador o puede ser dividida para obtener una menor frecuencia por el postscaler. La salida de
INTOSC es desactivada si la señal de reloj es provista directamente desde la salida de INTRC.
Sin importar que modo de ejecución se encuentre seleccionado, sea modo Run o modo Idle,
la fuente de reloj del módulo USB continuará operando. Si el microcontrolador opera desde un oscilador
basado en cristal o resonador, ese oscilador continuará dando señal al módulo USB. El núcleo o CPU y
todos los otros módulos cambiarán a la nueva fuente de reloj.
Si se selecciona el modo Sleep todas las fuentes de reloj serán detenidas.
Dado que todas las corrientes de conmutación de los transistores son detenidas, el modo
Sleep consigue el más bajo consumo de corriente en el microcontrolador (solo corrientes de fuga). El modo
Sleep nunca debe ser invocado mientras el módulo USB esté operando y esté conectado. La única
excepción se da cuando el microcontrolador ha emitido un comando “Suspend” sobre el USB. Una vez que
el módulo ha suspendido la operación y se ha desplazado hacia un estado de bajo consumo, el
microcontrolador puede ser puesto sin peligro en modo Sleep. Activando cualquiera de los periféricos que
posee el microcontrolador durante el modo Sleep hará incrementar el consumo de corriente en dicho modo.
EL INTRC es requerido para dar soporte a la operación del Watch Dog Timer o WDT.
El oscilador Timer1 oscillator puede ser utilizado para hacer funcionar un Reloj de Tiempo
Real (Real-Time Clock).
Otras funciones del microcontrolador pueden funcionar sin requerir una fuente de reloj (Por
ejemplo: MSSP slave, PSP, INTn pins etc).
Los periféricos que pueden agregar significante consumo de corriente son enumerados en
la Sección 28.2 (Peripherals that may add significant current consumption are listed in Section 28.2 “DC
Characteristics: Power-Down and Supply Current”).
2.6 Power-up Delays
Los delays durante el encendido del microcontrolador son controlados por 2 timers. De esta
manera no se requiere el uso de un reset externo para la mayoría de las aplicaciones, ahorrando el uso de
componentes externos.
Los delays aseguran que el microcontrolador se mantenga en estado de reset hasta que la
fuente de alimentación del dispositivo es estable bajo circunstancias normales y el reloj primario se haya
establizado y esté funcionando.
Para información adicional de los delays de encendido (power-up delays), ver la sección 4.5
(Section 4.5 “Device Reset Timers”).
El primer timer es el Power-up Timer (PWRT), que provee un delay fijo durante el encendido
(parameter 33,Table 28-12). El timer se activa borrando (= 0) el bit de configuración de PWRTEN.
El segundo timer es el Oscillator Start-up Timer (OST), el cual se ha concebido para
mantener el chip en estado de Reset hasta que el oscilador a cristal sea estable (modos XT y HS). El OST
cuenta 1024 ciclos de reloj antes de permitirle al oscilador que haga de fuente de reloj para el
microcontrolador.
Cuando se selecciona el modo de oscilador HSPLL el microcontrolador es mantenido en
estado de reset por un período adicional de 2 ms luego del delay del HS OST delay, así el PLL puede
generar correctamente los 96khz fijos según la frecuencia de entrada.
Hay un retraso de intervalo TCSD CPU Start-up Time (parameter 38, Table 28-12), que
sigue al Power On Reset (POR), para permitirle al microcontrolador que esté listo para ejecutar
instrucciones. Este delay comienza junto con cualquiera de los otros delays. Esta puede ser la única demora
que se produce cuando alguno de los modo CE o de los modos de oscilador interno se utilizan como fuente
primaria de reloj.

Más contenido relacionado

La actualidad más candente

Sistema de control para llenado de tanques con microcontrolador pic
Sistema de control para llenado de tanques con microcontrolador picSistema de control para llenado de tanques con microcontrolador pic
Sistema de control para llenado de tanques con microcontrolador picRoberto Di Giacomo
 
Electronica polarizacion del fet
Electronica  polarizacion del fetElectronica  polarizacion del fet
Electronica polarizacion del fetVelmuz Buzz
 
Transistores BJT y JFET. Circuitos de polarización.
Transistores BJT y JFET. Circuitos de polarización. Transistores BJT y JFET. Circuitos de polarización.
Transistores BJT y JFET. Circuitos de polarización. J Luis Salguero Fioratti
 
Fuente regulable de voltaje
Fuente regulable de voltajeFuente regulable de voltaje
Fuente regulable de voltajeWiwi Hdez
 
Capacidad de un canal
Capacidad de un canalCapacidad de un canal
Capacidad de un canalarquitectura5
 
Modelos equivalentes de pequeña señal de los transistores fet
Modelos equivalentes de pequeña señal de los transistores fetModelos equivalentes de pequeña señal de los transistores fet
Modelos equivalentes de pequeña señal de los transistores fetArmando Bautista
 
Amplificadores de potencia
Amplificadores de potenciaAmplificadores de potencia
Amplificadores de potenciaTensor
 
CAPACIDAD DE CANAL DE COMUNICACIÓN DE DATOS
CAPACIDAD DE CANAL DE COMUNICACIÓN DE DATOSCAPACIDAD DE CANAL DE COMUNICACIÓN DE DATOS
CAPACIDAD DE CANAL DE COMUNICACIÓN DE DATOSStudent A
 
TRANSFORMADA DE LAPLACE PARA CIRCUITOS RLC
TRANSFORMADA  DE LAPLACE PARA CIRCUITOS RLCTRANSFORMADA  DE LAPLACE PARA CIRCUITOS RLC
TRANSFORMADA DE LAPLACE PARA CIRCUITOS RLCJOe Torres Palomino
 
Ejercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadoresEjercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadoresBertha Vega
 
Sumador de 4 bits
Sumador de 4 bitsSumador de 4 bits
Sumador de 4 bitsAbril Bello
 
codificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolarcodificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolarthejp
 

La actualidad más candente (20)

TTL-CMOS
TTL-CMOSTTL-CMOS
TTL-CMOS
 
Sistema de control para llenado de tanques con microcontrolador pic
Sistema de control para llenado de tanques con microcontrolador picSistema de control para llenado de tanques con microcontrolador pic
Sistema de control para llenado de tanques con microcontrolador pic
 
Amplificadores operacionales
Amplificadores operacionalesAmplificadores operacionales
Amplificadores operacionales
 
Electronica polarizacion del fet
Electronica  polarizacion del fetElectronica  polarizacion del fet
Electronica polarizacion del fet
 
Transistores BJT y JFET. Circuitos de polarización.
Transistores BJT y JFET. Circuitos de polarización. Transistores BJT y JFET. Circuitos de polarización.
Transistores BJT y JFET. Circuitos de polarización.
 
Sumador\Restador
Sumador\RestadorSumador\Restador
Sumador\Restador
 
Fuente regulable de voltaje
Fuente regulable de voltajeFuente regulable de voltaje
Fuente regulable de voltaje
 
Amplificadores Multietapa
Amplificadores MultietapaAmplificadores Multietapa
Amplificadores Multietapa
 
Practica0,1,2,3,4
Practica0,1,2,3,4Practica0,1,2,3,4
Practica0,1,2,3,4
 
El diodo como sujetador
El diodo como sujetadorEl diodo como sujetador
El diodo como sujetador
 
Capacidad de un canal
Capacidad de un canalCapacidad de un canal
Capacidad de un canal
 
Modelos equivalentes de pequeña señal de los transistores fet
Modelos equivalentes de pequeña señal de los transistores fetModelos equivalentes de pequeña señal de los transistores fet
Modelos equivalentes de pequeña señal de los transistores fet
 
Amplificadores de potencia
Amplificadores de potenciaAmplificadores de potencia
Amplificadores de potencia
 
Registro status PIC16F84A
Registro status PIC16F84ARegistro status PIC16F84A
Registro status PIC16F84A
 
CAPACIDAD DE CANAL DE COMUNICACIÓN DE DATOS
CAPACIDAD DE CANAL DE COMUNICACIÓN DE DATOSCAPACIDAD DE CANAL DE COMUNICACIÓN DE DATOS
CAPACIDAD DE CANAL DE COMUNICACIÓN DE DATOS
 
Circuito sujetador
Circuito sujetadorCircuito sujetador
Circuito sujetador
 
TRANSFORMADA DE LAPLACE PARA CIRCUITOS RLC
TRANSFORMADA  DE LAPLACE PARA CIRCUITOS RLCTRANSFORMADA  DE LAPLACE PARA CIRCUITOS RLC
TRANSFORMADA DE LAPLACE PARA CIRCUITOS RLC
 
Ejercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadoresEjercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadores
 
Sumador de 4 bits
Sumador de 4 bitsSumador de 4 bits
Sumador de 4 bits
 
codificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolarcodificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolar
 

Similar a Guía de osciladores PIC18F

101172 pic16f877-en-espanol1
101172 pic16f877-en-espanol1101172 pic16f877-en-espanol1
101172 pic16f877-en-espanol1grana2810
 
Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2Alejandro Garcia
 
Clase 8-intro-a-los-microcontroladores
Clase 8-intro-a-los-microcontroladoresClase 8-intro-a-los-microcontroladores
Clase 8-intro-a-los-microcontroladoresGabriel Jhonatan
 
Microprosedador
MicroprosedadorMicroprosedador
Microprosedadordy vc
 
Ud1 4 caracteristicas_pic16_f84a
Ud1 4 caracteristicas_pic16_f84aUd1 4 caracteristicas_pic16_f84a
Ud1 4 caracteristicas_pic16_f84aarnadillo
 
Implementacion del 16F84A
Implementacion del 16F84AImplementacion del 16F84A
Implementacion del 16F84AMicroPart
 
Microcontroladores pic14f84a
Microcontroladores pic14f84aMicrocontroladores pic14f84a
Microcontroladores pic14f84adanqueas
 
A tmega164p guide datashet
A tmega164p guide datashetA tmega164p guide datashet
A tmega164p guide datashetHamil FC
 
Ud1 3 microcontrolador_pic
Ud1 3 microcontrolador_picUd1 3 microcontrolador_pic
Ud1 3 microcontrolador_picarnadillo
 
Introducción pic 16 f 84 universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercanteIntroducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84 universidad de la marina mercanteDaniel Remondegui
 
Microprocesadores
MicroprocesadoresMicroprocesadores
Microprocesadoressaeb2911
 
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886Victor Asanza
 
Introduccion al DSC dsPIC30F4013.pptx
Introduccion al DSC dsPIC30F4013.pptxIntroduccion al DSC dsPIC30F4013.pptx
Introduccion al DSC dsPIC30F4013.pptxBrayamMiranda3
 

Similar a Guía de osciladores PIC18F (20)

50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol
 
101172 pic16f877-en-espanol1
101172 pic16f877-en-espanol1101172 pic16f877-en-espanol1
101172 pic16f877-en-espanol1
 
Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2
 
Clase 8-intro-a-los-microcontroladores
Clase 8-intro-a-los-microcontroladoresClase 8-intro-a-los-microcontroladores
Clase 8-intro-a-los-microcontroladores
 
Programando pi cs_ccs_08
Programando pi cs_ccs_08Programando pi cs_ccs_08
Programando pi cs_ccs_08
 
Microprosedador
MicroprosedadorMicroprosedador
Microprosedador
 
Ud1 4 caracteristicas_pic16_f84a
Ud1 4 caracteristicas_pic16_f84aUd1 4 caracteristicas_pic16_f84a
Ud1 4 caracteristicas_pic16_f84a
 
Implementacion del 16F84A
Implementacion del 16F84AImplementacion del 16F84A
Implementacion del 16F84A
 
Microcontroladores pic14f84a
Microcontroladores pic14f84aMicrocontroladores pic14f84a
Microcontroladores pic14f84a
 
El PIC16F84
El PIC16F84El PIC16F84
El PIC16F84
 
NCO
NCONCO
NCO
 
At89c52
At89c52At89c52
At89c52
 
A tmega164p guide datashet
A tmega164p guide datashetA tmega164p guide datashet
A tmega164p guide datashet
 
Pic16 f877
Pic16 f877Pic16 f877
Pic16 f877
 
Ud1 3 microcontrolador_pic
Ud1 3 microcontrolador_picUd1 3 microcontrolador_pic
Ud1 3 microcontrolador_pic
 
Introducción pic 16 f 84 universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercanteIntroducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84 universidad de la marina mercante
 
Microprocesadores
MicroprocesadoresMicroprocesadores
Microprocesadores
 
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
 
Introduccion al DSC dsPIC30F4013.pptx
Introduccion al DSC dsPIC30F4013.pptxIntroduccion al DSC dsPIC30F4013.pptx
Introduccion al DSC dsPIC30F4013.pptx
 
Manual de la computadora
Manual de la computadoraManual de la computadora
Manual de la computadora
 

Último

CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCarlos Delgado
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxPaolaVillalba13
 
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...humberto espejo
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaANDECE
 
Trabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruanaTrabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruana5extraviado
 
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdfRicardoRomeroUrbano
 
Biología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxBiología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxluisvalero46
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidasNelsonQuispeQuispitu
 
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidasSOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidasLeonardoMendozaDvila
 
Físicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y VectoresFísicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y VectoresSegundo Silva Maguiña
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)ssuser6958b11
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadANDECE
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfErikNivor
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxLuisvila35
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.pptVitobailon
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosRevista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosJeanCarlosLorenzo1
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 

Último (20)

CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric Project
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptx
 
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de Almería
 
Trabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruanaTrabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruana
 
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
 
Biología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxBiología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptx
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidas
 
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidasSOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
 
Físicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y VectoresFísicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y Vectores
 
MATPEL COMPLETO DESDE NIVEL I AL III.pdf
MATPEL COMPLETO DESDE NIVEL I AL III.pdfMATPEL COMPLETO DESDE NIVEL I AL III.pdf
MATPEL COMPLETO DESDE NIVEL I AL III.pdf
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidad
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.ppt
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosRevista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 

Guía de osciladores PIC18F

  • 1. GUIA DE OSCILADORES Estimado amigo lector: El presente texto nació con el afán de poder programar pics con seguridad, sabiendo de antemano que es lo que estamos haciendo, entendiendo que es cada bit de configuración, pudiendo así interpretar cada uno de los fuses, sin tener que limitarnos a copiar y pegar un ejemplo descargado de la web y hacerlo funcionar por arte de magia o de casualidad. Si bien la mayor parte del texto es básicamente la traducción del inglés al español del capítulo 2 del datasheet de los PIC18F2455/2550/4455/4550 confeccionado por la empresa Microchip en el cual se tratan las distintas configuraciones de osciladores para dichos microcontroladores, me he esforzado para que sea más fácil de comprender el tema en cuestión ampliando las tablas, figuras, y el texto en si y agregando luego de algunos párrafos las figuras que están disgregadas por todo el datasheet que va citando el texto para poder tenerlas más a mano, como así también ejemplos exhibiendo las configuraciones en C18. Por lo que la traducción no ha sido respetada al 100%, tanto en el texto como en el contenido. Vale aclarar que es sólo una guía de estudio y así debe ser interpretada, pudiendo contener muchos errores. No me hago responsable por el uso del presente texto. Todo el contenido ha sido exclusivamente sacado de sitios públicos de Internet..- Mi mayor deseo es que sirva para aclararle los conceptos a quien lo necesite. .. Saludos cordiales Jukinch
  • 2. 2.0 CONFIGURACIONES DE OSCILADORES 2.1 Resumen: La familia de los PIC18F2455/2550/4455/4550 incorporó un sistema diferente de oscilador frente a sus antecesores PIC18F. Al haberles agregado el módulo USB, el cual tiene como único requerimiento una fuente estable de reloj, se hizo necesario proveer a estos nuevos microcontroladores de una fuente separada de reloj, que fuese estable, y que cumpla con las especificaciones técnicas del USB, para que puedan trabajar tanto en baja como en alta velocidad. Para cumplir con estos requisitos los PIC18F2455/2550/4455/4550 incluyen una nueva rama de fuente de reloj que provee la frecuencia necesaria para operar el módulo USB sea a baja (6 MHz) o alta velocidad (48 MHz). Desde que el módulo USB toma la frecuencia de trabajo de una fuente primaria de reloj, para ello se les ha agregado un sistema de prescalers y postscalers, para poder conseguir un amplio rango de frecuencias de oscilador. Otras características de la estructura de los osciladores de la familia de los PIC18, como el bloque de reloj interno, o la conmutación de fuentes de reloj (clock switching), siguen siendo las mismas. Mas abajo en la Figura 2.1 se exhibe un esquema de la estructura del oscilador. Básicamente hay tres fuentes de reloj para esta familia de dispositivos: Oscilador Primario Oscilador Secundario Bloque de Oscilador Interno 2.1.1 CONTROL DEL OSCILADOR El funcionamiento del oscilador de los PIC18F2455/2550/4455/4550 es controlado por: 2 Registros de Configuración. y 2 Registros de Control. Los Registros de Configuración, CONFIG1L y CONFIG1H, seleccionan el modo de oscilador y las opciones del USB prescaler/postscaler. Como Bits de Configuración, estos parámetros son seteados en el momento en que la memoria de programa del pic es grabada con un programador y quedan guardados hasta que el pic es reprogramado. Registros de Control: OSCCON y OSCTUNE El registro OSCCON (register 2-2) permite seleccionar el modo activo de oscilador. Dicho registro es usado ante todo para controlar el cambio de fuente de reloj en los modos de alimentación controlada (son 7 modos, los cuales proveen una gran variedad de opciones de alimentación del PIC para conservar la energía). Este supuesto será tratado más adelante (ver datasheet Sección 2.4.1 “Oscillator Control Register”.) El registro OSCTUNE (register 2-1) es utilizado para hacer ajustes de precisión o para “afinar” la fuente de frecuencia INTRC, como también para seleccionar la fuente de baja frecuencia para manejar características
  • 3. especiales. Su uso será descripto más adelante (ver sección 2.2.5.2 “OSCTUNE Register”).
  • 4.
  • 5.
  • 6.
  • 7. 2.2 TIPOS DE OSCILADORES Los PIC18F2455/2550/4455/4550 cuentan con tres tipos de osciladores, uno primario (usa cristal o señal externa), otro secundario (utiliza el timer1), y un bloque de oscilador interno (utiliza el oscilador interno o el INTRC), pudiendo seleccionar 12 modos de configuración de fuente de oscilador. 4 de estas configuraciones usan dos tipos de osciladores al mismo tiempo (INTHS, INTXT, INTIO e INTCKO (son los modos 9 a 12 de la siguiente tabla). Mediante los bits de configuración FOSC3:FOSC0 del Registro de Configuración CONFIG1H se puede seleccionar uno de estos 12 modos. En C18 se utiliza la directiva #pragma config FOSC como se ejemplifica en la siguiente taba: N° Fuente de reloj NOMBRE TIPO DE OSCILADOR/ES CONFIGURACIÓN EN C18 1 Cristal o Resonador XT Crystal/Resonator #pragma config FOSC = XT_XT 2 Cristal o Resonador XTPLL Crystal/Resonator con PLL activado #pragma config FOSC = XTPLL_XT 3 Cristal o Resonador HS High-Speed Crystal/Resonator #pragma config FOSC = HS 4 Cristal o Resonador HSPLL High-Speed Crystal/Resonator con PLL activado #pragma config FOSC = HSPLL_HS 5 Señal externa EC External Clock como fuente de clock para la CPU con salida de Frecuencia/4 en RA6 #pragma config FOSC = EC_EC 6 Señal externa ECIO External Clock como fuente de clock para la CPU con pin de Input/Output en RA6 #pragma config FOSC = ECIO_EC 7 Señal externa ECPLL External Clock con PLL activado con salida de Frecuencia/4 en RA6 #pragma config FOSC = ECPLL_EC 8 Señal externa ECPIO External Clock con PLL activado, con pin de Input/Output en RA6 #pragma config FOSC = ECPLLIO_EC 9 Oscilador interno y Cristal INTHS Internal Oscillator como fuente de clock para la CPU, oscilador HS como fuente de oscilador para el módulo USB #pragma config FOSC = INTOSC_HS 10 Oscilador interno y Cristal INTXT Internal Oscillator como fuente de clock para la CPU, oscilador XT como fuente de oscilador para el módulo USB #pragma config FOSC = INTOSC_XT 11 Oscilador interno y Señal externa INTIO Internal Oscillator como fuente de clock para la CPU, señal externa EC como fuente de oscilador para el módulo USB, con pin de Input/Output digital en el pin RA6 #pragma config FOSC = INTOSCIO_EC 12 Oscilador interno y Señal externa INTCKO Internal Oscillator como fuente de clock para la CPU, señal externa EC como fuente de oscilador para el módulo USB, con salida de frecuencia dividida por 4 (FOSC/4) en RA6 #pragma config FOSC = INTOSC_EC Los modos XT, HS, EC, y ECIO pueden utilizar el Oscillator Postcaler (CPUDIV) para dividir la frecuencia de entrada del Oscilador Primario, por 1, por 2, por 3 o por 4. Los modos INTHS, INTXT, INTIO, e INTCKO pueden utilizar el INTOSC Postcaler para dividir la frecuencia de salida de la fuente del Oscilador interno de 8mhz, para lograr una frecuencia de 8Mhz (sin dividir), de 4Mhz, de 2Mhz, de 1Mhz, de 500Khz, de 250 Khz, de 125 Khz, o de 31 Khz, o directamente la de 31Khz si se utiliza como fuente el INTRC. (Los ejemplos en c18 se citan en páginas subsiguientes)
  • 8. 2.2.1 MODOS DE OSCILADORES Y MODULO USB Un diferente enfoque es necesario efectuar con estos nuevos PICs con módulo USB. En los PICs antecesores una única fuente de oscilador alimentaba el núcleo de microcontrolador (CPU) y los periféricos. La fuente usual de oscilador era la primaria, la secundaria o la interna. Con los PICS 18F2455/2550/4455/4550 el oscilador primario forma parte del módulo USB y por ello el módulo USB no puede ser asociado con ninguna de las otras fuentes de reloj. Así el módulo USB debe recibir la señal de reloj únicamente desde la fuente primaria de oscilador. Sin embargo el núcleo del microcontrolador (CPU) y los periféricos también pueden recibir señal de reloj desde la fuente de reloj primaria como también desde la fuente secundaria o del oscilador interno al igual que en los PICs antecesores. Cuando el módulo USB es activado para conectividad USB, necesita una fuente de reloj interna de 6 MHz o 48 MHz (esto a causa del requerimiento del estandard del protocolo USB) dependiendo del modo de velocidad que se use, sea Baja-Velocidad o Alta-Velocidad. Afortunadamente el microcontrolador y los periféricos no requieren que se ejecuten a la misma velocidad que el módulo USB cuando se utiliza el oscilador primario. Hay numerosas opciones de configuración para brindarle la frecuencia necesaria al módulo USB y a su vez proveer un amplio rango de diferentes frecuencias desde el oscilador primario al núcleo del microncontrolador y a los periféricos. (el concepto será ampliado más abajo en la sección 2.3 “AJUSTES DEL OSCILADOR PARA EL USO DEL MÓDULO USB”). OSCILADOR PRIMARIO 2.2.2 OSCILADOR a CRISTAL / RESONADOR CERAMICO En los modos de oscilador HS, HSPLL, XT y XTPLL un cristal o resonador cerámico se conecta a los pines del PIC OSC1 (PIN 13 en el 18F4550 de 40pines) y OSC2 (PIN 14 en el 18F4550 de 40pines) para establecer oscilación.
  • 9. Esta configuración es la que se utilizará en la mayoría de los proyectos iniciales en los que no sea utilizado el módulo USB. Normalmente se usará el modo de oscilador n°1 XT para cristales de 4 mhz y la configuración n°3 HS para cristales de más de 4mhz. De acuerdo al cristal que se elija se deberán conectar en paralelo diferentes capacitores: En modo XT con cristal de 4.0 MHz 33 pF 33 pF En modo HS con cristal de 8.0 MHz 27 pF 27 pF En modo HS con cristal de 16.0MHz 22 pF 22 pF En modo HS con cristal de 20.0MHz 15 pF 15 pF Mediante el uso de un postscaler interno se puede reducir la frecuencia de reloj que entrega el cristal para hacer funcionar al CPU a diferentes velocidades dividiendo dicha frecuencia. Para ello se debe utilizar uno de los modos de oscilador que no utilice el PLL. La división de la frecuencia estará determinada por los bits de configuración de CPUDIV. Pudiendo seleccionar mediante el uso del Oscillator Postcaler (CPUDIV) la frecuencia directa de reloj del oscilador o 1/2, o 1/3 o 1/4 de dicha frecuencia,conforme se detalla en la siguiente tabla. Frecuencia del Oscilador Divisor CPUDIV1:CPUDIV0 Oscillator Postcaler Configuración en c18 para los modos: FOSC = XT_XT o FOSC = HS Frecuencia de trabajo del CPU 4 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 4 Mhz 4 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 2 Mhz 4 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 1,33 Mhz 4 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 1 Mhz 8 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 8 Mhz 8 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 4 Mhz 8 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 2,67 Mhz 8 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 2 Mhz 12 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 12 Mhz 12 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 6 Mhz 12 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 4 Mhz 12 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 3 Mhz
  • 10. 16 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 16 Mhz 16 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 8 Mhz 16 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 5,33 Mhz 16 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 4 Mhz 20 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 20 Mhz 20 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 10 Mhz 20 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 6,67 Mhz 20 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 5 Mhz 24 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 24 Mhz 24 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 12 Mhz 24 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 8 Mhz 24 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 6 Mhz 40 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 40 Mhz 40 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 20 Mhz 40 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 13,33 Mhz 40 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 10 Mhz 48 Mhz Sin división #pragma config CPUDIV = OSC1_PLL2 48 Mhz 48 Mhz / 2 #pragma config CPUDIV = OSC2_PLL3 24 Mhz 48 Mhz / 3 #pragma config CPUDIV = OSC3_PLL4 16 Mhz 48 Mhz / 4 #pragma config CPUDIV = OSC4_PLL6 12 Mhz En el modo HS también se puede usar ENTRADA EXTERNA DE FRECUENCIA DE RELOJ (HS OSC CONFIGURATION). En este caso se deja desconectado el pin OSC2/CLKO. En la siguiente figura se indica en amarillo el recorrido que hace la señal desde que sale del oscilador primario, pasando por el Oscillator Postcaler CPUDIV que divide la frecuencia, hasta llegar al núcleo del microcontrolador (CPU CLock).
  • 11. 2.2.3 ENTRADA DE CLOCK EXTERNO En los modos de oscilador EC, ECIO, ECPLL y ECPIO se requiere una fuente de reloj externa para ser conectada al pin OSC1 (PIN 13 en el 18F4550 de 40pines). No se requiere tiempo de espera para que el oscilador arranque luego de un Power-on Reset o luego de que el microcontrolador salga del modo Sleep. En los modos de oscilador EC y ECPLL, la frecuencia externa que ingresa al microcontrolador está disponible para el uso en el pin OSC2 (PIN 14 en el 18F4550 de 40pines) pero dividida por 4. Esta señal puede ser usada para testeos, para sincronismo, etc.
  • 12. Los modos de oscilador ECIO y ECPIO funcionan como los modos EC y ECPLL, excepto en cuanto que el pin OSC2 (PIN 14 en el 18F4550 de 40pines) se convierte en un pin l/O adicional de propósito general, más precisamente, se convierte en el bit 6 del PORTA (RA6). El postscaler interno (Oscillator Postcaler CPUDIV) para reducir la frecuencia de clock de los modos XT y HS también está disponible para los modos EC y ECIO. 2.2.4 MULTIPLICADOR DE FRECUENCIA PLL Los PIC18F2455/2550/4255/4550 incluyen un circuito PLL (Phase Locked Loop). Este ha sido previsto específicamente para aplicaciones USB con osciladores de baja velocidad y también para ser usado como fuente de reloj para el CPU del microcontrolador. El PLL se activa en los modos de osciladores HSPLL, XTPLL, ECPLL y ECPIO. El PLL ha sido diseñado para producir una frecuencia de reloj fija de referencia de 96 MHz desde una entrada fija de 4 Mhz. La salida de 96Mhz puede ser dividida y utilizada por ambos, tanto por el módulo interno USB como por el CPU o núcleo del microcontrolador para correr los programas. Y atento que el PLL tiene una entrada de 4mhz y una salida de 96mhz, ambas de frecuencia fija, hay ocho opciones de prescaling para que la frecuencia del oscilador primario pueda alcanzar la entrada del PLL. Dividiendo la frecuencia que entrega el oscilador /1, /2, /3, /4, /5, /6, /10 / 12. mediante el uso del PLL Prescaler. Frecuencia del Oscilador divisor PLL Poscaler Configuración en C Frecuencia de entrada al PLL 4 Mhz / 1 #pragma config PLLDIV = 1 = 4 Mhz 8 Mhz / 2 #pragma config PLLDIV = 2 = 4 Mhz 12 Mhz / 3 #pragma config PLLDIV = 3 = 4 Mhz 16 Mhz / 4 #pragma config PLLDIV = 4 = 4 Mhz 20 Mhz / 5 #pragma config PLLDIV = 5 = 4 Mhz 24 Mhz / 6 #pragma config PLLDIV = 6 = 4 Mhz 40 Mhz / 10 #pragma config PLLDIV = 10 = 4 Mhz 48 Mhz / 12 #pragma config PLLDIV = 12 = 4 Mhz
  • 13. También hay una opción separada de postcaler para derivar frecuencia de reloj desde el PLL al CPU del microcontrolador, mediante el uso del PLL-Postcaler CPUDIV. Esto permite que el módulo USB y la CPU del microcontrolador usen una misma fuente de entrada de oscilador y operar a diferentes velocidades de frecuencias de reloj. Es decir, el módulo USB a una velocidad y el CPU a otra. Por ejemplo con un cristal de 4Mhz podemos hacer funcionar el módulo USB a 48Mhz y ejecutar nuestros programas a 24Mhz. En contraste con el Oscillator Postcaler CPUDIV que se utiliza para los modos de oscilador XT, HS y EC, las opciones disponibles de división de frecuencia del PLL-Postcaler CPUDIV son de 1/2, 1/3, 1/4 y 1/6 de la frecuencia de salida del PLL. Salida del PLL Divisor PLLPostcaler CPUDIV Configuración en c18 para modos que usan el PLL Frecuencia de trabajo para el CPU extraida del PLL 96 Mhz / 2 #pragma config CPUDIV = OSC1_PLL2 = 48 Mhz 96 Mhz / 3 #pragma config CPUDIV = OSC2_PLL3 = 32 Mhz 96 Mhz / 4 #pragma config CPUDIV = OSC3_PLL4 = 24 Mhz 96 Mhz / 6 #pragma config CPUDIV = OSC4_PLL6 = 16 Mhz Los modos de oscilador HSPLL, ECPLL y ECPIO hacen uso del modo de oscilador HS para frecuencias de hasta 48 MHz. Para ello el PLLprescaler divide la frecuencia de entrada del oscilador hasta por 12 para producir los 4MHz que se necesitan para hacer funcionar el PLL. El modo XTPLL sólo puede usar una entrada de frecuencia de 4 MHz la cual hará funcionar directamente al PLL, sin hacer divisiones.
  • 14. En la siguiente figura se indica en amarillo el recorrido que hace la señal desde que sale del oscilador primario, pasando por el PLL Prescaler que divide la frecuencia para lograr los 4Mhz que requiere el PLL para generar 96Mhz. Luego la señal de 96Mhz generada por el PLL tomará 2 caminos. Una rama seguirá hacia el módulo USB, siendo dividida por 2 para alcanzar 48Mhz necesarios para el USB Clock y la otra rama se dirigirá hacia el PLL Postcaler que nos permite elegir la frecuencia de trabajo del CPU hasta llegar al núcleo del microcontrolador (CPU Clock). 2.2.5 BLOQUE DEL OSCILADOR INTERNO La familia de PIC18F2455/PIC18F2550/PIC18F4455/PIC18F4550 tiene un oscilador interno que genera dos señales de reloj diferentes (fuente de 8Mhz INTOSC y fuente de 31Khz INTRC); cualquiera de las dos se puede utilizar como fuente de frecuencia de reloj del microcontrolador. Si el módulo USB no se va a utilizar se puede ahorrar el uso del oscilador externo y utilizar las fuentes de reloj internas para así conseguir liberar los pines OSC1 (PIN 13 en el 18F4550 de 40pines) y/o OSC2 (PIN 14 en el 18F4550 de 40pines)para usarlos para otras aplicaciones. La salida principal de frecuencia del oscilador interno es una fuente de reloj de 8MHz llamada INTOSC que se puede utilizar como fuente de señal de reloj directa para el CPU del microcontrolador. Esta señal de 8Mhz gobierna el INTOSC Postscaler, el cual puede proporcionar un rango de frecuencias de 31kHz a 4MHz. La salida INTOSC se activará cuando se seleccione una frecuencia de reloj de 125kHz a
  • 15. 8MHz. La otra frecuencia que genera el oscilador interno es la llamada INTRC que brinda una salida nominal de 31kHz. INTRC estará activa si se la selecciona como fuente de reloj para el CPU del microcontrolador. Además también se activará automáticamente cuando alguno de los siguientes módulos esté activo: • Temporizador de encendido (Power-Up Timer) • Monitor de reloj de seguridad (Fail-Safe Clock Monitor) • Temporizador perro guardián (Watchdog Timer) • Dos velocidades de inicio (Two speed Start-Up) La fuente de frecuencia de reloj (Frecuencia INTOSC directa, INTRC directa, o INTOSC con postcaler) se elige configurando el bit IRCF del registro OSCCON.
  • 16. 2.2.5.1 MODOS DE CONFIGURACIÓN DEL OSCILADOR INTERNO Cuando se utilice el módulo USB y el oscilador interno se active como fuente de frecuencia de reloj para el CPU del microcontrolador, al menos alguno de los otros modos (Señal de reloj externa o Cristal/Resonador externo) deberá utilizarse como fuente de frecuencia de reloj para brindarle señal al USB Clock. La elección de la fuente de reloj para dicho módulo USB estará determinada por el modo de oscilador interno seleccionado. Hay disponibles 4 modos de configuración del oscilador interno los cuales se pueden seleccionar mediante las directivas de preprocesado #pragma o mediante la modificación de los registros de configuración config1L y config1H. : 4 modos de configuración del OSCILADOR INTERNO DESCRIPCION Configuración en c18 mediante directivas pragma config 9. INTHS La fuente de frecuencia de reloj para el módulo USB es provista por el oscilador en modo HS #pragma config FOSC = INTOSC_HS 10. INTXT La fuente de frecuencia de reloj para el módulo USB es provista por el oscilador en modo XT #pragma config FOSC = INTOSC_XT 11. INTCKO La fuente de frecuencia de reloj para el módulo USB es provista por una señal en la entrada externa en OSC1/CLKI. En el pin OSC2/CLKO tendremos como salida la frecuencia de entrada dividida por 4 FOSC/4. #pragma config FOSC = INTOSC_EC 12. INTIO La fuente de frecuencia de reloj para el módulo USB es provista por una señal en la entrada externa en OSC1/CLKI. El pin OSC2/CLKO funcionará como un pin I/O digital I(RA6). Este es el único de los 4 modos de oscilador interno que libera un pin del puerto A. (OSC2/CLKO/RA6) para uso de #pragma config FOSC = INTOSCIO_EC
  • 17. I/O. Una vez elegido el modo de configuración del oscilador interno con las directivas pragma de la tabla antes citada, desde el código principal del programa se puede cambiar la frecuencia con el INTOSC Postcaler modfiicando los bits del registro OSCCON (Registro 2-2 del datasheet pág. 32) Puntualmente los bits IRCF2, IRCF1 e IRCF0. IRCF2:IRCF0: Internal Oscillator Frequency Select bits (Bits de selección de Frecuencia del Oscilador Interno ) 111 = 8 MHz (INTOSC drives clock directly) 110 = 4 MHz 101 = 2 MHz 100 = 1 Mhz (3) this is the default. Valor por defecto. 011 = 500 kHz 010 = 250 kHz 001 = 125 kHz 000 = 31 kHz (from either INTOSC/256 or INTRC directly) PASOS A SEGUIR PARA CONFIGURAR EL OSCILADOR INTERNO // en los bits de configuración elegir el modo de oscilador #pragma config FOSC = INTOSC_EC // ejemplo // dentro del código Setear la frecuencia de trabajo IRCF2 = 1; IRCF1 = 1; IRCF0 = 0; // ejemplo a 4mhz /* programa: prueba oscilador interno pic: 18f4550 crystal: NO CPU: 1Mhz (valor por defecto) CONEXIONES: 1 led en port D1 con una resistencia en serie de 470ohms */ /*Includes globales*/ #include <p18f4550.h> #include <delays.h> /*Includes locales*/ /* Bits de configuración*/
  • 18. #pragma config FOSC = INTOSCIO_EC // Oscilador interno, uso de pin RA6 activado, El USB usa Clock Externo. #pragma config WDT = OFF //desactivamos watchdog timer #pragma config PWRT = ON // activamos power up timer /*declaración de funciones*/ ////////////////////////////////////////////////////////////////////////////////////////////////// // Programa Principal // ////////////////////////////////////////////////////////////////////////////////////////////////// void main() { ADCON0 = 0X00,ADCON1 = 0X0F,CMCON = 0X07; //puerto A con todos los pines digitales TRISA = 0X00; // puertos A B y C como salida. Recordar Tip: el 0 es una o de ouput y el 1 una I de input!!! TRISB = 0X00; TRISC = 0X00; LATA = 0X00; // ponemos los puertos en cero LATB = 0X00; LATC = 0X00; TRISDbits.TRISD0 = 0; // Seteamps el pin D1 como salida para el LED TRISDbits.TRISD1 = 0; // Seteamps el pin D1 como salida para el LED LATDbits.LATD0 = 1; // Encendemos el led0 LATDbits.LATD1 = 0; // Apagamos el led1 while(1) { LATDbits.LATD0 = ~LATDbits.LATD0; // Intercambiamos el estado del pin del led (Toggle LED) LATDbits.LATD1 = ~LATDbits.LATD1; // Intercambiamos el estado del pin del led (Toggle LED) Delay10KTCYx(25); //Delay de 250K ciclos (1 segundo a 1MHz. Ya que cada instrucción toma 4 ciclos) } } 2.2.5.2 REGISTRO OSCTUNE La salida del oscilador interno viene calibrada de fábrica pero puede ser reajustada por el usuario en sus aplicaciones escribiendo en el registro OSCTUNE. La sensibilidad de la afinación es constante durante todo el rango de ajuste. Cuando el registro OSCTUNE es modificado la frecuencia INTOSC e INTRC comenzarán a desplazarse hasta llegar a la nueva frecuencia. La frecuencia de reloj INTRC alcanzará su nueva frecuencia en 8 ciclos de reloj (aproximadamente 8*32us=256us). La frecuencia de reloj INTOSC se estabilizará aproximadamente en un plazo de hasta 1ms. La ejecución del programa continuará efectuándose durante el tiempo en que es reajustada la frecuencia. No existe indicador de que la frecuencia ya haya sido reajustada. El registro OSCTUNE también contiene el bit INTSRC. Este bit permite al usuario seleccionar que fuente de oscilador interno proveerá de señal de reloj cuando la opción de frecuencia de 31khz es seleccionada. Esto se tratará más adelante (section 2.4.1 Oscillator Control Register). 2.2.5.3 FRECUENCIA DE SALIDA DEL OSCILADOR INTERNO y DESFASE El bloque del oscilador interno está calibrado de fábrica para producir en la salida INTOSC una frecuencia de 8MHz. Sin embargo, esta frecuencia se puede desfasar si Vdd o la temperatura cambian,
  • 19. pudiendo en este caso afectar la operación normal del microcontrolador de muchas formas. El oscilador de baja frecuencia INTRC opera independientemente de la fuente INTOSC. Cualquier cambio en INTOSC por tensión o temperatura no tiene porqué reflejarse en INTRC ni viceversa. En la siguiente página se adjunta figura en donde se describe el registro OSCTUNE. 2.2.5.4 COMPENSACION POR DESFASE en INTOSC Es posible ajustar la frecuencia de INTOSC modificando el valor en el registro OSCTUNE. Esto no producirá ningún cambio en la fuente de frecuencia de reloj de INTRC. El ajuste de la fuente de INTOSC requiere saber cuando debe hacerse dicho ajuste, como así también en que dirección debe hacerse (si la frecuencia es baja o es alta), y en algunos casos, cuan grande debe ser el cambio. Por ejemplo: Módulo EUSART: cuando usamos la EUSART en modo Asíncrono, en el caso en que comiencen a generarse errores de framing o a recibirse datos con errores, deberá hacerse un ajuste. Los errores de framing indican que la frecuencia de reloj del dispositivo es muy alta. Para corregir esto se debe reducir la frecuencia de reloj decrementando el valor en OSCTUNE. En el otro extremo, si aparecen errores en los datos, esto nos sugiere que la frecuencia de reloj del dispositivo es muy baja. Para elevar la frecuencia de reloj se deberá incrementar el valor en OSCTUNE. También es posible verificar la velocidad en la que está trabajando el oscilador de dos maneras: a) comparándola con una señal de referencia. Para ello deben utilizarse dos temporizadores: Un timer que fijará su frecuencia de reloj desde la señal que recibe el periférico mientras que el otro fijará su frecuencia de reloj desde una fuente de referencia fija como el oscilador del Timer1. Ambos temporizadores son borrados pero el timer que fija su frecuencia de reloj desde una fuente de referencia fija es el que genera interrupciones. Cuando ocurre una interrupción, se lee el valor del otro timer (el que trabaja con la frecuencia de reloj interna) y luego se borran los dos temporizadores. Si el valor del Timer interno es más grande de lo esperado, entonces significa que el bloque del oscilador interno está funcionando muy rápido. Para ajustarlo hay que decrementar el valor del registro OSCTUNE. b) Utilizando un módulo CCP (Capture, Compare, PWM), y el Timer1 o el Timer3 (los cuales ajustarán su frecuencia de reloj desde el bloque del oscilador interno) y un evento externo con un periodo conocido (por ejemplo, la frecuencia de la corriente alterna, 50 o 60 ciclos por segundo dependiendo el país). El tiempo del primer evento es capturado en los registros CCPRxH:CCPRxL y es guardado para su posterior utilización. Cuando un segundo evento causa una captura, se resta el tiempo del primer evento al tiempo del segundo evento. Como el periodo del evento externo es conocido, la diferencia de tiempo entre los dos eventos se puede calcular. Si el tiempo medido es mucho mayor que el tiempo calculado significa que el bloque del oscilador interno está funcionando muy rápido. Para compensarlo, hay que decrementar el registro OSCTUNE. Si el tiempo medido es
  • 20. mucho menor que el tiempo calculado, significa que el bloque del oscilador interno está funcionando muy lento; para compensarlo se deberá aumentar el registro OSCTUNE. 2.3 AJUSTES DEL OSCILADOR PARA EL USO DEL MÓDULO USB CUANDO el PIC18F4550 es usado para conectividad USB, el módulo USB necesitará una fuente de reloj de 6 MHz o 48 MHz dependiendo el modo de velocidad que se use, sea de Baja-Velocidad o de Alta-Velocidad. Esto requerirá cierta planificación en la selección del oscilador y de la frecuencia de trabajo a utilizar como así también en la programación. ¿Y esto de las frecuencias de 6Mhz y de 48 Mhz por qué? Porque la transferencia de datos en el modo de alta velocidad se trabaja por estandarización del protocolo USB a 12.00Mb/s y en baja velocidad a 1.50Mb/s. Y como un Ciclo Maquina está compuesto por 4 ciclos de reloj, para poder procesar datos a velocidades de 12.00Mb/s o de 1.50Mb/s será necesario que el módulo trabaje a una frecuencia de trabajo que sea 4 veces más rápida para poder ejecutar 1 instrucción por dato (4 ciclos de reloj por instrucción).- Entonces tenemos 12.0 Mhz * 4 = 48 mhz: Full speed data is clocked at 12.00Mb/s Así tenemos 1.5 Mhz * 4 = 6 Mhz: Low speed data is clocked at 1.50Mb/s En la tabla (OPCIONES DE CONFIGURACION DEL OSCILADOR PARA USO DEL MODULO USB) que se adjunta más abajo se exhibirá el amplio rango de configuraciones de osciladores compatibles con la operación del módulo USB. 2.3.1 USB en modo Baja-Velocidad Como la frecuencia de reloj para el modo Baja-Velocidad es derivada directamente del oscilador primario y no del PLL. El PIC 18F4550 toma la señal del cristal y usa el Oscillator Postcaler para dividir dicha señal por un numero (que puede ser /1, /2, /3, /4) alcanzando una frecuencia de 24MHz, los cuales serán divididos nuevamente por 4 para producir los 6Mhz que se requieren como señal de entrada para operar el módulo USB a Baja Velocidad. (ver recorrido resaltado en amarillo en la siguiente figura).
  • 21. Por ello cuando se utilicen como fuente de reloj uno de los siguientes modos del oscilador primario: XT, HS, o EC con o sin PLL y el modo de USB a Baja-Velocidad esté activo, la CPU del microcontrolador solamente podrá usar como frecuencia de trabajo la de 24Mhz, ya que esos 24 Mhz que salen derivados del Oscilator Postcaler hacia el divisor por 4 de la entrada del Módulo USB a baja-velocidad continúan también hacia la CPU del Pic. Esta restricción no se aplica si el microcontrolador toma de fuente de reloj el oscilador secundario o el bloque de oscilador interno. ADVERTENCIA!. lo explicado precedentemente no quiere decir que sólo se pueda usar un cristal de 24Mhz para usar el PIC18f4550 en modo USB a baja velocidad, sino que la frecuencia de entrada del oscilador primario debe cumplir con ciertos requisitos para que sirva como alimentación de frecuencia para el módulo USB en modo baja-velocidad para que al final de todo el recorrido que hace la frecuencia
  • 22. desde que ingresa al oscilador primario hasta que llega a la entrada del Módulo USB se puedan obtener los 6Mhz. Para operar el módulo USB a baja velocidad la frecuencia del oscilador primario deberá ser divisible por 1, o por 2, o por 3 o por 4 y a su vez ser múltiplo de 24, ya que la frecuencia del cristal primero pasará por el Oscillator Postcaler (CPUDIV 1/1, 1/2, 1/3, 1/4) y luego será dividida nuevamente por 4 para entrar al módulo USB a baja-velocidad. Estos requisitos hacen que existan pocas posibilidades de combinaciones de frecuencias de entrada en el modo USB a baja velocidad. Estas restricciones no se aplican si la fuente de reloj del microncontrolador es el oscilador secundario o el bloque de oscilador interno. 2.3.2 EJECUTANDO tareas con diferentes fuentes de reloj para el módulo USB y para la CPU del Microcontrolador. El módulo USB, en cualquiera de los modos, puede ser ejecutado asincrónicamente con respecto a la CPU del núcleo del microncontrolador como así también con respecto a otros periféricos. Esto significa que las aplicaciones pueden utilizar el oscilador primario para dar señal de reloj al módulo USB mientras que la CPU del microcontrolador es ejecutada desde una fuente de reloj diferente a baja velocidad. Si es necesario ejecutar toda la aplicación desde una única fuente de reloj, la operación en modo Alta- Velocidad (Full-speed) provee una gran variedad de diferentes configuraciones de frecuencias de reloj, en contraste con las pocas posibilidades que otorga el modo de operación a baja-velocidad. OPCIONES DE CONFIGURACION DEL OSCILADOR PARA USO DEL MODULO USB TABLA 2-3 OPCIONES DE CONFIGURACION DEL OSCILADOR PARA UTILIZAR EL MODULO USB INPUT OSCILLATOR FREQUENCY PLL DIVISION PLLDIV2:DIV0) PLL-Prescaler Clock Mode FOSC3:FOSC0 MCU CLOCK DIVISION CPUDIV1:CPUDIV0 Oscillator Postcaler or PLL - Postcaler Microcontroller Clock Frequency 48 MHz PLL-Prescaler N/A(1) EC, ECIO 48 ÷ None(00) Osc. Postcaler 48 Mhz 48 ÷ 2 (01) Osc. Postcaler 24 Mhz 48 ÷ 3 (10) Osc. Postcaler 16 Mhz 48 ÷ 4 (11) Osc. Postcaler 12 Mhz 48 Mhz PLL-Prescaler +12(111) 48/12=4 EC, ECIO 48 ÷ None (00) Osc. Postcaler 48 Mhz 48 ÷ 2 (01) Osc. Postcaler 24 Mhz 48 ÷ 3 (10) Osc. Postcaler 16 Mhz 48 ÷ 4 (11) Osc. Postcaler 12 Mhz ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz 96 ÷ 3 (01) PLL postcaler 32 Mhz 96 ÷ 4 (10) PLL postcaler 24 Mhz 96 ÷ 6 (11) PLL postcaler 16 Mhz 40 Mhz PLL-Prescaler EC, ECIO 40 ÷ None (00) Osc. Postcaler 40 Mhz
  • 23. +10(110) 40/10=4 40 ÷ 2 (01) Osc. Postcaler 20 Mhz 40 ÷ 3 (10) Osc. Postcaler 13.33 Mhz 40 ÷ 4 (11) Osc. Postcaler 10 Mhz ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz 96 ÷ 3 (01) PLL postcaler 32 Mhz 96 ÷ 4 (10) PLL postcaler 24 Mhz 96 ÷ 6 (11) PLL postcaler 16 Mhz 24 Mhz PLL-Prescaler +6(101) 24/6=4 HS, EC, ECIO 24 ÷ None (00) Osc. Postcaler 24 Mhz 24 ÷ 2 (01) Osc. Postcaler 12 Mhz 24 ÷ 3 (10) Osc. Postcaler 8 Mhz 24 ÷ 4 (11) Osc. Postcaler 6 Mhz HSPLL, ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz 96 ÷ 3 (01) PLL postcaler 32 Mhz 96 ÷ 4 (10) PLL postcaler 24 Mhz 96 ÷ 6 (11) PLL postcaler 16 Mhz 20 Mhz PLL-Prescaler +5(100) HS, EC, ECIO 20 ÷ None (00) Osc. Postcaler 20 Mhz 20 ÷ 2 (01) Osc. Postcaler 10 Mhz 20 ÷ 3 (10) Osc. Postcaler 6,67 Mhz 20 ÷ 4 (11) Osc. Postcaler 5 Mhz HSPLL, ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz 96 ÷ 3 (01) PLL postcaler 32 Mhz 96 ÷ 4 (10) PLL postcaler 24 Mhz 96 ÷ 6 (11) PLL postcaler 16 Mhz 16 Mhz PLL-Prescaler +4(011) 16/4+4 HS, EC, ECIO 16 ÷ None (00) Osc. Postcaler 16 Mhz 16 ÷ 2 (01) Osc. Postcaler 8 Mhz 16 ÷ 3 (10) Osc. Postcaler 5,33 Mhz 16 ÷ 4 (11) Osc. Postcaler 4 Mhz HSPLL, ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz 96 ÷ 3 (01) PLL postcaler 32 Mhz 96 ÷ 4 (10) PLL postcaler 24 Mhz 96 ÷ 6 (11) PLL postcaler 16 Mhz 12 Mhz PLL-Prescaler +3(010) 12/3=4 HS, EC, ECIO 12 ÷ None (00) Osc. Postcaler 12 Mhz 12 ÷ 2 (01) Osc. Postcaler 6 Mhz 12 ÷ 3 (10) Osc. Postcaler 4 Mhz 12 ÷ 4 (11) Osc. Postcaler 3 Mhz HSPLL, ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz 96 ÷ 3 (01) PLL postcaler 32 Mhz 96 ÷ 4 (10) PLL postcaler 24 Mhz 96 ÷ 6 (11) PLL postcaler 16 Mhz 8 Mhz PLL-Prescaler +2(001) 8/2=4 HS, EC, ECIO 8 ÷ None (00) Osc. Postcaler 8 Mhz 8 ÷ 2 (01) Osc. Postcaler 4 Mhz 8 ÷ 3 (10) Osc. Postcaler 2.67 Mhz 8 ÷ 4 (11) Osc. Postcaler 2 Mhz HSPLL, ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz 96 ÷ 3 (01) PLL postcaler 32 Mhz 96 ÷ 4 (10) PLL postcaler 24 Mhz 96 ÷ 6 (11) PLL postcaler 16 Mhz 4 Mhz PLL-Prescaler +1(000) HS, EC, ECIO 4 ÷ None (00) Osc. Postcaler 4 Mhz 4 ÷ 2 (01) Osc. Postcaler 2 Mhz
  • 24. 4/1=4 4 ÷ 3 (10) Osc. Postcaler 1.33 Mhz 4 ÷ 4 (11) Osc. Postcaler 1 Mhz HSPLL, ECPLL, ECPIO 96 ÷ 2 (00) PLL postcaler 48 Mhz 96 ÷ 3 (01) PLL postcaler 32 Mhz 96 ÷ 4 (10) PLL postcaler 24 Mhz 96 ÷ 6 (11) PLL postcaler 16 Mhz NOTA: todas las frecuencias de salida excepto la de 24Mhz son asociadas con el funcionamiento del módulo USB en modo Alta- Velocidad (Fulll-Speed) USB clock 48Mhz. En azul se remarcan los modos compatibles con el modo Baja-Velocidad (Low-Speed) System clock 24Mhz. Usb Clock 6 Mhz. 2.4 INTERCAMBIO DE FUENTES DE RELOJ Y OSCILADORES Como en el caso de los PIC18 antecesores, la familia de PIC18F2455/2550/4455/4550 incluye una característica que les permite cambiar la fuente de frecuencia de reloj desde el oscilador principal a una fuente alternativa de baja frecuencia de reloj. Los PIC18F2455/2550/4455/4550 ofrecen 2 fuentes alternativas de reloj. Cuando se activa una fuente de reloj alternativa, están disponibles los modos de alimentación controlada de ahorro de energía (power-managed operating modes). Básicamente hay tres fuentes de frecuencia de reloj para estos dispositivos: • Osciladores Primarios (Primary oscillators) • Osciladores Secundarios (Secondary oscillators) • Bloque de Oscilador Interno (Internal oscillator block) El oscilador primario incluye el modo de Cristal Externo y de Resonador (External Crystal and Resonator modes), el modo de Frecuencia de Reloj Externa (the External Clock modes) y el bloque de oscilador interno (the internal oscillator block). El modo de uso será definido por los bits de configuración FOSC3:FOSC0. Los osciladores secundarios (secondary oscillators) son aquellas fuentes externas de frecuencia de reloj que no se conectan al par de pines OSC1 y OSC2. Estas fuentes pueden continuar operando aún después de que el microcontrolador se coloque en un modo de alimentación controlada (power-managed mode). Los PIC18F2455/2550/4455/4550 ofrecen el Timer1 oscillator como un oscilador secundario (secondary oscillator). Este oscilador, en todos los modos de alimentación controlada (power-managed modes), es a menudo la base de tiempo para funciones como el reloj de tiempo real (Real-Time Clock). Muy a menudo, un cristal de reloj de 32.768 kHz es conectado entre los pines RC0/T1OSO/T13CKI (PIN 15 en el 18F4550 de 40pines) y RC1/T1OSI/UOE (PIN 16 en el 18F4550 de 40pines). Como los circuitos de los modos de oscilador XT y HS, también será necesario conectar capacitores desde cada pin a tierra o gnd. Además de poder ser utilizado como fuente de reloj primaria, el bloque de oscilador interno (internal oscillator block) está también disponible como fuente de reloj para los modos de alimentación controlada (power-managed mode clock source). La fuente de reloj INTRC también es usada como fuente de reloj para varias funciones especiales como ser el Wacht dog Timer y el Fail-Safe Clock Monitor.
  • 25. 2.4.1 REGISTRO DE CONTROL DEL OSCILADOR El registro OSCCON (Register 2-2) controla varios aspectos de la operación de la frecuencia de reloj del microcontrolador, tanto en los modos de alimentación total (full power operation) como en los modos de alimentación controlada (power-managed mode). Los bits de selección de sistema de reloj (System Clock Select bits), SCS1:SCS0, seleccionan la fuente de reloj (clock source). Las fuentes de reloj disponibles son el reloj primario (primary clock) (definido por los bits de configuración FOSC3:FOSC0), el reloj secundario (secondary clock) (Timer1 oscillator) y el bloque de oscilador interno (the internal oscillator block). La fuente de reloj cambia inmediatamente después de que uno o mas bits son escritos, siguiendo el reloj un breve intervalo de transición. Los bits SCS son borrados en todas las formas de Reset. Los bits de selección de frecuencia del oscilador interno (Internal Oscillator Frequency Select bits), IRCF2:IRCF0, eligen la frecuencia de salida del bloque de oscilador interno para controlar la frecuencia de reloj del microcontrolador. Las opciones son la fuente del INTRC, la fuente del INTOSC (8 MHz) o uno de las frecuencias derivadas del INTOSC postscaler (31 kHz to 4 MHz). Si el bloque de oscilador interno está abasteciendo al microcontrolador, cambiando el estado de estos bits tendremos un inmediato cambio en la salida del oscilador interno. En los casos de Resets, la salida de frecuencia por defecto del bloque de oscilador interno es establecida a 1 MHz. Cuando se selecciona la salida de frecuencia de 31 kHz (IRCF2:IRCF0 = 000), los usuarios podrán elegir que oscilador interno actuará como fuente. Esto se realiza con el bit INTSRC en el registro OSCTUNE (OSCTUNE<7>). Estableciendo este bit selecciona INTOSC como fuente de reloj de 31.25 kHz (8Mhz INTOSC / 256 = 31.25Khz) mediante la activación de la salida del INTOSC postscaler divide_por_256 (divide-by-256 output). Borrando INTSRC seleccionaremos como fuente de reloj a INTRC (nominalmente 31 kHz). Esta opción permite a los usuarios seleccionar el ajustable y más preciso INTOSC como fuente de reloj, mientras se mantiene el ahorro de energía con una muy baja velocidad de reloj. Sin importar el seteo de INTSRC, INTRC siempre queda activa la fuente de reloj para características como el Watchdog Timer y el Fail-Safe Clock Monitor. Los bits OSTS, IOFS y T1RUN indican que fuente de reloj está actualmente proveyendo de señal de reloj al microcontrolador. El bit OSTS indica que el timer de arranque (Start-up Timer) ha cumplido su tiempo y el reloj primario (primary clock) está proveyendo de señal de reloj en los modos de reloj primarios (primary clock modes). El bit IOFS indica cuando el bloque del oscilador interno ha sido estabilizado y se encuentra proveyendo señal de reloj al microcontrolador en los modos de reloj RC. El bit T1RUN (T1CON<6>) indica cuando el oscilador del Timer1 está proveyendo de señal de reloj al microcontrolador en los modos de relojes secundarios. En los modos de alimentación controlada (power-managed modes), solo uno de estos 3 bits podrá ser seleccionado al mismo tiempo. Si ninguno de estos bits se ha seteado, implicará que INTRC está proveyendo de señal de reloj o el bloque de oscilador interno ha comenzado a funcionar y todavía no está estable. El bit IDLEN determina si el microcontrolador se ha puesto a funcionar en modo Sleep, o uno de los modos Idle, cuando la instrucción SLEEP es ejecutada. El uso de la bandera (flag) y bits de control en el registro OSCCON será discutido en mayor detalle en la Sección 3.0 “Power-Managed Modes”. NOTA 1: El oscilador Timer1 debe ser activado para poder seleccionar la fuente secundaria de reloj. El
  • 26. oscilador del Timer1 se activa seteando el bit en T1OSCEN en el registro Timer1 Control register (T1CON<3>). Si el oscilador Timer1 no está activo, cualquier intento de seleccionar la fuente secundaria de reloj será ignorado. NOTA 2: Es recomendable que el oscilador Timer1 se encuentre operativo antes de seleccionarlo como fuente de reloj principal; de lo contrario un muy largo delay podrá ocurrir mientras el oscilador Timer1 oscillator arranque. 2.4.2 TRANSICIONES DEL OSCILADOR Los PIC18F2455/2550/4455/4550 contienen circuitería para prevenir malfuncionamientos en el reloj cuando se hacen intercambios de diferentes fuentes de señales de reloj. Una breve pausa en el reloj ocurre cuando se intercambia de reloj. La medida de esta pausa es la suma de 2 ciclos de la vieja fuente de reloj y 3 a 4 ciclos de la nueva fuente de reloj. Esta fórmula asume que la nueva fuente de reloj es estable. Las transiciones de relojes serán discutidas en mayor detalle en la sección 3.1.2 “Entering Power-Managed Modes”. 2.5 EFECTOS DE LOS MODOS DE ALIMENTACIÓN CONTROLADOS EN LAS DISTINTAS FUENTES DE RELOJ Cuando el modo PRI_IDLE es seleccionado, el oscilador primario designado continuará funcionando sin interrupción. Para todos los otros modos de alimentación controlada, el oscilador que se encuentre usando el pin OSC1 será desactivado. A menos que el módulo USB se encuentre activado, el pin OSC1 (y el pin OSC2 si es usado por el oscilador) no oscilará más. En los modos de reloj secundario (SEC_RUN y SEC_IDLE), funcionará el oscilador Timer1
  • 27. proveyendo de fuente de reloj al microcontrolador. El oscilador Timer1 podrá también funcionar en todos los modos de alimentación controlada si es requerido como señal de reloj para el Timer1 o el Timer3. En los modos de oscilador interno (RC_RUN and RC_IDLE), el bloque de oscilador interno proveerá de señal de reloj al microcontrolador. La salida de 31 kHz de INTRC podrá ser utilizada directamente para proveer de señal de reloj y podrá ser activada para dar soporte a varias de las características especiales, sin importar en que modo de alimentación controlada se encuentre (see Section 25.2 “Watchdog Timer (WDT)”, Section 25.3 “Two-Speed Start-up” and Section 25.4 “Fail-Safe Clock Monitor” for more information on WDT, Fail-Safe Clock Monitor and Two-Speed Start-up). La salida de INTOSC de 8 Mhz puede ser usada directamente para dar señal de reloj al microcontrolador o puede ser dividida para obtener una menor frecuencia por el postscaler. La salida de INTOSC es desactivada si la señal de reloj es provista directamente desde la salida de INTRC. Sin importar que modo de ejecución se encuentre seleccionado, sea modo Run o modo Idle, la fuente de reloj del módulo USB continuará operando. Si el microcontrolador opera desde un oscilador basado en cristal o resonador, ese oscilador continuará dando señal al módulo USB. El núcleo o CPU y todos los otros módulos cambiarán a la nueva fuente de reloj. Si se selecciona el modo Sleep todas las fuentes de reloj serán detenidas. Dado que todas las corrientes de conmutación de los transistores son detenidas, el modo Sleep consigue el más bajo consumo de corriente en el microcontrolador (solo corrientes de fuga). El modo Sleep nunca debe ser invocado mientras el módulo USB esté operando y esté conectado. La única excepción se da cuando el microcontrolador ha emitido un comando “Suspend” sobre el USB. Una vez que el módulo ha suspendido la operación y se ha desplazado hacia un estado de bajo consumo, el microcontrolador puede ser puesto sin peligro en modo Sleep. Activando cualquiera de los periféricos que posee el microcontrolador durante el modo Sleep hará incrementar el consumo de corriente en dicho modo. EL INTRC es requerido para dar soporte a la operación del Watch Dog Timer o WDT. El oscilador Timer1 oscillator puede ser utilizado para hacer funcionar un Reloj de Tiempo Real (Real-Time Clock). Otras funciones del microcontrolador pueden funcionar sin requerir una fuente de reloj (Por ejemplo: MSSP slave, PSP, INTn pins etc). Los periféricos que pueden agregar significante consumo de corriente son enumerados en la Sección 28.2 (Peripherals that may add significant current consumption are listed in Section 28.2 “DC Characteristics: Power-Down and Supply Current”). 2.6 Power-up Delays Los delays durante el encendido del microcontrolador son controlados por 2 timers. De esta manera no se requiere el uso de un reset externo para la mayoría de las aplicaciones, ahorrando el uso de componentes externos. Los delays aseguran que el microcontrolador se mantenga en estado de reset hasta que la fuente de alimentación del dispositivo es estable bajo circunstancias normales y el reloj primario se haya establizado y esté funcionando. Para información adicional de los delays de encendido (power-up delays), ver la sección 4.5
  • 28. (Section 4.5 “Device Reset Timers”). El primer timer es el Power-up Timer (PWRT), que provee un delay fijo durante el encendido (parameter 33,Table 28-12). El timer se activa borrando (= 0) el bit de configuración de PWRTEN. El segundo timer es el Oscillator Start-up Timer (OST), el cual se ha concebido para mantener el chip en estado de Reset hasta que el oscilador a cristal sea estable (modos XT y HS). El OST cuenta 1024 ciclos de reloj antes de permitirle al oscilador que haga de fuente de reloj para el microcontrolador. Cuando se selecciona el modo de oscilador HSPLL el microcontrolador es mantenido en estado de reset por un período adicional de 2 ms luego del delay del HS OST delay, así el PLL puede generar correctamente los 96khz fijos según la frecuencia de entrada. Hay un retraso de intervalo TCSD CPU Start-up Time (parameter 38, Table 28-12), que sigue al Power On Reset (POR), para permitirle al microcontrolador que esté listo para ejecutar instrucciones. Este delay comienza junto con cualquiera de los otros delays. Esta puede ser la única demora que se produce cuando alguno de los modo CE o de los modos de oscilador interno se utilizan como fuente primaria de reloj.