Árbol de relojes
La red de osciladores, multiplicadores y divisores que decide a qué frecuencia funciona cada parte de un microcontrolador, y si recibe reloj siquiera.
En la raíz hay una o varias fuentes: un oscilador RC interno que arranca al instante pero deriva con la temperatura, un cristal externo preciso pero que tarda milisegundos en estabilizarse y, a menudo, un cristal de 32,768 kHz para el reloj de tiempo real. Un PLL multiplica la frecuencia y los prescalers la dividen para los distintos buses. Cada periférico cuelga al final de una rama, detrás de su propia compuerta.
Esa compuerta explica uno de los fallos más comunes del firmware: configuras una UART con todo detalle y no pasa nada, porque nunca se le activó el reloj. El árbol no solo gobierna la velocidad. Un reloj de núcleo más alto exige más estados de espera en la flash, las velocidades en baudios se derivan del reloj del bus y el clock gating es la primera herramienta cuando hay que bajar el consumo. Los fabricantes ofrecen herramientas gráficas para dibujar el árbol, lo que dice bastante de lo divertido que es hacerlo a mano.