4 votos

ATmega - ¿Por qué el preescalador viene por defecto a 8?

¿Por qué los ATmega (por ejemplo, 328P o 644P) tienen CKDIV8 (o CLKPS = 0011 ) programado de fábrica junto con un oscilador interno de 8 MHz por defecto?

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 está sin programar, los bits CLKPS se pondrán a cero a "0000". Si CKDIV8 está programado, los bits CLKPS se reinician a "0011", dando un factor de división de 8 en el arranque. Esta característica debe utilizarse si la fuente de reloj seleccionada tiene una frecuencia superior a la frecuencia máxima del dispositivo en las condiciones actuales de funcionamiento. [El software de aplicación debe asegurarse de que se elige un factor de división suficiente si la fuente de reloj seleccionada tiene una frecuencia superior a la frecuencia máxima del dispositivo en las condiciones actuales de funcionamiento. El dispositivo se entrega con el fusible CKDIV8 programado.

¿Es sólo una precaución para asegurar que el reloj de la CPU no supere, por ejemplo, un límite de 16 MHz cuando se configura la MCU para que funcione con un oscilador externo de frecuencia demasiado alta (y se olvida de cambiar CLKPS en consecuencia). ¿O hay otras razones?

10voto

asdfex Puntos 221

Tenga en cuenta la dependencia de la velocidad de reloj máxima permitida con respecto a la tensión de alimentación: Por ejemplo, el 644PV sólo puede alcanzar los 4 MHz cuando funciona a 1,8V (similar para otros chips)

Si los controladores estuvieran programados a 8 MHz por defecto, no podrías programarlos en un circuito que funcionara con una tensión de alimentación tan baja. 1 MHz es una frecuencia por defecto segura que cualquier AVR puede alcanzar con cualquier tensión de alimentación dentro de sus especificaciones.

Podrías cambiar el oscilador interno a uno de 1 MHz y dejar el divisor de reloj sin programar, pero esto prohíbe hacer funcionar el controlador a una velocidad de reloj mayor sin una fuente de reloj externa.

5voto

chrisbunney Puntos 228

Se trata de una compatibilidad inmediata y una fácil migración desde el ATmega163, que sólo tiene un oscilador RC interno de 1MHz (con otras velocidades de reloj disponibles a través de un cristal o reloj externo).

Por supuesto, nadie usa/debería usar ya el '163 en esta década, pero el legado continúa.

2 votos

Parece muy impar que ese legado provenga de un modelo de chip específico, del cual el '328 no es ni siquiera una vía de actualización natural. No sé si el '163 y el '644 son compatibles a nivel binario, pero no he podido encontrar ninguna mención al respecto en la hoja de datos del '644. Para contrastar, por ejemplo, el '162 tiene específicamente un modo de compatibilidad con el '161, la gama tiny25 tiene un modo tiny15 y así sucesivamente. La explicación más probable es que estandarizaron en 1 MHz para permitir que cualquier dispositivo sea programado con seguridad bajo cualquier voltaje permitido.

1voto

Sarah Puntos 33

Se puede deducir lógicamente de una serie de parámetros, todos los cuales tienen que ver con la garantía de que el chip se puede programar con seguridad en todas las condiciones de tensión permitidas, a partir de los ajustes de fábrica.

  • Los dispositivos AVR requieren un reloj válido para ser programados. Si quieres usar el oscilador RC, no deberías tener que añadir un cristal o una señal de reloj externa sólo para programar el dispositivo. Conclusión: Los bits del fusible deben ser programados para que el chip funcione con el oscilador RC desde la fábrica.
  • El oscilador RC debe calibrarse a un valor lo suficientemente rápido como para ser útil en general, y a la vez tener una precisión suficiente. Probablemente Atmel decidió en algún momento que 8 MHz era un punto óptimo. Conclusión: se eligió 8 MHz como punto de calibración para el oscilador RC en la mayoría de los dispositivos AVR.
  • No todos los dispositivos pueden funcionar a 8 MHz en todas las condiciones de tensión. Conclusión: Atmel estandarizó la división del reloj por 8, lo que da lugar a un reloj de 1 MHz, que es seguro para cualquier dispositivo.

También puede ser útil estandarizar una única frecuencia en todos los dispositivos, como parece ser el caso, aunque no sea estrictamente necesario para algunos de ellos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X