Skip to content
UniCircle
MediumNumericalCommunication protocols

UART frame time, throughput and baud-rate error

Question ECE-105

A UART runs at 9600 baud in 8N1 format. (a) How long does one byte take to send, and what is the maximum throughput in bytes per second? (b) An AVR microcontroller with a 16 MHz clock in normal asynchronous mode uses UBRR = f_clk/(16 × baud) − 1. What UBRR value would you use and what is the baud-rate error?

Show hints

8N1 means 1 start bit, 8 data bits, no parity and 1 stop bit.

Show the explanation

Worked answer.

(a) Frame time and throughput

  • Bit time = 1 / 9600 ≈ 104.17 µs.
  • An 8N1 frame = 1 start + 8 data + 1 stop = 10 bits.
  • Frame time = 10 × 104.17 µs ≈ 1.042 ms per byte.
  • Maximum throughput = 9600 / 10 = 960 bytes/s. Only 80% of the line rate carries data, because start and stop bits are overhead.

(b) Baud-rate register
UBRR = f_clk / (16 × baud) − 1 = 16,000,000 / (16 × 9600) − 1 = 104.17 − 1 = 103.17.
The register must hold an integer, so UBRR = 103.

Actual baud rate = f_clk / (16 × (UBRR + 1)) = 16,000,000 / (16 × 104) ≈ 9615.4 baud.
Error = (9615.4 − 9600) / 9600 × 100 ≈ +0.16%.

Is that acceptable? The receiver samples each bit near its middle and resynchronises on every start bit. By the time it reaches the stop bit of a 10-bit frame, a small mismatch has accumulated. A common rule of thumb is to keep the total mismatch between transmitter and receiver well under about 2% (often each side within about ±1% for 8N1). An error of 0.16% is comfortably inside this limit.

Check. 9615.4 / 10 ≈ 961.5 frames/s, very close to the ideal 960, which is consistent with a 0.16% error.

Why "baud" equals bits per second here. UART sends one bit per symbol, so baud and bit rate are the same. In schemes that send several bits per symbol (such as QAM), they differ.

Common mistake. Dividing 9600 by 8 and giving 1200 bytes/s, forgetting the start and stop bits.

Likely follow-up. "Why do some boards use an 11.0592 MHz or 18.432 MHz crystal?" Those frequencies divide exactly into standard baud rates, giving 0% error.

Original UniCircle question. Last reviewed 28 Oct 2026.