Primero: ¿Tienes un oscilador de cristal o cristal de 20 MHz? 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 otra parte, el cristal de cuarzo es una parte externa del oscilador interno y los componentes internos, junto con el cristal y los condensadores de carga forman un oscilador completo. En dicha configuración, se utilizan varios modos de cristal. También vea la figura 2.2 en la página 27 de la hoja de datos.
Ahora para configurar esta parte correctamente, necesita entender algunas cosas, así que citaré la hoja de datos:
Cuando el PIC18F4550 se usa para conectividad USB, debe tener cualquiera
un reloj de 6 MHz o 48 MHz para operación USB, dependiendo de si
Se está utilizando 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 bonito diagrama que debería tomar tiempo para analizar. La entrada USB PLL espera una frecuencia de 4 MHz que utilizará para generar los 96 MHz a partir de los cuales 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 el USB PLL, que luego aumenta a 96 MHz, como se ve en la sección del preescalador del PLL.
Luego tienes la sección de 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 qué son y acabo de formatear mi disco duro, por lo que mikroC aún no está instalado. Deben ofrecerle derivar el reloj del sistema desde un oscilador interno o directamente desde el 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 real, debe usar las opciones de EC y conectar la salida del oscilador al pin OSC1 / CKLI (en su caso, el pin 9). Luego puede utilizar el oscilador de 20 MHz para controlar el PIC.
En caso de que estés usando un cristal, necesitas 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 recuerdo correctamente.
En cuanto a qué cristal es mejor, bueno, eso depende de muchas cosas, como el cristal exacto que 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 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 de operación efectiva del PIC, es decir, la frecuencia del "reloj primario" en la figura 2.1 en la página 25 de la hoja de datos ve. En su caso particular, eso sería 48 MHz.
Para resumir: en el caso del 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 96 MHz para USB. A continuación, configure la "Selección de reloj USB" a 96 MHz dividida por 2 y configure la "Selección de clasificador posterior del reloj del sistema" a 96 dividida por dos. Finalmente, configure la frecuencia del oscilador a 48 MHz y habrá terminado con esta parte.
Para el cristal de 4 MHz, primero debe configurar HSPLL. Configure el prescaler PLL para que se divida entre 1 y luego configure la "selección de reloj USB" a 96 MHz dividida entre 2 y establezca la "selección de poscaler de reloj del sistema" a 96 dividida entre dos y establezca la frecuencia del Oscilador a 48 MHz. / p>