Entonces, antes de esto, solo trabajaba con MCU Atmel simples de 8 bits y me di cuenta de que en los esquemas de mi placa de desarrollo solo tenía un cristal de 12Mhz, sin embargo, la MCU funciona a hasta 100MHz. (Creo que el valor predeterminado es 80MHz. Solo lo hice más alto una vez por diversión. Es solo una línea simple en el código).
¿Como hace eso? ¿Por qué un Atmega328, por ejemplo, funciona a la velocidad de cristal utilizada?
Respuestas:
Esto no tiene nada que ver con que el núcleo sea un procesador ARM; se trata de cómo funciona el circuito de reloj:
En muchos sistemas como microcontroladores, chips RF, chips de audio, ... necesita generar un reloj más rápido que sea un múltiplo exacto de algún reloj de referencia (por ejemplo, un cristal externo).
Para ello, tiene un oscilador controlado por voltaje (VCO) que puede ajustar en frecuencia incorporando o disminuyendo un voltaje de control.
Ahora, simplemente configurando cualquier voltaje de control, puede hacer que oscile a una frecuencia aproximadamente en el "estadio" correcto, pero no a un múltiplo exacto de la frecuencia de entrada. Especialmente, los VCO pueden ser un poco a la deriva, por lo que la frecuencia también "vagará" continuamente por todo el lugar. Necesita controlar ese oscilador comparándolo con el oscilador de referencia.
La forma de hacerlo es empleando un bucle de fase bloqueada . La idea es simple:
Lo anterior es un bucle de control, bloqueado en la fase de, de ahí el nombre.
Para los microcontroladores "ricos", que tienen muchos periféricos y, por lo tanto, se benefician de tener múltiples relojes internamente, es habitual tener al menos 1 PLL. El ATMega328 es un poco extraño en ese sentido: es un microcontrolador relativamente rico en periféricos y relativamente hambriento de energía que todavía no tiene un PLL.
fuente
Algunos dispositivos tienen un PLL en ellos que puede multiplicar la frecuencia de cristal a frecuencias más altas. El ATMega328 no tiene un PLL, usa el cristal directamente.
fuente