You are on page 1of 28

GUIA DE OSCILADORES

Estimado amigo lector: El presente texto naci con el afn de poder programar pics con seguridad, sabiendo de antemano que es lo que estamos haciendo, entendiendo que es cada bit de configuracin, 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 bsicamente la traduccin del ingls al espaol del captulo 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 ms fcil de comprender el tema en cuestin ampliando las tablas, figuras, y el texto en si y agregando luego de algunos prrafos las figuras que estn disgregadas por todo el datasheet que va citando el texto para poder tenerlas ms a mano, como as tambin ejemplos exhibiendo las configuraciones en C18. Por lo que la traduccin no ha sido respetada al 100%, tanto en el texto como en el contenido. Vale aclarar que es slo una gua 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 pblicos 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 mdulo 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 tcnicas 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 mdulo USB sea a baja (6 MHz) o alta velocidad (48 MHz). Desde que el mdulo 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 caractersticas de la estructura de los osciladores de la familia de los PIC18, como el bloque de reloj interno, o la conmutacin 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. Bsicamente 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 y 2 Registros de Configuracin. Registros de Control.

Los Registros de Configuracin, CONFIG1L y CONFIG1H, seleccionan el modo de oscilador y las opciones del USB prescaler/postscaler. Como Bits de Configuracin, estos parmetros 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 alimentacin controlada (son 7 modos, los cuales proveen una gran variedad de opciones de alimentacin del PIC para conservar la energa). Este supuesto ser tratado ms adelante (ver datasheet Seccin 2.4.1 Oscillator Control Register.) El registro OSCTUNE (register 2-1) es utilizado para hacer ajustes de precisin o para afinar la fuente de frecuencia INTRC, como tambin para seleccionar la fuente de baja frecuencia para manejar caractersticas

especiales. Su uso ser descripto ms adelante (ver seccin 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 seal externa), otro secundario (utiliza el timer1), y un bloque de oscilador interno (utiliza el oscilador interno o el INTRC), pudiendo seleccionar 12 modos de configuracin 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 configuracin FOSC3:FOSC0 del Registro de Configuracin 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 1 2 3 4 5 6 7 8 9 Fuente de reloj Cristal o Resonador Cristal o Resonador Cristal o Resonador Cristal o Resonador Seal externa Seal externa Seal externa Seal externa Oscilador interno y Cristal Oscilador interno y Cristal Oscilador interno y Seal externa Oscilador interno y Seal externa NOMBRE TIPO DE OSCILADOR/ES XT XTPLL HS HSPLL EC ECIO ECPLL ECPIO INTHS Crystal/Resonator Crystal/Resonator con PLL activado High-Speed Crystal/Resonator High-Speed Crystal/Resonator con PLL activado External Clock como fuente de clock para la CPU con salida de Frecuencia/4 en RA6 External Clock como fuente de clock para la CPU con pin de Input/Output en RA6 External Clock con PLL activado con salida de Frecuencia/4 en RA6 External Clock con PLL activado, con pin de Input/Output en RA6 Internal Oscillator como fuente de clock para la CPU, oscilador HS como fuente de oscilador para el mdulo USB CONFIGURACIN EN C18 #pragma config FOSC = XT_XT #pragma config FOSC = XTPLL_XT #pragma config FOSC = HS #pragma config FOSC = HSPLL_HS #pragma config FOSC = EC_EC #pragma config FOSC = ECIO_EC #pragma config FOSC = ECPLL_EC #pragma config FOSC = ECPLLIO_EC #pragma config FOSC = INTOSC_HS

10

INTXT

Internal Oscillator como fuente de clock para la CPU, #pragma config FOSC = INTOSC_XT oscilador XT como fuente de oscilador para el mdulo USB Internal Oscillator como fuente de clock para la CPU, seal externa EC como fuente de oscilador para el mdulo USB, con pin de Input/Output digital en el pin RA6 Internal Oscillator como fuente de clock para la CPU, seal externa EC como fuente de oscilador para el mdulo USB, con salida de frecuencia dividida por 4 (FOSC/4) en RA6 #pragma config FOSC = INTOSCIO_EC

11

INTIO

12

INTCKO

#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 pginas subsiguientes)

2.2.1 MODOS DE OSCILADORES Y MODULO USB

Un diferente enfoque es necesario efectuar con estos nuevos PICs con mdulo USB. En los PICs antecesores una nica fuente de oscilador alimentaba el ncleo de microcontrolador (CPU) y los perifricos. 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 mdulo USB y por ello el mdulo USB no puede ser asociado con ninguna de las otras fuentes de reloj. As el mdulo USB debe recibir la seal de reloj nicamente desde la fuente primaria de oscilador. Sin embargo el ncleo del microcontrolador (CPU) y los perifricos tambin pueden recibir seal de reloj desde la fuente de reloj primaria como tambin desde la fuente secundaria o del oscilador interno al igual que en los PICs antecesores. Cuando el mdulo 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 perifricos no requieren que se ejecuten a la misma velocidad que el mdulo USB cuando se utiliza el oscilador primario. Hay numerosas opciones de configuracin para brindarle la frecuencia necesaria al mdulo USB y a su vez proveer un amplio rango de diferentes frecuencias desde el oscilador primario al ncleo del microncontrolador y a los perifricos. (el concepto ser ampliado ms abajo en la seccin 2.3 AJUSTES DEL OSCILADOR PARA EL USO DEL MDULO 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 cermico 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 oscilacin.

Esta configuracin es la que se utilizar en la mayora de los proyectos iniciales en los que no sea utilizado el mdulo USB. Normalmente se usar el modo de oscilador n1 XT para cristales de 4 mhz y la configuracin n 3 HS para cristales de ms de 4mhz. De acuerdo al cristal que se elija se debern conectar en paralelo diferentes capacitores:

En modo XT con cristal de 4.0 MHz En modo HS con cristal de 8.0 MHz En modo HS con cristal de 16.0MHz En modo HS con cristal de 20.0MHz

33 pF 33 pF 27 pF 27 pF 22 pF 22 pF 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 divisin de la frecuencia estar determinada por los bits de configuracin 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 4 Mhz 4 Mhz 4 Mhz 4 Mhz Divisor CPUDIV1:CPUDIV0 Oscillator Postcaler Sin divisin /2 /3 /4 Configuracin en c18 para los modos: FOSC = XT_XT o FOSC = HS 4 2 Mhz Mhz Frecuencia de trabajo del CPU

#pragma config CPUDIV = OSC1_PLL2 #pragma config CPUDIV = OSC2_PLL3 #pragma config CPUDIV = OSC3_PLL4 #pragma config CPUDIV = OSC4_PLL6

1,33 Mhz 1 Mhz

8 Mhz 8 Mhz 8 Mhz 8 Mhz

Sin divisin /2 /3 /4

#pragma config CPUDIV = OSC1_PLL2 #pragma config CPUDIV = OSC2_PLL3 #pragma config CPUDIV = OSC3_PLL4 #pragma config CPUDIV = OSC4_PLL6

8 4

Mhz Mhz

2,67 Mhz 2 Mhz

12 Mhz 12 Mhz 12 Mhz 12 Mhz

Sin divisin /2 /3 /4

#pragma config CPUDIV = OSC1_PLL2 #pragma config CPUDIV = OSC2_PLL3 #pragma config CPUDIV = OSC3_PLL4 #pragma config CPUDIV = OSC4_PLL6

12 6 4 3

Mhz Mhz Mhz Mhz

16 Mhz 16 Mhz 16 Mhz 16 Mhz

Sin divisin /2 /3 /4

#pragma config CPUDIV = OSC1_PLL2 #pragma config CPUDIV = OSC2_PLL3 #pragma config CPUDIV = OSC3_PLL4 #pragma config CPUDIV = OSC4_PLL6

16 8

Mhz Mhz

5,33 Mhz 4 Mhz

20 Mhz 20 Mhz 20 Mhz 20 Mhz

Sin divisin /2 /3 /4

#pragma config CPUDIV = OSC1_PLL2 #pragma config CPUDIV = OSC2_PLL3 #pragma config CPUDIV = OSC3_PLL4 #pragma config CPUDIV = OSC4_PLL6

20 10

Mhz Mhz

6,67 Mhz 5 Mhz

24 Mhz 24 Mhz 24 Mhz 24 Mhz

Sin divisin /2 /3 /4

#pragma config CPUDIV = OSC1_PLL2 #pragma config CPUDIV = OSC2_PLL3 #pragma config CPUDIV = OSC3_PLL4 #pragma config CPUDIV = OSC4_PLL6

24 12 8 6

Mhz Mhz Mhz Mhz

40 Mhz 40 Mhz 40 Mhz 40 Mhz

Sin divisin /2 /3 /4

#pragma config CPUDIV = OSC1_PLL2 #pragma config CPUDIV = OSC2_PLL3 #pragma config CPUDIV = OSC3_PLL4 #pragma config CPUDIV = OSC4_PLL6

40 20

Mhz Mhz

13,33 Mhz 10 Mhz

48 Mhz 48 Mhz 48 Mhz 48 Mhz

Sin divisin /2 /3 /4

#pragma config CPUDIV = OSC1_PLL2 #pragma config CPUDIV = OSC2_PLL3 #pragma config CPUDIV = OSC3_PLL4 #pragma config CPUDIV = OSC4_PLL6

48 24 16 12

Mhz Mhz Mhz Mhz

En el modo HS tambin 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 seal desde que sale del oscilador primario, pasando por el Oscillator Postcaler CPUDIV que divide la frecuencia, hasta llegar al ncleo 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 seal 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 propsito general, ms 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 tambin 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 especficamente para aplicaciones USB con osciladores de baja velocidad y tambin 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 diseado 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 mdulo interno USB como por el CPU o ncleo 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 4 Mhz 8 Mhz 12 Mhz 16 Mhz 20 Mhz 24 Mhz 40 Mhz 48 Mhz /1 /2 /3 /4 /5 /6 / 10 / 12 #pragma config PLLDIV = 1 #pragma config PLLDIV = 2 #pragma config PLLDIV = 3 #pragma config PLLDIV = 4 #pragma config PLLDIV = 5 #pragma config PLLDIV = 6 #pragma config PLLDIV = 10 #pragma config PLLDIV = 12 = 4 Mhz = 4 Mhz = 4 Mhz = 4 Mhz = 4 Mhz = 4 Mhz = 4 Mhz = 4 Mhz Configuracin en C Frecuencia de entrada al PLL

Tambin hay una opcin 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 mdulo 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 mdulo USB a una velocidad y el CPU a otra. Por ejemplo con un cristal de 4Mhz podemos hacer funcionar el mdulo 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 divisin 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

Configuracin en c18 para modos que usan el PLL

Frecuencia de trabajo para el CPU extraida del PLL

96 Mhz 96 Mhz 96 Mhz 96 Mhz

/2 /3 /4 /6

#pragma config CPUDIV = OSC1_PLL2 #pragma config CPUDIV = OSC2_PLL3 #pragma config CPUDIV = OSC3_PLL4 #pragma config CPUDIV = OSC4_PLL6

= 48 Mhz = 32 Mhz = 24 Mhz = 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 slo 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 seal 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 seal de 96Mhz generada por el PLL tomar 2 caminos. Una rama seguir hacia el mdulo 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 ncleo 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 seales 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 mdulo 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 seal de reloj directa para el CPU del microcontrolador. Esta seal 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. Adems tambin se activar automticamente cuando alguno de los siguientes mdulos est activo: Temporizador de encendido (Power-Up Timer) Monitor de reloj de seguridad (Fail-Safe Clock Monitor) Temporizador perro guardin (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 CONFIGURACIN DEL OSCILADOR INTERNO


Cuando se utilice el mdulo 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 (Seal de reloj externa o Cristal/Resonador externo) deber utilizarse como fuente de frecuencia de reloj para brindarle seal al USB Clock. La eleccin de la fuente de reloj para dicho mdulo USB estar determinada por el modo de oscilador interno seleccionado. Hay disponibles 4 modos de configuracin del oscilador interno los cuales se pueden seleccionar mediante las directivas de preprocesado #pragma o mediante la modificacin de los registros de configuracin config1L y config1H. : 4 modos de DESCRIPCION configuracin del OSCILADOR INTERNO 9. INTHS La fuente de frecuencia de reloj para el mdulo USB es provista por el oscilador en modo HS Configuracin en c18 mediante directivas pragma config
#pragma config FOSC = INTOSC_HS

10. INTXT

#pragma config FOSC = INTOSC_XT La fuente de frecuencia de reloj para el mdulo USB es provista por el oscilador en modo XT

11. INTCKO

La fuente de frecuencia de reloj para el #pragma config FOSC = INTOSC_EC mdulo USB es provista por una seal en la entrada externa en OSC1/CLKI. En el pin OSC2/CLKO tendremos como salida la frecuencia de entrada dividida por 4 FOSC/4. La fuente de frecuencia de reloj para el #pragma config FOSC = INTOSCIO_EC mdulo USB es provista por una seal 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

12. INTIO

I/O. Una vez elegido el modo de configuracin del oscilador interno con las directivas pragma de la tabla antes citada, desde el cdigo principal del programa se puede cambiar la frecuencia con el INTOSC Postcaler modfiicando los bits del registro OSCCON (Registro 2-2 del datasheet pg. 32) Puntualmente los bits IRCF2, IRCF1 e IRCF0.

IRCF2:IRCF0: Internal Oscillator Frequency Select bits (Bits de seleccin 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 configuracin elegir el modo de oscilador #pragma config FOSC = INTOSC_EC // ejemplo

// dentro del cdigo 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 configuracin*/

#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

/*declaracin 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 instruccin toma 4 ciclos) } }

2.2.5.2 REGISTRO OSCTUNE


La salida del oscilador interno viene calibrada de fbrica pero puede ser reajustada por el usuario en sus aplicaciones escribiendo en el registro OSCTUNE. La sensibilidad de la afinacin es constante durante todo el rango de ajuste. Cuando el registro OSCTUNE es modificado la frecuencia INTOSC e INTRC comenzarn 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 ejecucin del programa continuar efectundose durante el tiempo en que es reajustada la frecuencia. No existe indicador de que la frecuencia ya haya sido reajustada. El registro OSCTUNE tambin contiene el bit INTSRC. Este bit permite al usuario seleccionar que fuente de oscilador interno proveer de seal de reloj cuando la opcin de frecuencia de 31khz es seleccionada. Esto se tratar ms 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 fbrica 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 operacin normal del microcontrolador de muchas formas. El oscilador de baja frecuencia INTRC opera independientemente de la fuente INTOSC. Cualquier cambio en INTOSC por tensin o temperatura no tiene porqu reflejarse en INTRC ni viceversa. En la siguiente pgina 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 ningn 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 tambin en que direccin debe hacerse (si la frecuencia es baja o es alta), y en algunos casos, cuan grande debe ser el cambio. Por ejemplo: Mdulo EUSART: cuando usamos la EUSART en modo Asncrono, 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. Tambin es posible verificar la velocidad en la que est trabajando el oscilador de dos maneras: a) comparndola con una seal de referencia . Para ello deben utilizarse dos temporizadores: Un timer que fijar su frecuencia de reloj desde la seal que recibe el perifrico 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 interrupcin, 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 ms grande de lo esperado, entonces significa que el bloque del oscilador interno est funcionando muy rpido. Para ajustarlo hay que decrementar el valor del registro OSCTUNE. b) Utilizando un mdulo CCP (Capture, Compare, PWM), y el Timer1 o el Timer3 (los cuales ajustarn 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 pas). El tiempo del primer evento es capturado en los registros CCPRxH:CCPRxL y es guardado para su posterior utilizacin. 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 rpido. 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 MDULO USB


CUANDO el PIC18F4550 es usado para conectividad USB, el mdulo 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 planificacin en la seleccin del oscilador y de la frecuencia de trabajo a utilizar como as tambin en la programacin. 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 estandarizacin 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 mdulo trabaje a una frecuencia de trabajo que sea 4 veces ms rpida para poder ejecutar 1 instruccin por dato (4 ciclos de reloj por instruccin).Entonces tenemos As tenemos 12.0 Mhz * 4 = 48 mhz: Full speed data is clocked at 12.00Mb/s 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 ms abajo se exhibir el amplio rango de configuraciones de osciladores compatibles con la operacin del mdulo 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 seal del cristal y usa el Oscillator Postcaler para dividir dicha seal por un numero (que puede ser /1, /2, /3, /4) alcanzando una frecuencia de 24MHz, los cuales sern divididos nuevamente por 4 para producir los 6Mhz que se requieren como seal de entrada para operar el mdulo 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 Mdulo USB a baja-velocidad continan tambin hacia la CPU del Pic. Esta restriccin 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 slo 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 alimentacin de frecuencia para el mdulo 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 Mdulo USB se puedan obtener los 6Mhz. Para operar el mdulo 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 mltiplo 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 mdulo 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 mdulo USB y para la CPU del Microcontrolador.
El mdulo USB, en cualquiera de los modos, puede ser ejecutado asincrnicamente con respecto a la CPU del ncleo del microncontrolador como as tambin con respecto a otros perifricos. Esto significa que las aplicaciones pueden utilizar el oscilador primario para dar seal de reloj al mdulo USB mientras que la CPU del microcontrolador es ejecutada desde una fuente de reloj diferente a baja velocidad. Si es necesario ejecutar toda la aplicacin desde una nica fuente de reloj, la operacin en modo AltaVelocidad (Full-speed) provee una gran variedad de diferentes configuraciones de frecuencias de reloj, en contraste con las pocas posibilidades que otorga el modo de operacin 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 DIVISION CPUDIV1:CPUDIV0 CLOCK Oscillator Postcaler or PLL Postcaler 48 MHz PLL-Prescaler N/A(1) EC, ECIO 48 None(00) 48 2 (01) 48 3 (10) 48 4 (11) 48 Mhz PLL-Prescaler +12(111) EC, ECIO 48 None (00) 48 2 (01) 48 3 (10) 48/12=4 ECPLL, ECPIO 48 4 (11) 96 2 (00) 96 3 (01) 96 4 (10) 96 6 (11) 40 Mhz PLL-Prescaler EC, ECIO 40 None (00) Osc. Postcaler 48 Mhz Osc. Postcaler 24 Mhz Osc. Postcaler 16 Mhz Osc. Postcaler 12 Mhz Osc. Postcaler 48 Mhz Osc. Postcaler 24 Mhz Osc. Postcaler 16 Mhz Osc. Postcaler 12 Mhz PLL postcaler PLL postcaler PLL postcaler PLL postcaler 48 Mhz 32 Mhz 24 Mhz 16 Mhz Microcontroller Clock Frequency

Osc. Postcaler 40 Mhz

+10(110)

40 2 (01) 40 3 (10)

Osc. Postcaler 20 Mhz Osc. Postcaler 13.33 Mhz Osc. Postcaler 10 Mhz PLL postcaler PLL postcaler PLL postcaler PLL postcaler 48 Mhz 32 Mhz 24 Mhz 16 Mhz

40/10=4 ECPLL, ECPIO

40 4 (11) 96 2 (00) 96 3 (01) 96 4 (10) 96 6 (11)

24 Mhz

PLL-Prescaler +6(101)

HS, EC, ECIO

24 None (00) 24 2 (01) 24 3 (10)

Osc. Postcaler 24 Mhz Osc. Postcaler 12 Mhz Osc. Postcaler Osc. Postcaler PLL postcaler PLL postcaler PLL postcaler PLL postcaler 8 Mhz 6 Mhz 48 Mhz 32 Mhz 24 Mhz 16 Mhz

24/6=4 HSPLL, ECPLL, ECPIO

24 4 (11) 96 2 (00) 96 3 (01) 96 4 (10) 96 6 (11)

20 Mhz

PLL-Prescaler +5(100)

HS, EC, ECIO

20 None (00) 20 2 (01) 20 3 (10) 20 4 (11)

Osc. Postcaler 20 Mhz Osc. Postcaler 10 Mhz Osc. Postcaler 6,67 Mhz Osc. Postcaler PLL postcaler PLL postcaler PLL postcaler PLL postcaler 5 Mhz 48 Mhz 32 Mhz 24 Mhz 16 Mhz

HSPLL, ECPLL, ECPIO

96 2 (00) 96 3 (01) 96 4 (10) 96 6 (11)

16 Mhz

PLL-Prescaler +4(011)

HS, EC, ECIO

16 None (00) 16 2 (01) 16 3 (10)

Osc. Postcaler 16 Mhz Osc. Postcaler 8 Mhz

Osc. Postcaler 5,33 Mhz Osc. Postcaler PLL postcaler PLL postcaler PLL postcaler PLL postcaler 4 Mhz 48 Mhz 32 Mhz 24 Mhz 16 Mhz

16/4+4 HSPLL, ECPLL, ECPIO

16 4 (11) 96 2 (00) 96 3 (01) 96 4 (10) 96 6 (11)

12 Mhz

PLL-Prescaler +3(010)

HS, EC, ECIO

12 None (00) 12 2 (01) 12 3 (10)

Osc. Postcaler 12 Mhz Osc. Postcaler Osc. Postcaler Osc. Postcaler PLL postcaler PLL postcaler PLL postcaler PLL postcaler Osc. Postcaler Osc. Postcaler Osc. Postcaler Osc. Postcaler PLL postcaler PLL postcaler PLL postcaler PLL postcaler Osc. Postcaler Osc. Postcaler 6 Mhz 4 Mhz 3 Mhz 48 Mhz 32 Mhz 24 Mhz 16 Mhz 8 Mhz 4 Mhz 2.67 Mhz 2 Mhz 48 Mhz 32 Mhz 24 Mhz 16 Mhz 4 Mhz 2 Mhz

12/3=4 HSPLL, ECPLL, ECPIO

12 4 (11) 96 2 (00) 96 3 (01) 96 4 (10) 96 6 (11)

8 Mhz

PLL-Prescaler +2(001)

HS, EC, ECIO

8 None (00) 8 2 (01) 8 3 (10)

8/2=4 HSPLL, ECPLL, ECPIO

8 4 (11) 96 2 (00) 96 3 (01) 96 4 (10) 96 6 (11)

4 Mhz

PLL-Prescaler +1(000)

HS, EC, ECIO

4 None (00) 4 2 (01)

4 3 (10) 4/1=4 HSPLL, ECPLL, ECPIO 4 4 (11) 96 2 (00) 96 3 (01) 96 4 (10) 96 6 (11)

Osc. Postcaler Osc. Postcaler PLL postcaler PLL postcaler PLL postcaler PLL postcaler

1.33 Mhz 1 Mhz 48 Mhz 32 Mhz 24 Mhz 16 Mhz

NOTA: todas las frecuencias de salida excepto la de 24Mhz son asociadas con el funcionamiento del mdulo USB en modo AltaVelocidad (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 caracterstica 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, estn disponibles los modos de alimentacin controlada de ahorro de energa (power-managed operating modes). Bsicamente 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 configuracin 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 an despus de que el microcontrolador se coloque en un modo de alimentacin 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 alimentacin 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, tambin ser necesario conectar capacitores desde cada pin a tierra o gnd. Adems de poder ser utilizado como fuente de reloj primaria, el bloque de oscilador interno (internal oscillator block) est tambin disponible como fuente de reloj para los modos de alimentacin controlada (power-managed mode clock source). La fuente de reloj INTRC tambin 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 operacin de la frecuencia de reloj del microcontrolador, tanto en los modos de alimentacin total (full power operation) como en los modos de alimentacin controlada (power-managed mode). Los bits de seleccin 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 configuracin 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 despus de que uno o mas bits son escritos, siguiendo el reloj un breve intervalo de transicin. Los bits SCS son borrados en todas las formas de Reset. Los bits de seleccin 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 podrn 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 activacin 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 opcin permite a los usuarios seleccionar el ajustable y ms preciso INTOSC como fuente de reloj, mientras se mantiene el ahorro de energa con una muy baja velocidad de reloj. Sin importar el seteo de INTSRC, INTRC siempre queda activa la fuente de reloj para caractersticas 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 seal 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 seal 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 seal de reloj al microcontrolador en los modos de reloj RC. El bit T1RUN (T1CON<6>) indica cuando el oscilador del Timer1 est proveyendo de seal de reloj al microcontrolador en los modos de relojes secundarios. En los modos de alimentacin 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 seal de reloj o el bloque de oscilador interno ha comenzado a funcionar y todava 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 instruccin SLEEP es ejecutada. El uso de la bandera (flag) y bits de control en el registro OSCCON ser discutido en mayor detalle en la Seccin 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 circuitera para prevenir malfuncionamientos en el reloj cuando se hacen intercambios de diferentes fuentes de seales 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 frmula asume que la nueva fuente de reloj es estable. Las transiciones de relojes sern discutidas en mayor detalle en la seccin 3.1.2 Entering Power-Managed Modes.

2.5 EFECTOS DE LOS MODOS DE ALIMENTACIN CONTROLADOS EN LAS DISTINTAS FUENTES DE RELOJ
Cuando el modo PRI_IDLE es seleccionado, el oscilador primario designado continuar funcionando sin interrupcin. Para todos los otros modos de alimentacin controlada, el oscilador que se encuentre usando el pin OSC1 ser desactivado. A menos que el mdulo USB se encuentre activado, el pin OSC1 (y el pin OSC2 si es usado por el oscilador) no oscilar ms. 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 tambin funcionar en todos los modos de alimentacin controlada si es requerido como seal 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 seal de reloj al microcontrolador. La salida de 31 kHz de INTRC podr ser utilizada directamente para proveer de seal de reloj y podr ser activada para dar soporte a varias de las caractersticas especiales, sin importar en que modo de alimentacin 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 seal de reloj al microcontrolador o puede ser dividida para obtener una menor frecuencia por el postscaler. La salida de INTOSC es desactivada si la seal de reloj es provista directamente desde la salida de INTRC. Sin importar que modo de ejecucin se encuentre seleccionado, sea modo Run o modo Idle, la fuente de reloj del mdulo USB continuar operando. Si el microcontrolador opera desde un oscilador basado en cristal o resonador, ese oscilador continuar dando seal al mdulo USB. El ncleo o CPU y todos los otros mdulos cambiarn a la nueva fuente de reloj. Si se selecciona el modo Sleep todas las fuentes de reloj sern detenidas. Dado que todas las corrientes de conmutacin de los transistores son detenidas, el modo Sleep consigue el ms bajo consumo de corriente en el microcontrolador (solo corrientes de fuga). El modo Sleep nunca debe ser invocado mientras el mdulo USB est operando y est conectado. La nica excepcin se da cuando el microcontrolador ha emitido un comando Suspend sobre el USB. Una vez que el mdulo ha suspendido la operacin y se ha desplazado hacia un estado de bajo consumo, el microcontrolador puede ser puesto sin peligro en modo Sleep. Activando cualquiera de los perifricos 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 operacin 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 perifricos que pueden agregar significante consumo de corriente son enumerados en la Seccin 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 mayora 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 alimentacin del dispositivo es estable bajo circunstancias normales y el reloj primario se haya establizado y est funcionando. Para informacin adicional de los delays de encendido (power-up delays), ver la seccin 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 configuracin 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 perodo adicional de 2 ms luego del delay del HS OST delay, as el PLL puede generar correctamente los 96khz fijos segn 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.