Velocidade mínima do ATMega328 com UART

9

Estou pensando em projetar um projeto de baixa energia que terá um ATMega328 em execução em baixa velocidade para menor consumo de energia.

O plano atual é conectar o UART a um receptor de link de RF para comunicação em 1200 baud.

O que estou querendo saber, no entanto, é qual é a velocidade mínima em que posso rodar um ATMega328 e ainda ter um UART de 1200 baud em execução. 1MHz é rápido o suficiente?

robzy
fonte

Respostas:

11

O relógio UART roda 16 vezes a taxa de transmissão. Então você poderia se safar com 19,2 kHz. 1 MHz vai ficar bem.

Na maioria das vezes, você executava a uma taxa de clock que fornece um divisor conveniente para gerar o clock da taxa de transmissão UART e ainda é mais rápido o suficiente para qualquer outro processamento necessário. Cada vez que um byte ou pacote é transmitido via UART, coloque a CPU em um modo de baixo consumo de energia e acorde novamente em uma interrupção quando mais dados estiverem prontos.

Clint Lawrence
fonte
Eu acho que a frase "O relógio UART roda 16 vezes a taxa de transmissão" é um pouco enganadora. O gerador de taxa de transmissão USART é executado no relógio do sistema / oscilador e é apenas pré-calibrado pelo valor UBRR. Além disso, depende do modo de operação. O fator 16 se aplica ao "modo normal assíncrono".
Rev1.0
1

Pela minha observação, não é viável executar o ATMega328p abaixo de 1Mhz para economizar energia (porque você precisará de mais tempo para concluir o cálculo). No entanto, reduzir a tensão resultará em alta economia de energia. Rodar em 1Mhz e 1,8V consome apenas 1% de energia se rodar em 16Mhz e 5V. Eu fiz este gráfico de consumo de energia ATMega328

De acordo com esta calculadora AVR UART, se você executar o seu AVR a 1 MHz (velocidade padrão sem cristal externo), poderá UART até 4800

Cano64
fonte