¿Configuración del oscilador PIC18F2550?

Estoy un poco confundido acerca de la configuración del oscilador para PIC18F2550. Tengo cristal de 20 MHz (no oscilador) y quiero que PIC funcione (si es posible) a 48 MHz (tanto PIC core como USB).

Esto es parte de una tabla de la hoja de datos:ingrese la descripción de la imagen aquí

En la tabla se puede ver que para un cristal de entrada de 20 MHz, si quiero que uC funcione a 48 MHz, debo configurar el modo de reloj en HSPPL y la División de reloj de MCU en 2. Al menos así es como entiendo la tabla. ¿Es correcta mi interpretación de la tabla?

Así es como configuré mi proyecto mikroC, basado en esa tabla:ingrese la descripción de la imagen aquí

¿Es esto correcto? ¿Funcionará uC a 48 MHz (12 MIPS)? Además, en el lado derecho (campo Frecuencia del oscilador [MHz]), ¿ingreso 20 MHz o 48 MHz?

Además, he notado (si no me equivoco) que puedo hacer que uC opere a 48 MHz con cristal de 4 MHz y cristal de 20 MHz. Si hay algún beneficio en el uso de cristal de 20 MHz? ¿O debería estar usando cristal de 4MHz?

Respuestas (1)

Primero: ¿Tiene un cristal de 20 MHz o un oscilador de cristal? Esas son dos cosas diferentes. Un oscilador de cristal generará por sí solo una señal de reloj de 20 MHz para el PIC y usted usa la opción de oscilador externo con él.

Por otro lado, el cristal de cuarzo es una parte externa del oscilador interno y los componentes internos junto con el cristal y los capacitores de carga forman un oscilador completo. En tal configuración, utiliza varios modos de cristal. También eche un vistazo a la figura 2.2 en la página 27 de la hoja de datos.

Ahora, para configurar esta parte correctamente, debe comprender algunas cosas, por lo que citaré la hoja de datos:

Cuando el PIC18F4550 se usa para conectividad USB, debe tener un reloj de 6 MHz o 48 MHz para la operación USB, dependiendo de si se usa el modo de baja velocidad o de velocidad completa.

Debe combinar las cosas para que el reloj USB sea de 48 MHz o 6 MHz y luego debe configurar la frecuencia de operación del microcontrolador para que funcione a la velocidad adecuada. Esos dos relojes pueden ser diferentes.

En la página 26 de la hoja de datos, tiene un buen diagrama que debe tomarse el tiempo para analizar. La entrada USB PLL espera una frecuencia de 4 MHz que utilizará para generar los 96 MHz de los que derivará la frecuencia operativa para USB y el microcontrolador.

En su captura de pantalla, los 20 MHz se dividen por 5 para obtener los 4 MHz necesarios para USB PLL, que luego aumenta a 96 MHz, como se ve en la sección del preescalador de PLL.

Luego tienes la sección del escalador posterior del reloj del sistema. Actualmente está configurado para usar los 96 MHz creados por USB PLL y divididos por 2 como el reloj principal del sistema. También tiene otras opciones para configurar el reloj del sistema principal. No puedo recordar exactamente cuáles son y acabo de formatear mi HDD, por lo que mikroC aún no está instalado. Deberían ofrecerle derivar el reloj del sistema de un oscilador interno o directamente del reloj utilizado para generar los 4 MHz para el USB PLL o, como se muestra en la captura de pantalla, de los 96 MHz generados por el USB PLL.

El punto aquí es que puede seleccionar independientemente el reloj principal y el reloj USB. Por ejemplo, si tiene un oscilador de 20 MHz, puede ejecutar el reloj principal del PIC a esos 20 MHz y, al mismo tiempo, ejecutar el reloj USB a los 48 MHz necesarios.

A continuación tienes la parte de selección del oscilador. Para los osciladores de cristal reales, debe usar las opciones EC y conectar la salida del oscilador al pin OSC1/CKLI (en su caso, el pin 9). Luego puede usar el oscilador de 20 MHz para controlar el PIC.

En caso de que esté usando un cristal, debe usar las opciones de cristal. Son XT, para cristales de baja frecuencia, hasta 4 MHz, y HS para cristales de alta frecuencia, hasta 20 MHz, si mal no recuerdo.

En cuanto a qué cristal es mejor, eso depende de muchas cosas, como qué cristal exacto está utilizando, sus características, las características del PLL utilizado en el PIC, etc.

Por lo general, los cristales de baja frecuencia se desplazan menos con el tiempo y producen una señal más limpia, mientras que los cristales de alta frecuencia a menudo dan como salida un armónico de alguna frecuencia más baja y la señal suele ser más débil. Yo mismo usaría el cristal de 4 MHz aquí.

También olvidé la última parte de su pregunta: en el campo "Frecuencia del oscilador", debe ingresar la frecuencia operativa efectiva del PIC, es decir, la frecuencia que ve el "reloj principal" en la figura 2.1 en la página 25 de la hoja de datos . En su caso particular, eso sería 48 MHz.

Entonces, para resumir esto: en la caja de cristal de 20 MHz, primero debe configurar la "selección del oscilador" en HSPLL. Eso dará 20 MHz en la entrada del "oscilador primario" en la figura 2.1 mencionada anteriormente. A continuación, debe configurar el preescalador PLL para dividir por 5, de modo que obtenga 4 MHz que se multiplican por 24 para obtener los 96 MHz para USB. A continuación, configure la "Selección de reloj USB" en 96 MHz dividido por 2 y configure la "Selección del escalador posterior del reloj del sistema" en 96 dividido por dos. Finalmente, establezca la frecuencia del oscilador en 48 MHz y habrá terminado con esta parte.

Para el cristal de 4 MHz, primero debe configurar HSPLL. Configure el preescalador PLL para dividir por 1 y luego configure la "Selección de reloj USB" en 96 MHz dividido por 2 y configure la "Selección del posescalador de reloj del sistema" en 96 dividido por dos y configure la frecuencia del Oscilador en 48 MHz y eso es todo.

Gracias por una respuesta tan grande :) Tengo cristal de 20 MHz, no oscilador (lo he corregido en la pregunta). Estoy un poco confundido con algunas cosas, así que intentaré preguntarlas aquí. 1) Estás hablando de múltiples unidades PLL. En la Figura 2-1 de la hoja de datos, solo puedo ver un PLL y dos escaladores posteriores configurables. También has mencionado el overclocking. No creo que esté haciendo eso, porque no puedo usar PLL directamente en la frecuencia de entrada (20 MHz). Continuaré este mensaje en otro comentario.
Si configuro el PIC para HSPLL, entonces los primeros 20 MHz se dividen entre 5 para obtener 4 MHz. PLL utiliza ese reloj de 4 MHz para generar un reloj de 96 MHz. Después de eso, tenemos el elemento CPUDVI (PLL postscaler) que divide 96 MHz por 2, y obtenemos una señal de reloj de 48 MHz que se usa como reloj principal. Por favor, dime si he entendido algo mal. Gracias :)
@ xx77aBs En realidad, creo que tiene razón acerca de dos PLL, por lo que se debe usar HSPLL. No recuerdo lo que estaba pensando en ese momento... Creo que tu segundo comentario tiene razón.
@xx77aBs En caso de duda, recuerde que siempre puede generar el reloj del sistema dividido por 4 en un pin y ver eso con un osciloscopio, contador, multímetro u otra cosa.