Velocidad mínima ATMega328 con UART

9

Estoy pensando en diseñar un proyecto de baja potencia que tenga un ATMega328 funcionando a baja velocidad para un menor consumo de energía.

El plan actual es tener el UART conectado a un receptor de enlace de RF para la comunicación a 1200baud.

Sin embargo, lo que me pregunto es cuál es la velocidad mínima en la que puedo ejecutar un ATMega328 y aún tener un UART de 1200baud en funcionamiento. ¿Es 1MHz lo suficientemente rápido?

robzy
fuente

Respuestas:

11

El reloj UART funciona a 16 veces la velocidad en baudios. Por lo tanto, podría salirse con la suya con 19.2 kHz. 1 MHz estará bien.

La mayoría de las veces, correría a una velocidad de reloj que proporciona un divisor conveniente para generar el reloj de velocidad de transmisión UART y aún es lo suficientemente más rápido para cualquier otro procesamiento que necesite realizar. Cada vez que se transmite un byte o paquete a través del UART, coloque la CPU en un modo de baja potencia y vuelva a despertarse con una interrupción cuando haya más datos listos.

Clint Lawrence
fuente
Creo que la frase "El reloj UART funciona a 16 veces la velocidad en baudios" es un poco engañosa. El generador de velocidad en baudios USART se ejecuta en el reloj del sistema / oscilador y solo se preescala por el valor UBRR. Además, depende del modo de operación. El factor 16 se aplica al "modo normal asincrónico".
Rev1.0
1

Según mi observación, no es viable ejecutar ATMega328p por debajo de 1Mhz para ahorrar energía (porque necesitará más tiempo de ejecución para finalizar el cálculo). Sin embargo, reducir el voltaje dará como resultado un alto ahorro de energía. Ejecutar a 1Mhz y 1.8V consume solo el 1% de energía si se ejecuta a 16Mhz y 5V. Hice esta tabla de consumo de energía ATMega328

De acuerdo con esta calculadora AVR UART, si ejecuta su AVR a 1MHz (velocidad predeterminada sin cristal externo), puede UART hasta 4800

Cano64
fuente