
- •Features
- •Pin Configuration
- •Description
- •Block Diagram
- •Pin Descriptions
- •Port A (PA7..PA0)
- •Port B (PB7..PB0)
- •Port C (PC7..PC0)
- •Port D (PD7..PD0)
- •Port E (PE2..PE0)
- •RESET
- •XTAL1
- •XTAL2
- •Crystal Oscillator
- •EEPROM Data Memory
- •SRAM Data Memory
- •I/O Direct
- •Data Direct
- •Data Indirect with Displacement
- •Data Indirect
- •l/O Memory
- •Status Register – SREG
- •Stack Pointer – SP
- •Reset Sources
- •Power-on Reset
- •External Reset
- •Brown-out Detection
- •Watchdog Reset
- •Interrupt Handling
- •Interrupt Response Time
- •External Interrupts
- •Sleep Modes
- •Idle Mode
- •Power-down Mode
- •Power-save Mode
- •Timer/Counters
- •Timer Counter0 – TCNT0
- •Timer/Counter2 – TCNT2
- •Timer/Counter1
- •Timer/Counter1 in PWM Mode
- •Watchdog Timer
- •SS Pin Functionality
- •Data Modes
- •SPI Control Register – SPCR
- •SPI Status Register – SPSR
- •SPI Data Register – SPDR
- •UARTs
- •Data Transmission
- •Data Reception
- •UART Control
- •Baud Rate Generator
- •Analog Comparator
- •Interface to External Memory
- •I/O Ports
- •Port A
- •Port A Data Register – PORTA
- •Port A as General Digital I/O
- •Port A Schematics
- •Port B
- •Port B Data Register – PORTB
- •Port B as General Digital I/O
- •Port B Schematics
- •Port C
- •Port C Data Register – PORTC
- •Port C as General Digital I/O
- •Port C Schematics
- •Port D
- •Port D Data Register – PORTD
- •Port D as General Digital I/O
- •Alternate Functions of Port D
- •Port D Schematics
- •Port E
- •Port E Data Register – PORTE
- •Port E as General Digital I/O
- •Alternate Functions of Port E
- •Port E Schematics
- •Boot Loader Support
- •Setting the Boot Loader Lock Bits by SPM
- •Performing Page Erase by SPM
- •Fill the Temporary Buffer
- •Perform a Page Write
- •Reading the Fuse and Lock Bits from Software
- •Fuse Bits
- •Signature Bytes
- •Parallel Programming
- •Signal Names
- •Enter Programming Mode
- •Chip Erase
- •Programming the Flash
- •Programming the EEPROM
- •Reading the Flash
- •Reading the EEPROM
- •Programming the Fuse Bits
- •Programming the Lock Bits
- •Reading the Signature Bytes
- •Serial Downloading
- •Data Polling Flash
- •Data Polling EEPROM
- •Electrical Characteristics
- •Absolute Maximum Ratings*
- •External Data Memory Timing
- •Ordering Information
- •Packaging Information

ATmega161(L)
Baud Rate Generator
The baud rate generator is a frequency divider that generates baud rates according to the following equation:
BAUD fCK
= ---------------------------------
16(UBR + 1 )
•BAUD = Baud rate
•fCK= Crystal clock frequency
•UBR = Contents of the UBRRH and UBRR registers (0 - 4095)
•Note that this equation is not valid when the UART transmission speed is doubled. See “Double-speed Transmission” for a detailed description.
For standard crystal frequencies, the most commonly used baud rates can be generated by using the UBR settings in Table 24. UBR values that yield an actual baud rate differing less than 2% from the target baud rate are boldface in the table. However, using baud rates that have more than 1% error is not recommended. High error ratings give less noise resistance.
Table 24. UBR Settings at Various Crystal Frequencies
Baud Rate |
|
1 MHz |
%Error |
1.8432 MHz |
%Error |
|
2 MHz |
%Error |
2.4576 MHz |
%Error |
||
2400 |
UBR= |
25 |
0.2 |
UBR= |
47 |
0.0 |
UBR= |
51 |
0.2 |
UBR= |
63 |
0.0 |
4800 |
UBR= |
12 |
0.2 |
UBR= |
23 |
0.0 |
UBR= |
25 |
0.2 |
UBR= |
31 |
0.0 |
9600 |
UBR= |
6 |
7.5 |
UBR= |
11 |
0.0 |
UBR= |
12 |
0.2 |
UBR= |
15 |
0.0 |
14400 |
UBR= |
3 |
7.8 |
UBR= |
7 |
0.0 |
UBR= |
8 |
3.7 |
UBR= |
10 |
3.1 |
19200 |
UBR= |
2 |
7.8 |
UBR= |
5 |
0.0 |
UBR= |
6 |
7.5 |
UBR= |
7 |
0.0 |
28800 |
UBR= |
1 |
7.8 |
UBR= |
3 |
0.0 |
UBR= |
3 |
7.8 |
UBR= |
4 |
6.3 |
38400 |
UBR= |
1 |
22.9 |
UBR= |
2 |
0.0 |
UBR= |
2 |
7.8 |
UBR= |
3 |
0.0 |
57600 |
UBR= |
0 |
7.8 |
UBR= |
1 |
0.0 |
UBR= |
1 |
7.8 |
UBR= |
2 |
12.5 |
76800 |
UBR= |
0 |
22.9 |
UBR= |
1 |
33.3 |
UBR= |
1 |
22.9 |
UBR= |
1 |
0.0 |
115200 |
UBR= |
0 |
84.3 |
UBR= |
0 |
0.0 |
UBR= |
0 |
7.8 |
UBR= |
0 |
25.0 |
|
|
|
|
|
|
|
|
|
|
|||
Baud Rate |
3.2768 MHz |
%Error |
3.6864 MHz |
%Error |
|
4 MHz |
%Error |
4.608 MHz |
%Error |
|||
2400 |
UBR= |
84 |
0.4 |
UBR= |
95 |
0.0 |
UBR= |
103 |
0.2 |
UBR= |
119 |
0.0 |
4800 |
UBR= |
42 |
0.8 |
UBR= |
47 |
0.0 |
UBR= |
51 |
0.2 |
UBR= |
59 |
0.0 |
9600 |
UBR= |
20 |
1.6 |
UBR= |
23 |
0.0 |
UBR= |
25 |
0.2 |
UBR= |
29 |
0.0 |
14400 |
UBR= |
13 |
1.6 |
UBR= |
15 |
0.0 |
UBR= |
16 |
2.1 |
UBR= |
19 |
0.0 |
19200 |
UBR= |
10 |
3.1 |
UBR= |
11 |
0.0 |
UBR= |
12 |
0.2 |
UBR= |
14 |
0.0 |
28800 |
UBR= |
6 |
1.6 |
UBR= |
7 |
0.0 |
UBR= |
8 |
3.7 |
UBR= |
9 |
0.0 |
38400 |
UBR= |
4 |
6.3 |
UBR= |
5 |
0.0 |
UBR= |
6 |
7.5 |
UBR= |
7 |
6.7 |
57600 |
UBR= |
3 |
12.5 |
UBR= |
3 |
0.0 |
UBR= |
3 |
7.8 |
UBR= |
4 |
0.0 |
76800 |
UBR= |
2 |
12.5 |
UBR= |
2 |
0.0 |
UBR= |
2 |
7.8 |
UBR= |
3 |
6.7 |
115200 |
UBR= |
1 |
12.5 |
UBR= |
1 |
0.0 |
UBR= |
1 |
7.8 |
UBR= |
2 |
20.0 |
|
|
|
|
|
|
|
|
|
|
|||
Baud Rate |
7.3728 MHz |
%Error |
|
8 MHz |
%Error |
9.216 MHz |
%Error |
11.059 MHz |
%Error |
|||
2400 |
UBR= |
191 |
0.0 |
UBR= |
207 |
0.2 |
UBR= |
239 |
0.0 |
UBR= |
287 |
- |
4800 |
UBR= |
95 |
0.0 |
UBR= |
103 |
0.2 |
UBR= |
119 |
0.0 |
UBR= |
143 |
0.0 |
9600 |
UBR= |
47 |
0.0 |
UBR= |
51 |
0.2 |
UBR= |
59 |
0.0 |
UBR= |
71 |
0.0 |
14400 |
UBR= |
31 |
0.0 |
UBR= |
34 |
0.8 |
UBR= |
39 |
0.0 |
UBR= |
47 |
0.0 |
19200 |
UBR= |
23 |
0.0 |
UBR= |
25 |
0.2 |
UBR= |
29 |
0.0 |
UBR= |
35 |
0.0 |
28800 |
UBR= |
15 |
0.0 |
UBR= |
16 |
2.1 |
UBR= |
19 |
0.0 |
UBR= |
23 |
0.0 |
38400 |
UBR= |
11 |
0.0 |
UBR= |
12 |
0.2 |
UBR= |
14 |
0.0 |
UBR= |
17 |
0.0 |
57600 |
UBR= |
7 |
0.0 |
UBR= |
8 |
3.7 |
UBR= |
9 |
0.0 |
UBR= |
11 |
0.0 |
76800 |
UBR= |
5 |
0.0 |
UBR= |
6 |
7.5 |
UBR= |
7 |
6.7 |
UBR= |
8 |
0.0 |
115200 |
UBR= |
3 |
0.0 |
UBR= |
3 |
7.8 |
UBR= |
4 |
0.0 |
UBR= |
5 |
0.0 |
75
1228B–09/01

UART0 and UART1 High Byte
Baud Rate Register UBRRHI
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bit |
7 |
6 |
|
5 |
|
4 |
3 |
2 |
1 |
0 |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$20 ($40) |
MSB1 |
|
|
|
|
|
|
LSB1 |
MSB0 |
|
|
LSB0 |
UBRRHI |
|
|
|
|
|
|
|
|
|
|
|
|
||
Read/Write |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
||||
Initial Value |
0 |
0 |
|
0 |
|
0 |
0 |
0 |
0 |
0 |
|
The UART baud register is a 12-bit register. The four most significant bits are located in a separate register, UBRRHI. Note that both UART0 and UART1 share this register. Bit 7 to bit 4 of UBRRHI contain the four most significant bits of the UART1 baud register. Bit 3 to bit 0 contain the four most significant bits of the UART0 baud register.
UART0 Baud Rate Register
Low Byte – UBRR0
UART1 Baud Rate Register
Low Byte – UBRR1
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
$09 ($29) |
MSB |
|
|
|
|
|
|
LSB |
UBRR0 |
|
|
|
|
|
|
|
|
|
|
Read/Write |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
Initial Value |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
$00 ($20) |
MSB |
|
|
|
|
|
|
LSB |
UBRR1 |
|
|
|
|
|
|
|
|
|
|
Read/Write |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
Initial Value |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
UBRRn stores the eight least significant bits of the UART baud rate register.
76 ATmega161(L)
1228B–09/01

ATmega161(L)
Double-speed
Transmission
The ATmega161 provides a separate UART mode that allows the user to double the communication speed. By setting the U2X bit in UART Control and Status Register UCSRnA, the UART speed will be doubled. The data reception will differ slightly from normal mode. Since the speed is doubled, the receiver front-end logic samples the signals on RXDn pin at a frequency 8 times the baud rate. While the line is idle, one single sample of logical “0” will be interpreted as the falling edge of a start bit, and the start bit detection sequence is initiated. Let sample 1 denote the first zero-sample. Following the 1-to-0 transition, the receiver samples the RXDn pin at samples 4, 5 and 6. If two or more of these three samples are found to be logical “1”s, the start bit is rejected as a noise spike and the receiver starts looking for the next 1-to-0 transition.
If, however, a valid start bit is detected, sampling of the data bits following the start bit is performed. These bits are also sampled at samples 4, 5 and 6. The logical value found in at least two of the three samples is taken as the bit value. All bits are shifted into the transmitter shift register as they are sampled. Sampling of an incoming character is shown in Figure 48.
Figure 48. Sampling Received Data when the Transmission Speed is Doubled
RXD
START BIT |
D0 |
D1 |
D2 |
D3 |
D4 |
D5 |
D6 |
D7 |
STOP BIT |
RECEIVER
SAMPLING
The Baud Rate Generator in |
Note that the baud rate equation is different from the equation on page 75 when the |
Double UART Speed Mode |
UART speed is doubled: |
|
fCK |
|
BAUD = 8(UBR------------------------------+ 1 ) |
|
• BAUD = Baud rate |
|
• fCK= Crystal Clock frequency |
|
• UBR = Contents of the UBRRHI and UBRR registers (0 - 4095) |
|
• Note that this equation is only valid when the UART transmission speed is doubled. |
|
For standard crystal frequencies, the most commonly used baud rates can be generated |
|
by using the UBR settings in Table 24. UBR values that yield an actual baud rate differ- |
|
ing less than 1.5% from the target baud rate are boldface in the table. However, since |
|
the number of samples are reduced and the system clock might have some variance |
|
(this applies especially when using resonators), it is recommended that the baud rate |
|
error be less than 0.5%. |
77
1228B–09/01

Table 25. UBR Settings at Various Crystal Frequencies in Double-speed Mode
Baud Rate |
1.0000 MHz |
% Error |
1.8432 MHz |
% Error |
2.0000 MHz |
% Error |
|
|
|
|
|
|
|
2400 |
UBR = 51 |
0.2 |
UBR = 95 |
0.0 |
UBR = 103 |
0.2 |
4800 |
UBR = 25 |
0.2 |
UBR = 47 |
0.0 |
UBR = 51 |
0.2 |
9600 |
UBR = 12 |
0.2 |
UBR = 23 |
0.0 |
UBR = 25 |
0.2 |
14400 |
UBR = 8 |
3.7 |
UBR = 15 |
0.0 |
UBR = 16 |
2.1 |
19200 |
UBR = 6 |
7.5 |
UBR = 11 |
0.0 |
UBR = 12 |
0.2 |
28800 |
UBR = 3 |
7.8 |
UBR = 7 |
0.0 |
UBR = 8 |
3.7 |
38400 |
UBR = 2 |
7.8 |
UBR = 5 |
0.0 |
UBR = 6 |
7.5 |
57600 |
UBR = 1 |
7.8 |
UBR = 3 |
0.0 |
UBR = 3 |
7.8 |
76800 |
UBR = 1 |
22.9 |
UBR = 2 |
0.0 |
UBR = 2 |
7.8 |
115200 |
UBR = 0 |
84.3 |
UBR = 1 |
0.0 |
UBR = 1 |
7.8 |
230400 |
- |
- |
UBR = 0 |
0.0 |
UBR = 0 |
84.3 |
|
|
|
|
|
|
|
Baud Rate |
3.2768 MHz |
% Error |
3.6864 MHz |
% Error |
4.0000 MHz |
% Error |
|
|
|
|
|
|
|
2400 |
UBR = 170 |
0.2 |
UBR = 191 |
0.0 |
UBR = 207 |
0.2 |
4800 |
UBR = 84 |
0.4 |
UBR = 95 |
0.0 |
UBR = 103 |
0.2 |
9600 |
UBR = 42 |
0.8 |
UBR = 47 |
0.0 |
UBR = 51 |
0.2 |
14400 |
UBR = 27 |
1.6 |
UBR = 31 |
0.0 |
UBR = 34 |
0.8 |
19200 |
UBR = 20 |
1.6 |
UBR = 23 |
0.0 |
UBR = 25 |
0.2 |
28800 |
UBR = 13 |
1.6 |
UBR = 15 |
0.0 |
UBR = 16 |
2.1 |
38400 |
UBR = 10 |
3.1 |
UBR = 11 |
0.0 |
UBR = 12 |
0.2 |
57600 |
UBR = 6 |
1.6 |
UBR = 7 |
0.0 |
UBR = 8 |
3.7 |
76800 |
UBR = 4 |
6.2 |
UBR = 5 |
0.0 |
UBR = 6 |
7.5 |
115200 |
UBR = 3 |
12.5 |
UBR = 3 |
0.0 |
UBR = 3 |
7.8 |
230400 |
UBR = 1 |
12.5 |
UBR = 1 |
0.0 |
UBR = 1 |
7.8 |
460800 |
UBR = 0 |
12.5 |
UBR = 0 |
0.0 |
UBR = 0 |
7.8 |
912600 |
- |
- |
- |
- |
UBR = 0 |
84.3 |
|
|
|
|
|
|
|
Baud Rate |
7.3728 MHz |
% Error |
8.0000 MHz |
% Error |
9.2160 MHz |
% Error |
|
|
|
|
|
|
|
2400 |
UBR = 383 |
0.0 |
UBR = 416 |
0.1 |
UBR = 479 |
0.0 |
4800 |
UBR = 191 |
0.0 |
UBR = 207 |
0.2 |
UBR = 239 |
0.0 |
9600 |
UBR = 95 |
0.0 |
UBR = 103 |
0.2 |
UBR = 119 |
0.0 |
14400 |
UBR = 63 |
0.0 |
UBR = 68 |
0.6 |
UBR = 79 |
0.0 |
19200 |
UBR = 47 |
0.0 |
UBR = 51 |
0.2 |
UBR = 59 |
0.0 |
28800 |
UBR = 31 |
0.0 |
UBR = 34 |
0.8 |
UBR = 39 |
0.0 |
38400 |
UBR = 23 |
0.0 |
UBR = 25 |
0.2 |
UBR = 29 |
0.0 |
57600 |
UBR = 15 |
0.0 |
UBR = 16 |
2.1 |
UBR = 19 |
0.0 |
76800 |
UBR = 11 |
0.0 |
UBR = 12 |
0.2 |
UBR = 14 |
0.0 |
115200 |
UBR = 7 |
0.0 |
UBR = 8 |
3.7 |
UBR = 9 |
0.0 |
230400 |
UBR = 3 |
0.0 |
UBR = 3 |
7.8 |
UBR = 4 |
0.0 |
460800 |
UBR = 1 |
0.0 |
UBR = 1 |
7.8 |
UBR = 2 |
20.0 |
912600 |
UBR = 0 |
0.0 |
UBR = 0 |
7.8 |
UBR = 0 |
20.0 |
|
|
|
|
|
|
|
78 ATmega161(L)
1228B–09/01