Velocidad mínima ATMega328 con UART

Estoy pensando en diseñar un proyecto de bajo consumo de energía que tendrá un ATMega328 funcionando a baja velocidad para reducir el consumo de energía.

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

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

Respuestas (2)

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

La mayoría de las veces, se ejecutaría a una velocidad de reloj que proporcione un divisor conveniente para generar el reloj de velocidad en baudios de UART y aún sea lo suficientemente rápido para cualquier otro procesamiento que necesite realizar. Cada vez que se transmite un byte o paquete a través del UART, ponga la CPU en un modo de bajo consumo y vuelva a activarse con una interrupción cuando haya más datos listos.

Creo que la oración "El reloj UART funciona a 16 veces la velocidad en baudios" es un poco engañosa. El generador de velocidad en baudios de USART se ejecuta en el reloj del sistema/oscilador y solo está preescalado por el valor UBRR. Además, depende del modo de funcionamiento. El factor 16 se aplica al "modo normal asíncrono".

Según mi observación, no es viable ejecutar ATMega328p por debajo de 1Mhz para ahorrar energía (porque necesitará más tiempo para finalizar el cálculo). Sin embargo, reducir el voltaje resultará en un gran ahorro de energía. El funcionamiento a 1 Mhz y 1,8 V consume solo el 1 % de la energía si se ejecuta a 16 Mhz y 5 V. Hice este gráfico 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