Ir para o conteúdo

Comunicação serial: baud rate, tempo de transmissão e UBRR do AVR com o erro

Informe o baud rate, os bytes, os bits por caractere e o clock do AVR: veja o tempo por bit, o tempo de transmissão, o valor de UBRR com o erro do baud rate, com e sem U2X.

  • Roda no seu navegador

Entrada

Valor típico, confira o do seu dispositivo: 9.600 e 115.200 são comuns.

Quantidade de bytes.

8N1 são 10 bits: início, 8 de dados e parada. Outros formatos têm de 10 a 12.

A frequência do clock do AVR.

Resultado

O resultado aparece aqui.

Tempo por bit, tempo de transmissão e UBRR

t_bit = 1 ÷ baud | tempo = bytes × bits por caractere ÷ baud | 8N1 = 10 bits por byte

UBRR = fclk ÷ (16 × baud) − 1 (arredondado) | com U2X: fclk ÷ (8 × baud) − 1 | erro = baud real ÷ baud − 1

No formato 8N1, cada byte leva 1 bit de início, 8 de dados e 1 de parada: 10 bit-times. Outros formatos, como 7E1, 8N2 e 8E1, têm de 10 a 12 bits por caractere, e o campo de bits é editável. O cálculo de UBRR vale para o AVR clássico, como o ATmega328P, no modo assíncrono normal, com registrador de 12 bits.

Quatro configurações

A 9.600 baud, cada bit dura 104,167 µs e 100 bytes levam 104,167 ms. Com clock de 16 MHz, UBRR é 103, com erro de 0,16%. A 115.200 baud, UBRR é 8 e o erro, −3,55%; com U2X, são 16 e 2,12%.

Com 8 MHz e 57.600 baud, UBRR é 8, erro de −3,55%, e com U2X, 16 e 2,12%. Em 300 baud com 1 MHz, UBRR é 207 e o erro, 0,16%.

BaudClock (MHz)UBRRErro (%)UBRR com U2XErro com U2X (%)
9.600161030,162070,16
115.200168−3,55162,12
57.60088−3,55162,12

Limites do AVR e da conta

  • As fórmulas valem para o AVR clássico. Famílias novas, como megaAVR-0 e AVR-Dx, usam outra fórmula fracionária; consulte o datasheet do seu chip.
  • Os baud rates usuais, como 9.600 e 115.200, são taxas comuns de comunicação, não uma série normalizada. O campo é livre.
  • Um erro de baud acima de poucos por cento pode causar erros de recepção; o limite depende dos dois lados da comunicação. Confira o datasheet.

Perguntas frequentes

Como funciona uma calculadora de baud rate?

Ela acha o tempo por bit, o tempo de transmissão e o UBRR do AVR. A 9.600 baud com clock de 16 MHz, o bit dura 104,167 µs.

Como calcular o valor de UBRR para um baud rate?

Use UBRR = fclk ÷ (16 × baud) − 1, arredondado. Com 16 MHz e 9.600 baud, UBRR é 103, com erro de 0,16%.

Quanto tempo leva uma transmissão serial 8N1?

Cada byte usa 10 bits: tempo = bytes × 10 ÷ baud. 100 bytes a 9.600 baud levam 104,167 ms.