¿Por qué ATmega (por ejemplo, 328P o 644P) tiene CKDIV8
(o CLKPS = 0011
) programado de fábrica junto con un oscilador interno predeterminado de 8 MHz?
De la documentación del 644P: 6.12.2 CLKPR - Registro de preescala de reloj , página 40:
El fusible CKDIV8 determina el valor inicial de los bits CLKPS. Si CKDIV8 no está programado, los bits CLKPS se restablecerán a "0000". Si se programa CKDIV8, los bits CLKPS se restablecen a "0011", dando un factor de división de 8 al inicio. Esta función debe utilizarse si la fuente de reloj seleccionada tiene una frecuencia superior a la frecuencia máxima del dispositivo en las condiciones de funcionamiento actuales. [...] El software de la Aplicación debe garantizar que se elija un factor de división suficiente si la fuente de reloj seleccionada tiene una frecuencia más alta que la frecuencia máxima del dispositivo en las condiciones de funcionamiento presentes. El dispositivo se envía con el fusible CKDIV8 programado.
¿Es solo una precaución para asegurarse de que el reloj de la CPU no exceda, digamos, un límite de 16 MHz al configurar la MCU para que funcione con un oscilador externo de frecuencia demasiado alta (y olvidarse de cambiar en consecuencia) CLKPS
? ¿O hay otras razones?
Tenga en cuenta la dependencia de la velocidad de reloj máxima permitida en el voltaje de suministro: por ejemplo, el 644PV solo puede alcanzar los 4 MHz cuando se ejecuta a 1,8 V (similar para otros chips)
Si los controladores estuvieran programados a 8 MHz predeterminados, no podría programarlos en un circuito que funciona con un voltaje de suministro tan bajo. 1 MHz es una frecuencia predeterminada segura que cualquier AVR puede alcanzar con cualquier voltaje de suministro dentro de sus especificaciones.
Puede cambiar el oscilador interno a uno de 1 MHz y dejar el divisor de reloj sin programar, pero esto prohíbe ejecutar el controlador a una frecuencia de reloj más alta sin una fuente de reloj externa.
Es para compatibilidad lista para usar y fácil migración desde el ATmega163, que solo tiene un oscilador RC interno de 1 MHz (con otras frecuencias de reloj disponibles a través de un cristal o reloj externo).
Por supuesto, nadie usa/debería usar más el '163 en esta década, pero el legado continúa.
Puede deducirlo lógicamente de una serie de parámetros, todos los cuales tienen que ver con garantizar que el chip se pueda programar de manera segura en todas las condiciones de voltaje permitidas, desde la configuración de fábrica.
También puede ser útil la estandarización en una sola frecuencia en todos los dispositivos, lo que parece ser el caso, incluso si no es estrictamente necesario para algunos de los dispositivos.
nitro2k01