Atmega328p Reference Manual (251-448)
Atmega328p Reference Manual (251-448)
ADIE
ADIF
15 0
ADC MULTIPLEXER ADC CTRL. & STATUS ADC DATA REGISTER
SELECT (ADMUX) REGISTER (ADCSRA) (ADCH/ADCL)
REFS1
ADLAR
MUX3
MUX2
MUX1
MUX0
REFS0
ADPS2
ADPS1
ADPS0
ADEN
ADSC
ADFR
ADIF
ADC[9:0]
MUX DECODER
PRESCALER
CHANNEL SELECTION
CONVERSION LOGIC
AVCC
INTERNAL 1.1V
REFERENCE SAMPLE & HOLD
COMPARATOR
AREF
10-BIT DAC -
+
TEMPERATURE
SENSOR
GND
BANDGAP
REFERENCE
ADC7
ADC5
ADC4
ADC3
ADC2
ADC1
ADC0
The analog input channel is selected by writing to the MUX bits in ADMUX. Any of the ADC input
pins, as well as GND and a fixed bandgap voltage reference, can be selected as single ended
inputs to the ADC. The ADC is enabled by setting the ADC Enable bit, ADEN in ADCSRA. Volt-
age reference and input channel selections will not go into effect until ADEN is set. The ADC
does not consume power when ADEN is cleared, so it is recommended to switch off the ADC
before entering power saving sleep modes.
The ADC generates a 10-bit result which is presented in the ADC Data Registers, ADCH and
ADCL. By default, the result is presented right adjusted, but can optionally be presented left
adjusted by setting the ADLAR bit in ADMUX.
If the result is left adjusted and no more than 8-bit precision is required, it is sufficient to read
ADCH. Otherwise, ADCL must be read first, then ADCH, to ensure that the content of the Data
Registers belongs to the same conversion. Once ADCL is read, ADC access to Data Registers
is blocked. This means that if ADCL has been read, and a conversion completes before ADCH is
251
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
read, neither register is updated and the result from the conversion is lost. When ADCH is read,
ADC access to the ADCH and ADCL Registers is re-enabled.
The ADC has its own interrupt which can be triggered when a conversion completes. When ADC
access to the Data Registers is prohibited between reading of ADCH and ADCL, the interrupt
will trigger even if the result is lost.
ADTS[2:0]
PRESCALER
START CLKADC
ADIF ADATE
SOURCE 1
. CONVERSION
. LOGIC
.
. EDGE
SOURCE n DETECTOR
ADSC
Using the ADC Interrupt Flag as a trigger source makes the ADC start a new conversion as soon
as the ongoing conversion has finished. The ADC then operates in Free Running mode, con-
stantly sampling and updating the ADC Data Register. The first conversion must be started by
writing a logical one to the ADSC bit in ADCSRA. In this mode the ADC will perform successive
conversions independently of whether the ADC Interrupt Flag, ADIF is cleared or not.
252
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
If Auto Triggering is enabled, single conversions can be started by writing ADSC in ADCSRA to
one. ADSC can also be used to determine if a conversion is in progress. The ADSC bit will be
read as one during a conversion, independently of how the conversion was started.
ADEN
START Reset
7-BIT ADC PRESCALER
CK
CK/128
CK/64
CK/32
CK/16
CK/2
CK/4
CK/8
ADPS0
ADPS1
ADPS2
By default, the successive approximation circuitry requires an input clock frequency between 50
kHz and 200 kHz to get maximum resolution. If a lower resolution than 10 bits is needed, the
input clock frequency to the ADC can be higher than 200 kHz to get a higher sample rate.
The ADC module contains a prescaler, which generates an acceptable ADC clock frequency
from any CPU frequency above 100 kHz. The prescaling is set by the ADPS bits in ADCSRA.
The prescaler starts counting from the moment the ADC is switched on by setting the ADEN bit
in ADCSRA. The prescaler keeps running for as long as the ADEN bit is set, and is continuously
reset when ADEN is low.
When initiating a single ended conversion by setting the ADSC bit in ADCSRA, the conversion
starts at the following rising edge of the ADC clock cycle.
A normal conversion takes 13 ADC clock cycles. The first conversion after the ADC is switched
on (ADEN in ADCSRA is set) takes 25 ADC clock cycles in order to initialize the analog circuitry.
When the bandgap reference voltage is used as input to the ADC, it will take a certain time for
the voltage to stabilize. If not stabilized, the first value read after the first conversion may be
wrong.
The actual sample-and-hold takes place 1.5 ADC clock cycles after the start of a normal conver-
sion and 13.5 ADC clock cycles after the start of an first conversion. When a conversion is
complete, the result is written to the ADC Data Registers, and ADIF is set. In Single Conversion
mode, ADSC is cleared simultaneously. The software may then set ADSC again, and a new
conversion will be initiated on the first rising ADC clock edge.
When Auto Triggering is used, the prescaler is reset when the trigger event occurs. This assures
a fixed delay from the trigger event to the start of conversion. In this mode, the sample-and-hold
takes place two ADC clock cycles after the rising edge on the trigger source signal. Three addi-
tional CPU clock cycles are used for synchronization logic.
253
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
In Free Running mode, a new conversion will be started immediately after the conversion com-
pletes, while ADSC remains high. For a summary of conversion times, see Table 23-1 on page
255.
Figure 23-4. ADC Timing Diagram, First Conversion (Single Conversion Mode)
Next
First Conversion Conversion
Cycle Number 1 2 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 2 3
ADC Clock
ADEN
ADSC
ADIF
Cycle Number 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3
ADC Clock
ADSC
ADIF
Cycle Number 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2
ADC Clock
Trigger
Source
ADATE
ADIF
254
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
11 12 13 1 2 3 4
Cycle Number
ADC Clock
ADSC
ADIF
255
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
256
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
IIH
ADCn
1..100 kΩ
CS/H= 14 pF
IIL
VCC/2
257
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
and ADC5) will only affect the conversion on ADC4 and ADC5 and not the other ADC
channels.
PC4 (ADC4/SDA)
PC5 (ADC5/SCL)
PC2 (ADC2)
GND
VCC
PC1 (ADC1)
PC0 (ADC0)
ADC7
GND
10µH
AREF
ADC6
100nF
AVCC
PB5
258
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Ideal ADC
Actual ADC
Offset
Error
VREF Input Voltage
• Gain error: After adjusting for offset, the gain error is found as the deviation of the last transition
(0x3FE to 0x3FF) compared to the ideal transition (at 1.5 LSB below maximum). Ideal value: 0
LSB
Ideal ADC
Actual ADC
• Integral Non-linearity (INL): After adjusting for offset and gain error, the INL is the maximum
deviation of an actual transition compared to an ideal transition for any code. Ideal value: 0
LSB.
259
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
INL
Ideal ADC
Actual ADC
• Differential Non-linearity (DNL): The maximum deviation of the actual code width (the interval
between two adjacent transitions) from the ideal code width (1 LSB). Ideal value: 0 LSB.
1 LSB
DNL
0x000
• Quantization Error: Due to the quantization of the input voltage into a finite number of codes, a
range of input voltages (1 LSB wide) will code to the same value. Always ±0.5 LSB.
• Absolute accuracy: The maximum deviation of an actual (unadjusted) transition compared to
an ideal transition for any code. This is the compound effect of offset, gain error, differential
error, non-linearity, and quantization error. Ideal value: ±0.5 LSB.
260
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
V IN ⋅ 1024
ADC = --------------------------
V REF
where VIN is the voltage on the selected input pin and VREF the selected voltage reference (see
Table 23-3 on page 262 and Table 23-4 on page 263). 0x000 represents analog ground, and
0x3FF represents the selected reference voltage minus one LSB.
The values described in Table 23-2 are typical values. However, due to the process variation the
temperature sensor output voltage varies from one chip to another. To be capable of achieving
more accurate results the temperature measurement can be calibrated in the application soft-
ware. The software calibration requires that a calibration value is measured and stored in a
register or EEPROM for each chip, as a part of the production test. The software calibration can
be done utilizing the formula:
T = { [(ADCH << 8) | ADCL] - TOS} / k
where ADCn are the ADC data registers, k is a fixed coefficient and TOS is the temperature sen-
sor offset value determined and stored into EEPROM as a part of the production test.
261
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Bit 7 6 5 4 3 2 1 0
(0x7C) REFS1 REFS0 ADLAR – MUX3 MUX2 MUX1 MUX0 ADMUX
Read/Write R/W R/W R/W R R/W R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0
262
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
263
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
264
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
23.9.3.1 ADLAR = 0
Bit 15 14 13 12 11 10 9 8
(0x79) – – – – – – ADC9 ADC8 ADCH
(0x78) ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 ADCL
7 6 5 4 3 2 1 0
Read/Write R R R R R R R R
R R R R R R R R
Initial Value 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
23.9.3.2 ADLAR = 1
Bit 15 14 13 12 11 10 9 8
(0x79) ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADCH
(0x78) ADC1 ADC0 – – – – – – ADCL
7 6 5 4 3 2 1 0
Read/Write R R R R R R R R
R R R R R R R R
Initial Value 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
When an ADC conversion is complete, the result is found in these two registers.
When ADCL is read, the ADC Data Register is not updated until ADCH is read. Consequently, if
the result is left adjusted and no more than 8-bit precision is required, it is sufficient to read
ADCH. Otherwise, ADCL must be read first, then ADCH.
The ADLAR bit in ADMUX, and the MUXn bits in ADMUX affect the way the result is read from
the registers. If ADLAR is set, the result is left adjusted. If ADLAR is cleared (default), the result
is right adjusted.
265
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
trigger signal. If ADEN in ADCSRA is set, this will start a conversion. Switching to Free Running
mode (ADTS[2:0]=0) will not cause a trigger event, even if the ADC Interrupt Flag is set.
266
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
24.1 Features
• Complete Program Flow Control
• Emulates All On-chip Functions, Both Digital and Analog, except RESET Pin
• Real-time Operation
• Symbolic Debugging Support (Both at C and Assembler Source Level, or for Other HLLs)
• Unlimited Number of Program Break Points (Using Software Break Points)
• Non-intrusive Operation
• Electrical Characteristics Identical to Real Device
• Automatic Configuration System
• High-Speed Operation
• Programming of Non-volatile Memories
24.2 Overview
The debugWIRE On-chip debug system uses a One-wire, bi-directional interface to control the
program flow, execute AVR instructions in the CPU and to program the different non-volatile
memories.
VCC
dW dW(RESET)
GND
Figure 24-1 shows the schematic of a target MCU, with debugWIRE enabled, and the emulator
connector. The system clock is not affected by debugWIRE and will always be the clock source
selected by the CKSEL Fuses.
267
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
When designing a system where debugWIRE will be used, the following observations must be
made for correct operation:
• Pull-up resistors on the dW/(RESET) line must not be smaller than 10kΩ. The pull-up resistor
is not required for debugWIRE functionality.
• Connecting the RESET pin directly to VCC will not work.
• Capacitors connected to the RESET pin must be disconnected when using debugWire.
• All external reset sources must be disconnected.
The DWDR Register provides a communication channel from the running program in the MCU
to the debugger. This register is only accessible by the debugWIRE and can therefore not be
used as a general purpose register in the normal operations.
268
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
25.1 Overview
In ATmega48PA, there is no Read-While-Write support, and no separate Boot Loader Section.
The SPM instruction can be executed from the entire Flash.
The device provides a Self-Programming mechanism for downloading and uploading program
code by the MCU itself. The Self-Programming can use any available data interface and associ-
ated protocol to read code and write (program) that code into the Program memory.
The Program memory is updated in a page by page fashion. Before programming a page with
the data stored in the temporary page buffer, the page must be erased. The temporary page buf-
fer is filled one word at a time using SPM and the buffer can be filled either before the Page
Erase command or between a Page Erase and a Page Write operation:
Alternative 1, fill the buffer before a Page Erase
• Fill temporary page buffer
• Perform a Page Erase
• Perform a Page Write
Alternative 2, fill the buffer after Page Erase
• Perform a Page Erase
• Fill temporary page buffer
• Perform a Page Write
If only a part of the page needs to be changed, the rest of the page must be stored (for example
in the temporary page buffer) before the erase, and then be re-written. When using alternative 1,
the Boot Loader provides an effective Read-Modify-Write feature which allows the user software
to first read the page, do the necessary changes, and then write back the modified data. If alter-
native 2 is used, it is not possible to read the old data while loading since the page is already
erased. The temporary page buffer can be accessed in a random sequence. It is essential that
the page address used in both the Page Erase and Page Write operation is addressing the same
page.
269
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
If the EEPROM is written in the middle of an SPM Page Load operation, all data loaded will be
lost.
Since the Flash is organized in pages (see Table 27-11 on page 299), the Program Counter can
be treated as having two different sections. One section, consisting of the least significant bits, is
addressing the words within a page, while the most significant bits are addressing the pages.
This is shown in Figure 26-3 on page 282. Note that the Page Erase and Page Write operations
are addressed independently. Therefore it is of major importance that the software addresses
the same page in both the Page Erase and Page Write operation.
The LPM instruction uses the Z-pointer to store the address. Since this instruction addresses the
Flash byte-by-byte, also the LSB (bit Z0) of the Z-pointer is used.
PCMSB PAGEMSB
PROGRAM
PCPAGE PCWORD
COUNTER
01
02
PAGEEND
Note: 1. The different variables used in Figure 26-3 are listed in Table 27-11 on page 299.
270
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
The algorithm for reading the Fuse Low byte is similar to the one described above for reading
the Lock bits. To read the Fuse Low byte, load the Z-pointer with 0x0000 and set the BLBSET
and SELFPRGEN bits in SPMCSR. When an LPM instruction is executed within three cycles
after the BLBSET and SELFPRGEN bits are set in the SPMCSR, the value of the Fuse Low byte
(FLB) will be loaded in the destination register as shown below.See Table 27-5 on page 296 for
a detailed description and mapping of the Fuse Low byte.
Bit 7 6 5 4 3 2 1 0
Rd FLB7 FLB6 FLB5 FLB4 FLB3 FLB2 FLB1 FLB0
Similarly, when reading the Fuse High byte (FHB), load 0x0003 in the Z-pointer. When an LPM
instruction is executed within three cycles after the BLBSET and SELFPRGEN bits are set in the
SPMCSR, the value of the Fuse High byte will be loaded in the destination register as shown
below. See Table 27-5 on page 296 for detailed description and mapping of the Extended Fuse
byte.
Bit 7 6 5 4 3 2 1 0
Rd FHB7 FHB6 FHB5 FHB4 FHB3 FHB2 FHB1 FHB0
Similarly, when reading the Extended Fuse byte (EFB), load 0x0002 in the Z-pointer. When an
LPM instruction is executed within three cycles after the BLBSET and SELFPRGEN bits are set
in the SPMCSR, the value of the Extended Fuse byte will be loaded in the destination register as
shown below. See Table 27-5 on page 296 for detailed description and mapping of the Extended
Fuse byte.
Bit 7 6 5 4 3 2 1 0
Rd FHB7 FHB6 FHB5 FHB4 FHB3 FHB2 FHB1 FHB0
Fuse and Lock bits that are programmed, will be read as zero. Fuse and Lock bits that are
unprogrammed, will be read as one.
271
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
272
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
273
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Do_spm:
; check for previous SPM complete
Wait_spm:
in temp1, SPMCSR
sbrc temp1, SELFPRGEN
rjmp Wait_spm
; input: spmcrval determines SPM action
; disable interrupts if enabled, store status
in temp2, SREG
cli
; check that no EEPROM write access is present
Wait_ee:
sbic EECR, EEPE
rjmp Wait_ee
; SPM timed sequence
out SPMCSR, spmcrval
spm
; restore SREG (to enable interrupts if originally enabled)
out SREG, temp2
ret
274
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
275
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
276
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
26.1 Features
• Read-While-Write Self-Programming
• Flexible Boot Memory Size
• High Security (Separate Boot Lock Bits for a Flexible Protection)
• Separate Fuse to Select Reset Vector
• Optimized Page(1) Size
• Code Efficient Algorithm
• Efficient Read-Modify-Write Support
Note: 1. A page is a section in the Flash consisting of several bytes (see Table 27-11 on page 299)
used during programming. The page organization does not affect normal operation.
26.2 Overview
In ATmega88PA, ATmega168PA and ATmega328P, the Boot Loader Support provides a real
Read-While-Write Self-Programming mechanism for downloading and uploading program code
by the MCU itself. This feature allows flexible application software updates controlled by the
MCU using a Flash-resident Boot Loader program. The Boot Loader program can use any avail-
able data interface and associated protocol to read code and write (program) that code into the
Flash memory, or read the code from the program memory. The program code within the Boot
Loader section has the capability to write into the entire Flash, including the Boot Loader mem-
ory. The Boot Loader can thus even modify itself, and it can also erase itself from the code if the
feature is not needed anymore. The size of the Boot Loader memory is configurable with fuses
and the Boot Loader has two separate sets of Boot Lock bits which can be set independently.
This gives the user a unique flexibility to select different levels of protection.
277
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
278
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Read-While-Write
(RWW) Section
Z-pointer
Addresses NRWW
Z-pointer Section
Addresses RWW No Read-While-Write
Section (NRWW) Section
CPU is Halted
During the Operation
Code Located in
NRWW Section
Can be Read During
the Operation
279
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Read-While-Write Section
Read-While-Write Section
Application Flash Section Application Flash Section
No Read-While-Write Section
No Read-While-Write Section
End RWW End RWW
Start NRWW Start NRWW
End Application
End Application Start Boot Loader
Start Boot Loader Boot Loader Flash Section
Boot Loader Flash Section
Flashend Flashend
Read-While-Write Section
Application Flash Section Application Flash Section
No Read-While-Write Section
End RWW
Start NRWW Start NRWW, Start Boot Loader
Application Flash Section
End Application
Boot Loader Flash Section
Start Boot Loader
Boot Loader Flash Section
Flashend Flashend
Note: 1. The parameters in the figure above are given in Table 26-7 on page 289.
280
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Table 26-3. Boot Lock Bit1 Protection Modes (Boot Loader Section)(1)
BLB1 Mode BLB12 BLB11 Protection
No restrictions for SPM or LPM accessing the Boot Loader
1 1 1
section.
2 1 0 SPM is not allowed to write to the Boot Loader section.
SPM is not allowed to write to the Boot Loader section, and LPM
executing from the Application section is not allowed to read
3 0 0 from the Boot Loader section. If Interrupt Vectors are placed in
the Application section, interrupts are disabled while executing
from the Boot Loader section.
LPM executing from the Application section is not allowed to
read from the Boot Loader section. If Interrupt Vectors are
4 0 1
placed in the Application section, interrupts are disabled while
executing from the Boot Loader section.
Note: 1. “1” means unprogrammed, “0” means programmed
281
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Since the Flash is organized in pages (see Table 27-11 on page 299), the Program Counter can
be treated as having two different sections. One section, consisting of the least significant bits, is
addressing the words within a page, while the most significant bits are addressing the pages.
This is1 shown in Figure 26-3. Note that the Page Erase and Page Write operations are
addressed independently. Therefore it is of major importance that the Boot Loader software
addresses the same page in both the Page Erase and Page Write operation. Once a program-
ming operation is initiated, the address is latched and the Z-pointer can be used for other
operations.
The only SPM operation that does not use the Z-pointer is Setting the Boot Loader Lock bits.
The content of the Z-pointer is ignored and will have no effect on the operation. The LPM
instruction does also use the Z-pointer to store the address. Since this instruction addresses the
Flash byte-by-byte, also the LSB (bit Z0) of the Z-pointer is used.
PCMSB PAGEMSB
PROGRAM
PCPAGE PCWORD
COUNTER
01
02
PAGEEND
Note: 1. The different variables used in Figure 26-3 are listed in Table 26-9 on page 289.
282
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
283
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
See Table 26-2 and Table 26-3 for how the different settings of the Boot Loader bits affect the
Flash access.
If bits 5..0 in R0 are cleared (zero), the corresponding Lock bit will be programmed if an SPM
instruction is executed within four cycles after BLBSET and SELFPRGEN are set in SPMCSR.
The Z-pointer is don’t care during this operation, but for future compatibility it is recommended to
load the Z-pointer with 0x0001 (same as used for reading the lOck bits). For future compatibility it
is also recommended to set bits 7 and 6 in R0 to “1” when writing the Lock bits. When program-
ming the Lock bits the entire Flash can be read during the operation.
284
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
instruction is executed within three CPU cycles after the BLBSET and SELFPRGEN bits are set
in SPMCSR, the value of the Lock bits will be loaded in the destination register. The BLBSET
and SELFPRGEN bits will auto-clear upon completion of reading the Lock bits or if no LPM
instruction is executed within three CPU cycles or no SPM instruction is executed within four
CPU cycles. When BLBSET and SELFPRGEN are cleared, LPM will work as described in the
Instruction set Manual.
Bit 7 6 5 4 3 2 1 0
Rd – – BLB12 BLB11 BLB02 BLB01 LB2 LB1
The algorithm for reading the Fuse Low byte is similar to the one described above for reading
the Lock bits. To read the Fuse Low byte, load the Z-pointer with 0x0000 and set the BLBSET
and SELFPRGEN bits in SPMCSR. When an LPM instruction is executed within three cycles
after the BLBSET and SELFPRGEN bits are set in the SPMCSR, the value of the Fuse Low byte
(FLB) will be loaded in the destination register as shown below. Refer to Table 27-5 on page 296
for a detailed description and mapping of the Fuse Low byte.
Bit 7 6 5 4 3 2 1 0
Rd FLB7 FLB6 FLB5 FLB4 FLB3 FLB2 FLB1 FLB0
Similarly, when reading the Fuse High byte, load 0x0003 in the Z-pointer. When an LPM instruc-
tion is executed within three cycles after the BLBSET and SELFPRGEN bits are set in the
SPMCSR, the value of the Fuse High byte (FHB) will be loaded in the destination register as
shown below. Refer to Table 27-7 on page 296 for detailed description and mapping of the Fuse
High byte.
Bit 7 6 5 4 3 2 1 0
Rd FHB7 FHB6 FHB5 FHB4 FHB3 FHB2 FHB1 FHB0
When reading the Extended Fuse byte, load 0x0002 in the Z-pointer. When an LPM instruction
is executed within three cycles after the BLBSET and SELFPRGEN bits are set in the SPMCSR,
the value of the Extended Fuse byte (EFB) will be loaded in the destination register as shown
below. Refer to Table 27-5 on page 296 for detailed description and mapping of the Extended
Fuse byte.
Bit 7 6 5 4 3 2 1 0
Rd – – – – EFB3 EFB2 EFB1 EFB0
Fuse and Lock bits that are programmed, will be read as zero. Fuse and Lock bits that are
unprogrammed, will be read as one.
26.8.10 Reading the Signature Row from Software
To read the Signature Row from software, load the Z-pointer with the signature byte address
given in Table 26-5 on page 286 and set the SIGRD and SPMEN bits in SPMCSR. When an
LPM instruction is executed within three CPU cycles after the SIGRD and SPMEN bits are set in
SPMCSR, the signature byte value will be loaded in the destination register. The SIGRD and
SPMEN bits will auto-clear upon completion of reading the Signature Row Lock bits or if no LPM
instruction is executed within three CPU cycles. When SIGRD and SPMEN are cleared, LPM will
work as described in the Instruction set Manual.
285
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
286
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
287
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
sbrs temp1, RWWSB ; If RWWSB is set, the RWW section is not ready yet
ret
; re-enable the RWW section
ldi spmcrval, (1<<RWWSRE) | (1<<SELFPRGEN)
call Do_spm
rjmp Return
Do_spm:
; check for previous SPM complete
Wait_spm:
in temp1, SPMCSR
sbrc temp1, SELFPRGEN
rjmp Wait_spm
; input: spmcrval determines SPM action
; disable interrupts if enabled, store status
in temp2, SREG
cli
; check that no EEPROM write access is present
Wait_ee:
sbic EECR, EEPE
rjmp Wait_ee
; SPM timed sequence
out SPMCSR, spmcrval
spm
; restore SREG (to enable interrupts if originally enabled)
out SREG, temp2
ret
288
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Table 26-9. Explanation of Different Variables used in Figure 26-3 and the Mapping to the Z-pointer, ATmega88PA
Corresponding
Variable Z-value(1) Description
Most significant bit in the Program Counter. (The Program Counter is
PCMSB 11
12 bits PC[11:0])
Most significant bit which is used to address the words within one
PAGEMSB 4
page (32 words in a page requires 5 bits PC [4:0]).
Bit in Z-register that is mapped to PCMSB. Because Z0 is not used,
ZPCMSB Z12
the ZPCMSB equals PCMSB + 1.
Bit in Z-register that is mapped to PAGEMSB. Because Z0 is not
ZPAGEMSB Z5
used, the ZPAGEMSB equals PAGEMSB + 1.
Program counter page address: Page select, for page erase and
PCPAGE PC[11:5] Z12:Z6
page write
Program counter word address: Word select, for filling temporary
PCWORD PC[4:0] Z5:Z1
buffer (must be zero during page write operation)
289
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Table 26-12. Explanation of Different Variables used in Figure 26-3 and the Mapping to the Z-pointer, ATmega168PA
Corresponding
Variable Z-value(1) Description
Most significant bit in the Program Counter. (The Program Counter
PCMSB 12
is 13 bits PC[12:0])
Most significant bit which is used to address the words within
PAGEMSB 5
one page (64 words in a page requires 6 bits PC [5:0])
Bit in Z-register that is mapped to PCMSB. Because Z0 is not used,
ZPCMSB Z13
the ZPCMSB equals PCMSB + 1.
Bit in Z-register that is mapped to PAGEMSB. Because Z0 is not
ZPAGEMSB Z6
used, the ZPAGEMSB equals PAGEMSB + 1.
Program counter page address: Page select, for page erase and
PCPAGE PC[12:6] Z13:Z7
page write
Program counter word address: Word select, for filling temporary
PCWORD PC[5:0] Z6:Z1
buffer (must be zero during page write operation)
290
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Table 26-15. Explanation of Different Variables used in Figure 26-3 and the Mapping to the Z-pointer, ATmega328P
Corresponding
Variable Z-value(1) Description
Most significant bit in the Program Counter. (The Program Counter
PCMSB 13
is 14 bits PC[13:0])
Most significant bit which is used to address the words within
PAGEMSB 5
one page (64 words in a page requires 6 bits PC [5:0])
Bit in Z-register that is mapped to PCMSB. Because Z0 is not used,
ZPCMSB Z14
the ZPCMSB equals PCMSB + 1.
Bit in Z-register that is mapped to PAGEMSB. Because Z0 is not
ZPAGEMSB Z6
used, the ZPAGEMSB equals PAGEMSB + 1.
Program counter page address: Page select, for page erase and
PCPAGE PC[13:6] Z14:Z7
page write
Program counter word address: Word select, for filling temporary
PCWORD PC[5:0] Z6:Z1
buffer (must be zero during page write operation)
291
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
292
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
PGWRT bit will auto-clear upon completion of a Page Write, or if no SPM instruction is executed
within four clock cycles. The CPU is halted during the entire Page Write operation if the NRWW
section is addressed.
293
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
294
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
295
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Note: 1. The default value of BOOTSZ[1:0] results in maximum Boot Size. See ”Pin Name Mapping” on
page 300.
Note: 1. See Table 28-4 on page 318 for BODLEVEL Fuse decoding.
296
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Notes: 1. See ”Alternate Functions of Port C” on page 85 for description of RSTDISBL Fuse.
2. The SPIEN Fuse is not accessible in serial programming mode.
3. See ”WDTCSR – Watchdog Timer Control Register” on page 54 for details.
4. The default value of BOOTSZ[1:0] results in maximum Boot Size. See ”Pin Name Mapping” on
page 300.
297
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Note: 1. The default value of SUT1..0 results in maximum start-up time for the default clock source.
See Table 8-12 on page 33 for details.
2. The default setting of CKSEL3..0 results in internal RC Oscillator @ 8 MHz. See Table 8-11 on
page 33 for details.
3. The CKOUT Fuse allows the system clock to be output on PORTB0. See ”Clock Output Buffer”
on page 35 for details.
4. See ”System Clock Prescaler” on page 35 for details.
The status of the Fuse bits is not affected by Chip Erase. Note that the Fuse bits are locked if
Lock bit1 (LB1) is programmed. Program the Fuse bits before programming the Lock bits.
298
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
this byte is automatically written into the OSCCAL Register to ensure correct frequency of the
calibrated RC Oscillator.
Table 27-11. No. of Words in a Page and No. of Pages in the Flash
No. of
Device Flash Size Page Size PCWORD Pages PCPAGE PCMSB
2K words
ATmega48PA 32 words PC[4:0] 64 PC[10:5] 10
(4K bytes)
4K words
ATmega88PA 32 words PC[4:0] 128 PC[11:5] 11
(8K bytes)
8K words
ATmega168PA 64 words PC[5:0] 128 PC[12:6] 12
(16K bytes)
16K words
ATmega328P 64 words PC[5:0] 256 PC[13:6] 13
(32K bytes)
Table 27-12. No. of Words in a Page and No. of Pages in the EEPROM
EEPROM Page No. of
Device Size Size PCWORD Pages PCPAGE EEAMSB
ATmega48PA 256 bytes 4 bytes EEA[1:0] 64 EEA[7:2] 7
ATmega88PA 512 bytes 4 bytes EEA[1:0] 128 EEA[8:2] 8
ATmega168PA 512 bytes 4 bytes EEA[1:0] 128 EEA[8:2] 8
ATmega328P 1K bytes 4 bytes EEA[1:0] 256 EEA[9:2] 9
299
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
WR PD3 AVCC
XA1 PD6
PAGEL PD7
+12 V RESET
BS2 PC2
XTAL1
GND
Note: VCC - 0.3V < AVCC < VCC + 0.3V, however, AVCC should always be within 4.5 - 5.5V
300
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
301
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
4. Keep the Prog_enable pins unchanged for at least 10µs after the High-voltage has been
applied to ensure the Prog_enable Signature has been latched.
5. Wait until VCC actually reaches 4.5 -5.5V before giving any parallel programming
commands.
6. Exit Programming mode by power the device down or by bringing RESET pin to 0V.
302
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
4. Give XTAL1 a positive pulse. This loads the address low byte.
C. Load Data Low Byte
1. Set XA1, XA0 to “01”. This enables data loading.
2. Set DATA = Data low byte (0x00 - 0xFF).
3. Give XTAL1 a positive pulse. This loads the data byte.
D. Load Data High Byte
1. Set BS1 to “1”. This selects high data byte.
2. Set XA1, XA0 to “01”. This enables data loading.
3. Set DATA = Data high byte (0x00 - 0xFF).
4. Give XTAL1 a positive pulse. This loads the data byte.
E. Latch Data
1. Set BS1 to “1”. This selects high data byte.
2. Give PAGEL a positive pulse. This latches the data bytes. (See Figure 27-3 for signal
waveforms)
F. Repeat B through E until the entire buffer is filled or until all data within the page is loaded.
While the lower bits in the address are mapped to words within the page, the higher bits address
the pages within the FLASH. This is illustrated in Figure 27-2 on page 304. Note that if less than
eight bits are required to address words in the page (pagesize < 256), the most significant bit(s)
in the address low byte are used to address the page when performing a Page Write.
G. Load Address High byte
1. Set XA1, XA0 to “00”. This enables address loading.
2. Set BS1 to “1”. This selects high address.
3. Set DATA = Address high byte (0x00 - 0xFF).
4. Give XTAL1 a positive pulse. This loads the address high byte.
H. Program Page
1. Give WR a negative pulse. This starts programming of the entire page of data. RDY/BSY
goes low.
2. Wait until RDY/BSY goes high (See Figure 27-3 for signal waveforms).
I. Repeat B through H until the entire Flash is programmed or until all data has been
programmed.
J. End Page Programming
1. 1. Set XA1, XA0 to “10”. This enables command loading.
2. Set DATA to “0000 0000”. This is the command for No Operation.
3. Give XTAL1 a positive pulse. This loads the command, and the internal write signals are
reset.
303
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
01
02
PAGEEND
Note: 1. PCPAGE and PCWORD are listed in Table 27-11 on page 299.
A B C D E B C D E G H
0x10 ADDR. LOW DATA LOW DATA HIGH XX ADDR. LOW DATA LOW DATA HIGH XX ADDR. HIGH XX
DATA
XA1
XA0
BS1
XTAL1
WR
RDY/BSY
RESET +12V
OE
PAGEL
BS2
Note: 1. “XX” is don’t care. The letters refer to the programming description above.
304
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
A G B C E B C E L
0x11 ADDR. HIGH ADDR. LOW DATA XX ADDR. LOW DATA XX
DATA
XA1
XA0
BS1
XTAL1
WR
RDY/BSY
RESET +12V
OE
PAGEL
BS2
305
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
A C A C A C
0x40 DATA XX 0x40 DATA XX 0x40 DATA XX
DATA
XA1
XA0
BS1
BS2
XTAL1
WR
RDY/BSY
RESET +12V
OE
PAGEL
306
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 27-6. Mapping Between BS1, BS2 and the Fuse and Lock Bits During Read
0
Extended Fuse Byte 1
DATA
BS2
Lock Bits 0
1
BS1
Fuse High Byte 1
BS2
307
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
VCC
+1.8 - 5.5V(2)
MOSI
AVCC
MISO
SCK
XTAL1
RESET
GND
Notes: 1. If the device is clocked by the internal Oscillator, it is no need to connect a clock source to the
XTAL1 pin.
2. VCC - 0.3V < AVCC < VCC + 0.3V, however, AVCC should always be within 1.8 - 5.5V
When programming the EEPROM, an auto-erase cycle is built into the self-timed programming
operation (in the Serial mode ONLY) and there is no need to first execute the Chip Erase
instruction. The Chip Erase operation turns the content of every memory location in both the
Program and EEPROM arrays into 0xFF.
Depending on CKSEL Fuses, a valid clock must be present. The minimum low and high periods
for the serial clock (SCK) input are defined as follows:
Low: > 2 CPU clock cycles for fck < 12 MHz, 3 CPU clock cycles for fck >= 12 MHz
High: > 2 CPU clock cycles for fck < 12 MHz, 3 CPU clock cycles for fck >= 12 MHz
308
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
309
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
not used, the used must wait at least tWD_EEPROM before issuing the next byte (See Table
27-18). In a chip erased device, no 0xFF in the data file(s) need to be programmed.
6. Any memory location can be verified by using the Read instruction which returns the con-
tent at the selected address at serial output MISO.
7. At the end of the programming session, RESET can be set high to commence normal
operation.
8. Power-off sequence (if needed):
Set RESET to “1”.
Turn VCC power off.
Table 27-18. Typical Wait Delay Before Writing the Next Flash or EEPROM Location
Symbol Minimum Wait Delay
tWD_FLASH 4.5 ms
tWD_EEPROM 3.6 ms
tWD_ERASE 9.0 ms
310
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
If the LSB in RDY/BSY data byte out is ‘1’, a programming operation is still pending. Wait until
this bit returns ‘0’ before the next instruction is carried out.
Within the same page, the low data byte must be loaded prior to the high data byte.
After data is loaded to the page buffer, program the EEPROM page, see Figure 27-8 on page
312.
311
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Page Buffer
Page Offset
Page 0
Page 1
Page 2
Page Number
Page N-1
Program Memory/
EEPROM Memory
SAMPLE
For characteristics of the SPI module see “SPI Timing Characteristics” on page 319.
312
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
28.2 DC Characteristics
313
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
314
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
315
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
20 MHz
10 MHz
Safe Operating Area
4 MHz
316
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
V IH1
V IL1
Note: All DC Characteristics contained in this datasheet are based on simulation and characterization of other AVR microcontrollers
manufactured in the same process technology. These values are preliminary values representing design targets, and will be
updated after characterization of actual silicon.
317
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Notes: 1. VBOT may be below nominal minimum operating voltage for some devices. For devices where this is the case, the device is
tested down to VCC = VBOT during the production test. This guarantees that a Brown-Out Reset will occur before VCC drops to
a voltage where correct operation of the microcontroller is no longer guaranteed. The test is performed using
BODLEVEL = 110, 101 and 100.
318
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Note: 1. In SPI Programming mode the minimum SCK high/low period is:
- 2 tCLCL for fCK < 12 MHz
- 3 tCLCL for fCK > 12 MHz
2. All DC Characteristics contained in this datasheet are based on simulation and characteriza-
tion of other AVR microcontrollers manufactured in the same process technology. These
values are preliminary values representing design targets, and will be updated after character-
ization of actual silicon.
319
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
SCK
(CPOL = 0)
2 2
SCK
(CPOL = 1)
4 5 3
MISO
MSB ... LSB
(Data Input)
7 8
MOSI
MSB ... LSB
(Data Output)
SS
10 16
9
SCK
(CPOL = 0)
11 11
SCK
(CPOL = 1)
13 14 12
MOSI
MSB ... LSB
(Data Input)
15 17
MISO
MSB ... LSB X
(Data Output)
320
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Bus free time between a STOP and START fSCL ≤ 100 kHz 4.7 – µs
tBUF
condition fSCL > 100 kHz 1.3 – µs
321
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
tLOW tLOW
SCL
tSU;STA tHD;STA tHD;DAT tSU;DAT
tSU;STO
SDA
tBUF
322
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
323
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Notes: 1. tWLRH is valid for the Write Flash, Write EEPROM, Write Fuse bits and Write Lock bits
commands.
2. tWLRH_CE is valid for the Chip Erase command.
324
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 28-6. Parallel Programming Timing, Including some General Timing Requirements
tXLWL
tXHXL
XTAL1
tDVXH tXLDX
Data & Contol
(DATA, XA0/1, BS1, BS2)
tBVPH tPLBX t BVWL
tWLBX
PAGEL tPHPL
tWLWH
WR tPLWL
WLRL
RDY/BSY
tWLRH
Figure 28-7. Parallel Programming Timing, Loading Sequence with Timing Requirements(1)
LOAD ADDRESS LOAD DATA LOAD DATA LOAD DATA LOAD ADDRESS
(LOW BYTE) (LOW BYTE) (HIGH BYTE) (LOW BYTE)
t XLXH tXLPH
tPLXH
XTAL1
BS1
PAGEL
DATA ADDR0 (Low Byte) DATA (Low Byte) DATA (High Byte) ADDR1 (Low Byte)
XA0
XA1
Note: 1. The timing requirements shown in Figure 28-6 (i.e., tDVXH, tXHXL, and tXLDX) also apply to load-
ing operation.
Figure 28-8. Parallel Programming Timing, Reading Sequence (within the Same Page) with
Timing Requirements(1)
LOAD ADDRESS READ DATA READ DATA LOAD ADDRESS
(LOW BYTE) (LOW BYTE) (HIGH BYTE) (LOW BYTE)
tXLOL
XTAL1
tBVDV
BS1
tOLDV
OE
tOHDZ
DATA ADDR0 (Low Byte) DATA (Low Byte) DATA (High Byte) ADDR1 (Low Byte)
XA0
XA1
Note: 1. The timing requirements shown in Figure 28-6 (i.e., tDVXH, tXHXL, and tXLDX) also apply to read-
ing operation.
325
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
326
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-1. ATmega48PA: Active Supply Current vs. Low Frequency (0.1-1.0 MHz)
1
5.5 V
0.8
5.0 V
4.5 V
0.6
ICC (mA)
4.0 V
0.4 3.3 V
2.7 V
0.2 1.8 V
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Frequency (MHz)
Figure 29-2. ATmega48PA: Active Supply Current vs. Frequency (1-20 MHz)
12
5.5 V
10
5.0 V
8
4.5 V
ICC (mA)
6
4.0 V
4
3.3 V
2
2.7 V
1.8 V
0
0 2 4 6 8 10 12 14 16 18 20
Frequency (MHz)
327
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-3. ATmega48PA: Active Supply Current vs. VCC (Internal RC Oscillator, 128 kHz)
0.14
85 °C
0.12 -40 °C
25 °C
0.1
0.08
0.04
0.02
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-4. ATmega48PA: Active Supply Current vs. VCC (Internal RC Oscillator, 1 MHz)
1.2
85 °C
25 °C
1 -40 °C
0.8
ICC (mA)
0.6
0.4
0.2
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
328
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-5. ATmega48PA: Active Supply Current vs. VCC (Internal RC Oscillator, 8 MHz)
5 85 °C
25 °C
-40 °C
4
ICC (mA) 2
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-6. ATmega48PA: Idle Supply Current vs. Low Frequency (0.1-1.0 MHz)
0.16
5.5 V
0.14
0.12 5.0 V
0.1 4.5 V
ICC (mA)
0.08 4.0 V
0.06 3.3 V
0.04 2.7 V
1.8 V
0.02
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Frequency (MHz)
329
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-7. ATmega48PA: Idle Supply Current vs. Frequency (1-20 MHz)
3
2.5
5.5 V
5.0 V
2
4.5 V
ICC (mA)
1.5
4.0 V
1
3.3 V
0.5
2.7 V
0
1.8 V
0 2 4 6 8 10 12 14 16 18 20
Frequency (MHz)
Figure 29-8. ATmega48PA: Idle Supply Current vs. VCC (Internal RC Oscillator, 128 kHz)
0.042
85 °C
0.035
0.028
25 °C
-40 °C
ICC (mA)
0.021
0.014
0.007
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
330
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-9. ATmega48PA: Idle Supply Current vs. VCC (Internal RC Oscillator, 1 MHz)
0.35
0.3
85 °C
25 °C
-40 °C
0.25
0.2
0.1
0.05
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-10. ATmega48PA: Idle Supply Current vs. Vcc (Internal RC Oscillator, 8 MHz)
1.2 85 °C
25 °C
-40 °C
1
0.8
ICC (mA)
0.6
0.4
0.2
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
331
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Table 29-1. ATmega48PA: Additional Current Consumption for the different I/O modules
(absolute values)
PRR bit Typical numbers
VCC = 2V, F = 1 MHz VCC = 3V, F = 4 MHz VCC = 5V, F = 8 MHz
PRUSART0 2.9 uA 20.7 uA 97.4 uA
PRTWI 6.0 uA 44.8 uA 219.7 uA
PRTIM2 5.0 uA 34.5 uA 141.3 uA
PRTIM1 3.6 uA 24.4 uA 107.7 uA
PRTIM0 1.4 uA 9.5 uA 38.4 uA
PRSPI 5.0 uA 38.0 uA 190.4 uA
PRADC 6.1 uA 47.4 uA 244.7 uA
Table 29-2. ATmega48PA: Additional Current Consumption (percentage) in Active and Idle
mode
Additional Current consumption Additional Current consumption
compared to Active with external compared to Idle with external
clock (see Figure 29-1 on page clock (see Figure 29-6 on page
PRR bit 327 and Figure 29-2 on page 327) 329 and Figure 29-7 on page 330)
PRUSART0 1.8% 11.4%
PRTWI 3.9% 20.6%
PRTIM2 2.9% 15.7%
PRTIM1 2.1% 11.2%
PRTIM0 0.8% 4.2%
PRSPI 3.3% 17.6%
PRADC 4.2% 22.1%
It is possible to calculate the typical current consumption based on the numbers from Table 29-2
on page 332 for other VCC and frequency settings than listed in Table 29-1 on page 332.
Example Calculate the expected current consumption in idle mode with TIMER1, ADC, and SPI enabled
at VCC = 2.0V and F = 1MHz. From Table 29-2 on page 332, third column, we see that we need
to add 11.2% for the TIMER1, 22.1% for the ADC, and 17.6% for the SPI module. Reading from
Figure 29-6 on page 329, we find that the idle current consumption is ~0.028 mA at VCC = 2.0V
and F = 1MHz. The total current consumption in idle mode with TIMER1, ADC, and SPI enabled,
gives:
I CC total ≈ 0.028 mA ⋅ (1 + 0.112 + 0.221 + 0.176) ≈ 0.042 mA
332
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-11. ATmega48PA: Power-Down Supply Current vs. VCC (Watchdog Timer Disabled)
1.2
85 °C
1
0.8
ICC (uA)
0.6
0.4
-40 °C
0.2 25 °C
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-12. ATmega48PA: Power-Down Supply Current vs. VCC (Watchdog Timer Enabled)
8
-40 °C
85 °C
25 °C
6
ICC (uA)
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
333
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-13. ATmega48PA: Power-Save Supply Current vs. VCC (Watchdog Timer Disabled
and 32 kHz Crystal Oscillator Running)
2 85 °C
1.6
ICC (uA)
1.2 25 °C
-40 °C
0.8
0.4
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-14. ATmega48PA: Standby Supply Current vs. Vcc (Watchdog Timer Disabled)
0.16
6MHz_xtal
0.14 6MHz_res
0.12
4MHz_res
0.1 4MHz_xtal
ICC (mA)
0.08
2MHz_res
2MHz_xtal
0.06
450kHz_res
0.04
0.02
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
334
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-15. ATmega48PA: I/O Pin Pull-up Resistor Current vs. Input Voltage (VCC = 1.8 V)
50
40
30
IOP (uA)
20
10
25 °C
85 °C
0 -40 °C
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8
VOP (V)
Figure 29-16. ATmega48PA: I/O Pin Pull-up Resistor Current vs. Input Voltage (VCC = 2.7 V)
70
60
50
40
IOP (uA)
30
20
25 °C
10
85 °C
-40 °C
0
0 0.5 1 1.5 2 2.5 3
VOP (V)
335
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-17. ATmega48PA: I/O Pin Pull-up Resistor Current vs. Input Voltage (VCC = 5 V)
140
120
100
80
IOP (uA) 60
40
25 °C
20
85 °C
-40 °C
0
0 1 2 3 4 5
VOP (V)
Figure 29-18. ATmega48PA: Reset Pull-up Resistor Current vs. Reset Pin Voltage (VCC = 1.8 V)
35
30
25
IRESET (uA)
20
15
10
25 °C
5 -40 °C
85 °C
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8
VRESET (V)
336
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-19. ATmega48PA: Reset Pull-up Resistor Current vs. Reset Pin Voltage (VCC = 2.7 V)
60
50
40
IRESET (uA)
30
20
10 25 °C
-40 °C
0 85 °C
0 0.5 1 1.5 2 2.5 3
VRESET (V)
Figure 29-20. ATmega48PA: Reset Pull-up Resistor Current vs. Reset Pin Voltage (VCC = 5 V)
120
100
80
IRESET (uA)
60
40
20 25 °C
-40 °C
0 85 °C
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
VRESET (V)
337
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-21. ATmega48PA: I/O Pin Output Voltage vs. Sink Current(VCC = 3 V)
1
85 °C
0.8
25 °C
0.6
VOL (V) -40 °C
0.4
0.2
0
0 4 8 12 16 20
IOL (mA)
Figure 29-22. ATmega48PA: I/O Pin Output Voltage vs. Sink Current(VCC = 5 V)
0.6
85 °C
0.5 25 °C
0.4 -40 °C
VOL (V)
0.3
0.2
0.1
0
0 4 8 12 16 20
IOL (mA)
338
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-23. ATmega48PA: I/O Pin Output Voltage vs. Source Current(Vcc = 3 V)
3.5
2.5
-40 °C
25 °C
2 85 °C
VOH (V) 1.5
0.5
0
0 4 8 12 16 20
IOH (mA)
Figure 29-24. ATmega48PA: I/O Pin Output Voltage vs. Source Current(VCC = 5 V)
4.9
4.8
4.7
VOH (V)
4.6
-40 °C
4.5
25 °C
4.4
85 °C
4.3
4.2
0 4 8 12 16 20
IOH (mA)
339
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-25. ATmega48PA: I/O Pin Input Threshold Voltage vs. VCC (VIH, I/O Pin read as ‘1’)
3
-40 °C
25 °C
2.5 85 °C
2
Threshold (V)
1.5
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-26. ATmega48PA: I/O Pin Input Threshold Voltage vs. VCC (VIL, I/O Pin read as ‘0’)
2.5 85 °C
25 °C
-40 °C
2
Threshold (V)
1.5
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
340
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
0.6
25 °C
85 °C
0.5 -40 °C
0.3
0.2
0.1
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-28. ATmega48PA: Reset Input Threshold Voltage vs. VCC (VIH, I/O Pin read as ‘1’)
2.5 -40 °C
25 °C
85 °C
2
Threshold (V)
1.5
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
341
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-29. ATmega48PA: Reset Input Threshold Voltage vs. VCC (VIL, I/O Pin read as ‘0’)
2.5
85 °C
25 °C
-40 °C
2
Threshold (V)
1.5
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
0.7
0.6
0.5
Input Hysteresis (mV)
0.4
0.3
0.2
0.1 85 °C
25 °C
-40 °C
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
342
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
1.83
Falling Vcc
1.81
1.8
1.79
-50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90
Temperature (°C)
2.72
Threshold (V)
2.7
2.68
Falling Vcc
2.66
2.64
2.62
-50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90
Temperature (°C)
343
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Rising Vcc
4.34
4.32
Threshold (V)
4.3
4.28
Falling Vcc
4.26
4.24
-50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90
Temperature (°C)
116
114
112
FRC (kHz)
110
2.7 V
3.3 V
108
4.0 V
5.5 V
106
104
-40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90
Temperature (°C)
344
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
118
116
114 -40 °C
110
108
85 °C
106
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
8.2
85 °C
8.1
8
25 °C
FRC (MHz)
7.9
7.8
7.7 -40 °C
7.6
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
345
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
8.2
3.3 V
8.1
5.5 V
1.8 V
FRC (MHz)
7.9
7.8
7.7
7.6
-50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90
Temperature (°C)
Figure 29-38. ATmega48PA: Calibrated 8 MHz RC Oscillator Frequency vs. OSCCAL Value
16
85 °C
14 25 °C
-40 °C
12
10
FRC (MHz)
0
0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 256
OSCCAL (X1)
346
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
-40 °C
300 25 °C
85 °C
250
150
100
50
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
90
-40 °C
80 25 °C
85 °C
70
60
ICC (uA)
50
40
30
20
10
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
347
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
160
85 °C
140 25 °C
-40 °C
120
100
ICC (uA) 80
60
40
20
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
40
32
85 °C
24
25 °C
ICC (uA)
-40 °C
16
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
348
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
-40 °C
5
25 °C
4
ICC (mA)
3
85 °C
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-44. ATmega48PA: Reset Supply Current vs. Low Frequency (0.1 - 1.0 MHz)
0.14
0.12 5.5 V
0.1 5.0 V
0.08 4.5 V
ICC (mA)
4.0 V
0.06
3.3 V
0.04 2.7 V
0.02 1.8 V
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Frequency (MHz)
349
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
2 5.0 V
4.5 V
1.5
ICC (mA)
4.0 V
1
3.3 V
0.5
2.7 V
1.8 V
0
0 2 4 6 8 10 12 14 16 18 20
Frequency (MHz)
1400
1200
Pulsewidth (ns)
1000
800
600
400
85 °C
25 °C
200 -40 °C
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
350
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-47. ATmega88PA: Active Supply Current vs. Low Frequency (0.1-1.0 MHz)
1
5.5 V
0.8 5.0 V
4.5 V
0.6
ICC (mA)
4.0 V
0.4 3.3 V
2.7 V
0.2 1.8 V
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Frequency (MHz)
5.5 V
10
5.0 V
8
4.5 V
ICC (mA)
6
4.0 V
4
3.3 V
2.7 V
2
1.8 V
0
0 2 4 6 8 10 12 14 16 18 20
Frequency (MHz)
351
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-49. ATmega88PA: Active Supply Current vs. VCC (Internal RC Oscillator, 128 kHz)
0.12 -40 °C
25 °C
85 °C
0.09
ICC (mA)
0.06
0.03
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-50. ATmega88PA: Active Supply Current vs. VCC (Internal RC Oscillator, 1 MHz)
1.2 85 °C
25 °C
1 -40 °C
0.8
ICC (mA)
0.6
0.4
0.2
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
352
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-51. ATmega88PA: Active Supply Current vs. VCC (Internal RC Oscillator, 8 MHz)
5 85 °C
25 °C
-40 °C
4
ICC (mA) 2
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-52. ATmega88PA: Idle Supply Current vs. Low Frequency (0.1-1.0 MHz)
0.15
5.5 V
0.12
5.0 V
0.09 4.5 V
ICC (mA)
4.0 V
0.06
3.3 V
2.7 V
0.03
1.8 V
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Frequency (MHz)
353
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
5.5 V
2
5.0 V
4.5 V
1.5
ICC (mA)
4.0 V
1
3.3 V
0.5
2.7 V
1.8 V
0
0 2 4 6 8 10 12 14 16 18 20
Frequency (MHz)
Figure 29-54. ATmega88PA: Idle Supply Current vs. VCC (Internal RC Oscillator, 128 kHz)
0.04
85 °C
0.03
25 °C
ICC (mA)
-40 °C
0.02
0.01
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
354
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-55. ATmega88PA: Idle Supply Current vs. VCC (Internal RC Oscillator, 1 MHz)
0.35
85 °C
0.3 25 °C
-40 °C
0.25
0.2
0.1
0.05
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-56. ATmega88PA: Idle Supply Current vs. Vcc (Internal RC Oscillator, 8 MHz)
1.2
85 °C
25 °C
0.9 -40 °C
ICC (mA)
0.6
0.3
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
355
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Table 29-3. ATmega88PA: Additional Current Consumption for the different I/O modules
(absolute values)
PRR bit Typical numbers
VCC = 2V, F = 1 MHz VCC = 3V, F = 4 MHz VCC = 5V, F = 8 MHz
PRUSART0 3.0 uA 21.3 uA 97.9 uA
PRTWI 6.1 uA 45.4 uA 219.0 uA
PRTIM2 5.2 uA 35.2 uA 149.5 uA
PRTIM1 3.8 uA 25.6 uA 110.0 uA
PRTIM0 1.5 uA 9.8 uA 39.6 uA
PRSPI 5.2 uA 40.0 uA 199.6 uA
PRADC 6.3 uA 48.7 uA 247.0 uA
Table 29-4. ATmega88PA: Additional Current Consumption (percentage) in Active and Idle
mode
Additional Current consumption Additional Current consumption
compared to Active with external compared to Idle with external
clock (see Figure 29-47 on page clock (see Figure 29-52 on page
351 and Figure 29-48 on page 353 and Figure 29-53 on page
PRR bit 351) 354)
PRUSART0 1.8% 11.4%
PRTWI 3.9% 24.4%
PRTIM2 2.9% 18.6%
PRTIM1 2.1% 13.6%
PRTIM0 0.8% 5.2%
PRSPI 3.5% 21.5%
PRADC 4.2% 26.3%
It is possible to calculate the typical current consumption based on the numbers from Table 29-4
on page 356 for other VCC and frequency settings than listed in Table 29-3 on page 356.
Example Calculate the expected current consumption in idle mode with TIMER1, ADC, and SPI enabled
at VCC = 2.0V and F = 1MHz. From Table 29-4 on page 356, third column, we see that we need
to add 13.6% for the TIMER1, 26.3% for the ADC, and 21.5% for the SPI module. Reading from
Figure 29-52 on page 353, we find that the idle current consumption is ~0.027 mA at VCC = 2.0V
and F = 1MHz. The total current consumption in idle mode with TIMER1, ADC, and SPI enabled,
gives:
I CC total ≈ 0.027 mA ⋅ (1 + 0.136 + 0.263 + 0.215) ≈ 0.043 mA
356
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-57. ATmega88PA: Power-Down Supply Current vs. VCC (Watchdog Timer Disabled)
1.6
85 °C
1.4
1.2
1
ICC (uA)
0.8
0.6
0.4
25 °C
0.2
0 -40 °C
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-58. ATmega88PA: Power-Down Supply Current vs. VCC (Watchdog Timer Enabled)
8 85 °C
-40 °C
25 °C
6
ICC (uA)
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
357
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-59. ATmega88PA: Power-Save Supply Current vs. VCC (Watchdog Timer Disabled
and 32 kHzTIMER
WATCHDOG Crystal Oscillator
DISABLED andRunning)
32 kHz CRYSTAL OSCILLATOR RUNNING
3
2.5
85 °C
2 -40 °C
ICC (uA)
1.5
25 °C
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-60. ATmega88PA: Standby Supply Current vs. Vcc (Watchdog Timer Disabled)
0.18
0.16 6MHz_res
6MHz_xtal
0.14
0.12 4MHz_res
4MHz_xtal
ICC (mA)
0.1
0.08 2MHz_res
2MHz_xtal
0.06 450kHz_res
0.04
0.02
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
358
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-61. ATmega88PA: I/O Pin Pull-up Resistor Current vs. Input Voltage (VCC = 1.8 V)
50
40
30
IOP (uA)
20
10
25 °C
-40 °C
0 85 °C
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8
VOP (V)
Figure 29-62. ATmega88PA: I/O Pin Pull-up Resistor Current vs. Input Voltage (VCC = 2.7 V)
80
70
60
50
IOP (uA)
40
30
20
25 °C
10 -40 °C
85 °C
0
0 0.5 1 1.5 2 2.5 3
VOP (V)
359
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-63. ATmega88PA: I/O Pin Pull-up Resistor Current vs. Input Voltage (VCC = 5 V)
140
120
100
80
IOP (uA) 60
40
25 °C
20
85 °C
-40 °C
0
0 1 2 3 4 5
VOP (V)
Figure 29-64. ATmega88PA: Reset Pull-up Resistor Current vs. Reset Pin Voltage (VCC = 1.8 V)
40
35
30
25
IRESET (uA)
20
15
10 25 °C
5 -40 °C
85 °C
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8
VRESET (V)
360
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-65. ATmega88PA: Reset Pull-up Resistor Current vs. Reset Pin Voltage (VCC = 2.7 V)
60
50
40
IRESET (uA)
30
20
25 °C
10
-40 °C
85 °C
0
0 0.5 1 1.5 2 2.5 3
VRESET (V)
Figure 29-66. ATmega88PA: Reset Pull-up Resistor Current vs. Reset Pin Voltage (VCC = 5 V)
120
100
80
IRESET (uA)
60
40
20
25 °C
-40 °C
0
85 °C
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
VRESET (V)
361
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-67. ATmega88PA: I/O Pin Output Voltage vs. Sink Current (VCC = 3 V)
1
85 °C
0.8
25 °C
0.6
VOL (V)
-40 °C
0.4
0.2
0
0 4 8 12 16 20
IOL (mA)
Figure 29-68. ATmega88PA: I/O Pin Output Voltage vs. Sink Current (VCC = 5 V)
0.6
85 °C
0.5
25 °C
0.4 -40 °C
VOL (V)
0.3
0.2
0.1
0
0 4 8 12 16 20
IOL (mA)
362
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-69. ATmega88PA: I/O Pin Output Voltage vs. Source Current (Vcc = 3 V)
3.5
2.5
-40 °C
25 °C
2 85 °C
0.5
0
0 4 8 12 16 20
IOH (mA)
Figure 29-70. ATmega88PA: I/O Pin Output Voltage vs. Source Current (VCC = 5 V)
5
4.9
4.8
4.7
VOH (V)
4.6
-40 °C
4.5
25 °C
4.4 85 °C
4.3
4.2
0 4 8 12 16 20
IOH (mA)
363
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-71. ATmega88PA: I/O Pin Input Threshold Voltage vs. VCC (VIH, I/O Pin read as ‘1’)
3 85 °C
-40 °C
2.5 25 °C
Threshold (V)
1.5
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-72. ATmega88PA: I/O Pin Input Threshold Voltage vs. VCC (VIL, I/O Pin read as ‘0’)
2.5 -40 °C
85 °C
25 °C
2
Threshold (V)
1.5
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
364
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
0.6
25 °C
85 °C
0.5
-40 °C
0.3
0.2
0.1
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-74. ATmega88PA: Reset Input Threshold Voltage vs. VCC (VIH, I/O Pin read as ‘1’)
1.5
-40 °C
25 °C
85 °C
1.2
Threshold (V)
0.9
0.6
0.3
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
365
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-75. ATmega88PA: Reset Input Threshold Voltage vs. VCC (VIL, I/O Pin read as ‘0’)
2.5 85 °C
25 °C
-40 °C
2
Threshold (V)
1.5
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
0.6
0.5
Input Hysteresis (mV)
0.4
0.3
0.2
85 °C
0.1
25 °C
-40 °C
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
366
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Rising Vcc
1.82
1.81
Threshold (V)
1.8
1.79
Falling Vcc
1.78
1.77
-50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90
Temperature (°C)
2.72
Threshold (V)
2.7
Falling Vcc
2.68
2.66
2.64
-50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90
Temperature (°C)
367
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
4.32
4.3
Threshold (V)
4.28
Falling Vcc
4.26
4.24
4.22
-50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90
Temperature (°C)
114
113
112
111
FRC (kHz)
110
109
108
2.7 V
107 3.3 V
4.0 V
106
5.5 V
105
-40 -20 0 20 40 60 80 100
Temperature (°C)
368
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
114
-40 °C
112
FRC (kHz)
25 °C
110
108
106 85 °C
104
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
8.3
85 °C
8.2
8.1
25 °C
FRC (MHz)
7.9
-40 °C
7.8
7.7
7.6
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
369
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
8.3
5.5 V
8.2 4.0 V
3.0 V
8.1
FRC (MHz)
8
7.9
7.8
-40 -20 0 20 40 60 80 100
Temperature (°C)
Figure 29-84. ATmega88PA: Calibrated 8 MHz RC Oscillator Frequency vs. OSCCAL Value
14
85 °C
12 25 °C
-40 °C
10
FRC (MHz)
0
0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 256
OSCCAL (X1)
370
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
200
ICC (uA)
150
100
50
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
90
-40 °C
80 25 °C
85 °C
70
60
ICC (uA)
50
40
30
20
10
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
371
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
160 85 °C
25 °C
140 -40 °C
120
100
ICC (uA)
80
60
40
20
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
50
40
30
ICC (uA)
85 °C
25 °C
20
-40 °C
10
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
372
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
8
-40 °C
7 25 °C
6
85 °C
5
ICC (mA)
4
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-90. ATmega88PA: Reset Supply Current vs. Low Frequency (0.1 - 1.0 MHz)
0.12
5.5 V
0.1
5.0 V
0.08
4.5 V
ICC (mA)
0.06 4.0 V
3.3 V
0.04
2.7 V
1.8 V
0.02
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Frequency (MHz)
373
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
2 5.5 V
5.0 V
1.6
4.5 V
1.2
ICC (mA)
4.0 V
0.8
3.3 V
0.4
2.7 V
1.8 V
0
0 2 4 6 8 10 12 14 16 18 20
Frequency (MHz)
1600
1400
1200
Pulsewidth (ns)
1000
800
600
400 85 °C
25 °C
200 -40 °C
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
374
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-93. ATmega168PA: Active Supply Current vs. Low Frequency (0.1-1.0 MHz)
1
5.5 V
0.8 5.0 V
4.5 V
0.6
ICC (mA)
4.0 V
0.4 3.3 V
2.7 V
0.2 1.8 V
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Frequency (MHz)
Figure 29-94. ATmega168PA: Active Supply Current vs. Frequency (1-20 MHz)
12
5.5 V
10
5.0 V
8
4.5 V
ICC (mA)
6
4.0 V
4
3.3 V
2
2.7 V
1.8 V
0
0 2 4 6 8 10 12 14 16 18 20
Frequency (MHz)
375
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-95. ATmega168PA: Active Supply Current vs. VCC (Internal RC Oscillator, 128 kHz)
0.15
-40 °C
85 °C
0.12 25 °C
0.09
ICC (mA)
0.06
0.03
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-96. ATmega168PA: Active Supply Current vs. VCC (Internal RC Oscillator, 1 MHz)
1.2
85 °C
25 °C
1
-40 °C
0.8
ICC (mA)
0.6
0.4
0.2
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
376
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-97. ATmega168PA: Active Supply Current vs. VCC (Internal RC Oscillator, 8 MHz)
5 85 °C
25 °C
-40 °C
4
ICC (mA) 2
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-98. ATmega168PA: Idle Supply Current vs. Low Frequency (0.1-1.0 MHz)
0.15
5.5 V
0.12
5.0 V
0.09 4.5 V
ICC (mA)
4.0 V
0.06
3.3 V
2.7 V
0.03
1.8 V
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Frequency (MHz)
377
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-99. ATmega168PA: Idle Supply Current vs. Frequency (1-20 MHz)
3
2.5 5.5 V
5.0 V
2
4.5 V
ICC (mA)
1.5
4.0 V
1
3.3 V
0.5
2.7 V
0
1.8 V
0 2 4 6 8 10 12 14 16 18 20
Frequency (MHz)
Figure 29-100.IATmega168PA: dle Supply Current vs. VCC (Internal RC Oscillator, 128 kHz)
0.04
85 °C
0.035
0.03
25 °C
0.025 -40 °C
ICC (mA)
0.02
0.015
0.01
0.005
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
378
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-101.ATmega168PA: Idle Supply Current vs. VCC (Internal RC Oscillator, 1 MHz)
0.3
85 °C
25 °C
0.25 -40 °C
0.2
ICC (mA)
0.15
0.1
0.05
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-102.ATmega168PA: Idle Supply Current vs. Vcc (Internal RC Oscillator, 8 MHz)
1.2 85 °C
25 °C
-40 °C
0.9
ICC (mA)
0.6
0.3
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
379
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Table 29-5. ATmega168PA: Additional Current Consumption for the different I/O modules
(absolute values)
PRR bit Typical numbers
VCC = 2V, F = 1 MHz VCC = 3V, F = 4 MHz VCC = 5V, F = 8 MHz
PRUSART0 2.86 uA 20.3 uA 52.2 uA
PRTWI 6.00 uA 44.1uA 122.0 uA
PRTIM2 4.97 uA 33.2 uA 79.8 uA
PRTIM1 3.50 uA 23.0 uA 55.3 uA
PRTIM0 1.43 uA 9.2 uA 21.4 uA
PRSPI 5.01 uA 38.6 uA 111.4 uA
PRADC 6.34 uA 45.7 uA 123.6 uA
Table 29-6. ATmega168PA: Additional Current Consumption (percentage) in Active and Idle
mode
Additional Current consumption Additional Current consumption
compared to Active with external compared to Idle with external
clock (see Figure 29-93 on page clock (see Figure 29-98 on page
375 and Figure 29-94 on page 377 and Figure 29-99 on page
PRR bit 375) 378)
PRUSART0 1.5% 8.9%
PRTWI 3.2% 19.5%
PRTIM2 2.4% 14.8%
PRTIM1 1.7% 10.3%
PRTIM0 0.7% 4.1%
PRSPI 2.9% 17.1%
PRADC 3.4% 20.3%
It is possible to calculate the typical current consumption based on the numbers from Table 29-6
on page 380 for other VCC and frequency settings than listed in Table 29-5 on page 380.
Example Calculate the expected current consumption in idle mode with TIMER1, ADC, and SPI enabled
at VCC = 2.0V and F = 1MHz. From Table 29-6 on page 380, third column, we see that we need
to add 10.3% for the TIMER1, 20.3% for the ADC, and 17.1% for the SPI module. Reading from
Figure 29-98 on page 377, we find that the idle current consumption is ~0.027 mA at VCC = 2.0V
and F = 1MHz. The total current consumption in idle mode with TIMER1, ADC, and SPI enabled,
gives:
I CC total ≈ 0.027 mA ⋅ (1 + 0.103 + 0.203 + 0.171) ≈ 0.040 mA
380
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
85 °C
0.8
0.6
ICC (uA)
0.4
0.2
25 °C
-40 °C
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-104.ATmega168PA: Power-Down Supply Current vs. VCC (Watchdog Timer Enabled)
8
-40 °C
85 °C
25 °C
6
ICC (uA)
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
381
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-105.ATmega168PA: Power-Save Supply Current vs. VCC (Watchdog Timer Disabled
and 32 kHz Crystal Oscillator Running)
2.5
85 °C
2
1.5
ICC (uA)
-40 °C
1
25 °C
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-106.ATmega168PA: Standby Supply Current vs. Vcc (Watchdog Timer Disabled)
0.14 6MHz_xtal
6MHz_res
0.12
4MHz_res
0.1 4MHz_xtal
0.08
ICC(mA)
2MHz_res
2MHz_xtal
0.06 450kHz_res
1MHz_res
0.04
0.02
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (MHz)
382
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-107.ATmega168PA: I/O Pin Pull-up Resistor Current vs. Input Voltage (VCC = 1.8 V)
50
40
30
IOP (uA)
20
10 25 °C
-40 °C
0 85 °C
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
VOP (V)
Figure 29-108.ATmega168PA: I/O Pin Pull-up Resistor Current vs. Input Voltage (VCC = 2.7 V)
80
70
60
50
IOP (uA)
40
30
20 25 °C
10 -40 °C
85 °C
0
0 0.5 1 1.5 2 2.5 3
VOP (V)
383
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-109.ATmega168PA: I/O Pin Pull-up Resistor Current vs. Input Voltage (VCC = 5 V)
160
140
120
100
IOP (uA)
80
60
40 25 °C
20 -40 °C
85 °C
0
0 1 2 3 4 5 6
VOP (V)
Figure 29-110.ATmega168PA: Reset Pull-up Resistor Current vs. Reset Pin Voltage
(VCC = 1.8 V)
40
35
30
25
IRESET (uA)
20
15
10
25 °C
5 -40 °C
0
85 °C
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8
VRESET (V)
384
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-111.ATmega168PA: Reset Pull-up Resistor Current vs. Reset Pin Voltage
(VCC = 2.7 V)
60
50
40
IRESET (uA) 30
20
25 °C
10
-40 °C
85 °C
0
0 0.5 1 1.5 2 2.5 3
VRESET (V)
Figure 29-112.ATmega168PA: Reset Pull-up Resistor Current vs. Reset Pin Voltage (VCC = 5V)
120
100
80
IRESET (uA)
60
40
20 25 °C
-40 °C
0
85 °C
0 1 2 3 4 5
VRESET (V)
385
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
85 °C
0.8
25 °C
0.6
VOL (V)
-40 °C
0.4
0.2
0
0 4 8 12 16 20
IOL (mA)
0.3
0.2
0.1
0
0 4 8 12 16 20
IOL (mA)
386
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
2.5
-40 °C
25 °C
2 85 °C
0.5
0
0 4 8 12 16 20
IOH (mA)
4.8
4.6
-40 °C
VOH (V)
25 °C
4.4 85 °C
4.2
4
0 4 8 12 16 20
IOH (mA)
387
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-117.ATmega168PA: I/O Pin Input Threshold Voltage vs. VCC (VIH, I/O Pin read as ‘1’)
3 85 °C
25 °C
2.5 -40 °C
Threshold (V)
1.5
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-118.ATmega168PA: I/O Pin Input Threshold Voltage vs. VCC (VIL, I/O Pin read as ‘0’)
2.5 85 °C
25 °C
-40 °C
2
Threshold (V)
1.5
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
388
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
0.6 85 °C
25 °C
-40 °C
0.5
0.3
0.2
0.1
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-120.ATmega168PA: Reset Input Threshold Voltage vs. VCC (VIH, I/O Pin read as ‘1’)
1.5 85 °C
-40 °C
25 °C
1.2
Threshold (V)
0.9
0.6
0.3
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
389
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-121.ATmega168PA: Reset Input Threshold Voltage vs. VCC (VIL, I/O Pin read as ‘0’)
2.5 -40 °C
85 °C
25 °C
2
Threshold (V)
1.5
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
0.7
0.6
0.5
Input Hysteresis (mV)
0.4
0.3
0.2
85 °C
0.1 25 °C
-40 °C
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
390
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
1.84
Rising Vcc
1.82
Threshold (V)
1.8
Falling Vcc
1.78
1.76
1.74
1.72
-50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90
Temperature (°C)
Rising Vcc
2.74
2.72
Threshold (V)
2.7
2.68
Falling Vcc
2.66
2.64
2.62
-50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90
Temperature (°C)
391
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
4.32
Rising Vcc
4.3
Threshold (V)
4.28
4.26
Falling Vcc
4.24
4.22
4.2
-50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90
Temperature (°C)
121
119
117
FRC (kHz)
115
2.7 V
113 3.3 V
5.5 V
111
-40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90
Temperature (°C)
392
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
122
120
-40 °C
118
FRC (kHz)
116 25 °C
114
112
85 °C
110
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
8,4
85 °C
8.2
25 °C
8
FRC (MHz)
7.8
-40 °C
7.6
7.4
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
393
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
8.3
5.5 V
8.2 5.0 V
2.7 V
8.1
1.8 V
8
FRC (MHz)
7.9
7.8
7.7
7.6
7.5
-50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90
Temperature (°C)
16
85 °C
14 25 °C
-40 °C
12
10
FRC (MHz)
0
0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 256
OSCCAL (X1)
394
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
-40 °C
300 25 °C
85 °C
200
150
100
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
90
-40 °C
80 25 °C
85 °C
70
ICC (uA)
60
50
40
30
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
395
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
180 25 °C
160 85 °C
-40 °C
140
120
ICC (uA)
100
80
60
40
20
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
26
85 °C
24
25 °C
22
-40 °C
20
ICC (uA)
18
16
14
12
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
396
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
10
-40 °C
8 25 °C
6 85 °C
ICC (mA)
4
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-136.ATmega168PA: Reset Supply Current vs. Low Frequency (0.1 - 1.0 MHz)
0.12
5.5 V
0.1
5.0 V
0.08
4.5 V
ICC (mA)
0.06 4.0 V
3.3 V
0.04
2.7 V
0.02 1.8 V
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Frequency (MHz)
397
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
5.5 V
2
5.0 V
1.5 4.5 V
ICC (mA)
4.0 V
1
3.3 V
0.5
2.7 V
0
1.8 V
0 2 4 6 8 10 12 14 16 18 20
Frequency (MHz)
1750
1500
1250
Pulsewidth (ns)
1000
750
500
85 °C
250 25 °C
-40 °C
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
398
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-139.ATmega328P: Active Supply Current vs. Low Frequency (0.1-1.0 MHz)
1.2
5.5 V
1
5.0 V
0.8 4.5 V
ICC (mA)
4.0 V
0.6
3.3 V
0.4 2.7 V
1.8 V
0.2
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Frequency (MHz)
14
5.5 V
12 5.0 V
10 4.5 V
ICC (mA)
4.0 V
6
3.3 V
4
2.7 V
2
1.8 V
0
0 2 4 6 8 10 12 14 16 18 20
Frequency (MHz)
399
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-141.ATmega328P: Active Supply Current vs. VCC (Internal RC Oscillator, 128 kHz)
0.16
85 °C
25 °C
0.12 -40 °C
ICC (mA)
0.08
0.04
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-142.ATmega328P: Active Supply Current vs. VCC (Internal RC Oscillator, 1 MHz)
1.4
85 °C
1.2 25 °C
-40 °C
1
0.8
ICC (mA)
0.6
0.4
0.2
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
400
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-143.ATmega328P: Active Supply Current vs. VCC (Internal RC Oscillator, 8 MHz)
8
7
85 °C
6 25 °C
-40 °C
5
ICC (mA)
4
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-144.ATmega328P: Idle Supply Current vs. Low Frequency (0.1-1.0 MHz)
0.2
5.5 V
0.16
5.0 V
4.5 V
0.12
ICC (mA)
4.0 V
0.08 3.3 V
2.7 V
0.04 1.8 V
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Frequency (MHz)
401
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
3.5
5.5 V
3
5.0 V
I CC (mA)
2.5 4.5 V
4.0 V
1.5
3.3 V
1
2.7 V
0.5
1.8 V
0
0 2 4 6 8 10 12 14 16 18 20
Frequency (MHz)
0.05
0.04 85 °C
ICC (mA)
25 °C
0.03
-40 °C
0.02
0.01
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
402
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-147.ATmega328P: Idle Supply Current vs. VCC (Internal RC Oscillator, 1 MHz)
0.4
0.35 85 °C
25 °C
0.3
-40 °C
ICC (mA) 0.25
0.2
0.15
0.1
0.05
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-148.ATmega328P: Idle Supply Current vs. Vcc (Internal RC Oscillator, 8 MHz)
85 °C
1.6
25 °C
-40 °C
1.2
ICC (mA)
0.8
0.4
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
403
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Table 29-7. ATmega328P: Additional Current Consumption for the different I/O modules
(absolute values)
PRR bit Typical numbers
VCC = 2V, F = 1MHz VCC = 3V, F = 4MHz VCC = 5V, F = 8MHz
PRUSART0 3.20 µA 22.17 µA 100.25 µA
PRTWI 7.34 µA 46.55 µA 199.25 µA
PRTIM2 7.34 µA 50.79 µA 224.25 µA
PRTIM1 6.19 µA 41.25 µA 176.25 µA
PRTIM0 1.89 µA 14.28 µA 61.13 µA
PRSPI 6.94 µA 43.84 µA 186.50 µA
PRADC 8.66 µA 61.80 µA 295.38 µA
Table 29-8. ATmega328P: Additional Current Consumption (percentage) in Active and Idle
mode
Additional Current consumption Additional Current consumption
compared to Active with external compared to Idle with external
clock (see Figure 29-139 on page clock (see Figure 29-144 on page
399 and Figure 29-140 on page 401 and Figure 29-145 on page
PRR bit 399) 402)
PRUSART0 1.4 % 7.8%
PRTWI 3.0 % 16.6 %
PRTIM2 3.3 % 17.8 %
PRTIM1 2.7 % 14.5 %
PRTIM0 0.9 % 4.8 %
PRSPI 2.9 % 15.7 %
PRADC 4.1 % 22.1 %
It is possible to calculate the typical current consumption based on the numbers from Table 29-8
on page 404 for other VCC and frequency settings than listed in Table 29-7 on page 404.
Example Calculate the expected current consumption in idle mode with TIMER1, ADC, and SPI enabled
at VCC = 2.0V and F = 1MHz. From Table 29-8 on page 404, third column, we see that we need
to add 14.5% for the TIMER1, 22.1% for the ADC, and 15.7% for the SPI module. Reading from
Figure 29-145 on page 402, we find that the idle current consumption is ~0.055 mA at VCC =
2.0V and F = 1MHz. The total current consumption in idle mode with TIMER1, ADC, and SPI
enabled, gives:
I CC total ≈ 0.045 mA ⋅ (1 + 0.145 + 0.221 + 0.157) ≈ 0.069 mA
404
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-149.ATmega328P: Power-Down Supply Current vs. VCC (Watchdog Timer Disabled)
1.2
85 °C
1
0.8
ICC (uA)
0.6
0.4
0.2
25 °C
0 -40 °C
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-150.ATmega328P: Power-Down Supply Current vs. VCC (Watchdog Timer Enabled)
10
9
-40 °C
8 85 °C
25 °C
7
6
ICC (uA)
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
405
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-151.ATmega328P: Power-Save Supply Current vs. VCC (Watchdog Timer Disabled
and 32 kHz Crystal Oscillator Running)
2
1.8
1.6
1.4 25 °C
1.2
ICC (uA)
0.8
0.6
0.4
0.2
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-152.ATmega328P: Standby Supply Current vs. Vcc (Watchdog Timer Disabled)
0.16
6MHz_res
0.14
6MHz_xtal
0.12 4MHz_res
4MHz_xtal
0.1
2MHz_res
ICC (mA)
0.08 2MHz_xtal
0.06 1MHz_res
0.04
0.02
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
406
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-153.ATmega328P: I/O Pin Pull-up Resistor Current vs. Input Voltage (VCC = 1.8 V)
60
50
40
IOP (uA)
30
20
10 25 °C
85 °C
0 -40 °C
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
VOP (V)
Figure 29-154.ATmega328P: I/O Pin Pull-up Resistor Current vs. Input Voltage (VCC = 2.7 V)
90
80
70
60
50
IOP (uA)
40
30
20 25 °C
10 85 °C
-40 °C
0
0 0.5 1 1.5 2 2.5 3
VOP (V)
407
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-155.ATmega328P: I/O Pin Pull-up Resistor Current vs. Input Voltage (VCC = 5 V)
160
140
120
80
60
40
25 °C
20 85 °C
-40 °C
0
0 1 2 3 4 5 6
VOP (V)
Figure 29-156.ATmega328P: Reset Pull-up Resistor Current vs. Reset Pin Voltage
(VCC = 1.8 V)
40
35
30
25
IRESET (uA)
20
15
10
25 °C
5 85 °C
-40 °C
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
VRESET(V)
408
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-157.ATmega328P: Reset Pull-up Resistor Current vs. Reset Pin Voltage
(VCC = 2.7 V)
70
60
50
IRESET (uA)
40
30
20
25 °C
10 85 °C
-40 °C
0
0 0.5 1 1.5 2 2.5 3
VRESET(V)
Figure 29-158.ATmega328P: Reset Pull-up Resistor Current vs. Reset Pin Voltage (VCC = 5 V)
120
100
80
IRESET(uA)
60
40
25 °C
20
85 °C
-40 °C
0
0 1 2 3 4 5 6
VRESET(V)
409
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-159.ATmega328P: I/O Pin Output Voltage vs. Sink Current (VCC = 3 V)
1
85 °C
0.8
25 °C
0.6
V OL (V)
-40 °C
0.4
0.2
0
0 5 10 15 20 25
IOL (mA)
Figure 29-160.ATmega328P: I/O Pin Output Voltage vs. Sink Current (VCC = 5 V)
0.6
85 °C
0.5
25 °C
0.4
-40 °C
V OL (V)
0.3
0.2
0.1
0
0 5 10 15 20 25
IOL (mA)
410
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-161.ATmega328P: I/O Pin Output Voltage vs. Source Current (Vcc = 3 V)
3.5
2.5
-40 °C
25 °C
2
V OH (V)
85 °C
1.5
0.5
0
0 5 10 15 20 25
IOH (mA)
4.9
4.8
V OH (V)
4.7
4.6
-40 °C
4.5
25 °C
4.4
85 °C
4.3
0 5 10 15 20 25
IOH (mA)
411
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
3.5
-40 °C
3
25 °C
85 °C
2.5
Threshold (V)
1.5
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-164.ATmega328P: I/O Pin Input Threshold Voltage vs. VCC (VIL, I/O Pin read as ‘0’)
2.5 85 °C
25 °C
2 -40 °C
Threshold (V)
1.5
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
412
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
0.7
-40 °C
0.6 25 °C
85 °C
0.5
Input Hysteresis (mV)
0.4
0.3
0.2
0.1
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-166.ATmega328P: Reset Input Threshold Voltage vs. VCC (VIH, I/O Pin read as ‘1’)
2.5
-40 °C
25 °C
2 85 °C
Threshold (V)
1.5
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
413
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Figure 29-167.ATmega328P: Reset Input Threshold Voltage vs. VCC (VIL, I/O Pin read as ‘0’)
2.5 85 °C
25 °C
2 -40 °C
0.5
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
0.7
0.6
0.5
Input Hysteresis (mV)
0.4
0.3
0.2
-40 °C
0.1 25 °C
85 °C
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
414
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
1.83
1
Threshold (V)
1.81
1.79 0
1.77
1.75
-60 -40 -20 0 20 40 60 80 100
Temperature (°C)
2.76
1
2.74
Threshold (V)
2.72
2.7
2.68
0
2.66
-60 -40 -20 0 20 40 60 80 100
Temperature (°C)
415
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
4.35
Threshold (V)
1
4.3
0
4.25
-60 -40 -20 0 20 40 60 80 100
Temperature (°C)
118
117
116
115
F RC (kHz)
114
113
112
2.7 V
111
3.3 V
110
4.0 V
5.5 V
109
-60 -40 -20 0 20 40 60 80 100
Temperature (°C)
416
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
118
-40 °C
116
F RC (kHz)
114 25 °C
112
110
85 °C
108
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
8.2
25 °C
8
F RC (MHz)
7.8 -40 °C
7.6
7.4
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
417
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
5.0 V
8.3
3.0 V
8.2
F RC (MHz) 8.1
7.9
7.8
7.7
7.6
-50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100
Temperature (°C)
14 85 °C
25 °C
12
-40 °C
10
F RC (MHz)
0
0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 256
OSCCAL (X1)
418
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
250
200
ICC (uA)
150
100
50
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
120
100
-40 °C
80 25 °C
85 °C
ICC (uA)
60
40
20
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
419
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
120
100
ICC (uA)
80
60
40
20
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
30
25 85 °C
25 °C
-40 °C
20
ICC (uA)
15
10
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
420
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
9
25 °C
8 85 °C
-40 °C
7
ICC (mA) 6
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
Figure 29-182.ATmega328P: Reset Supply Current vs. Low Frequency (0.1 - 1.0 MHz)
0.15
5.5 V
5.0 V
0.1 4.5 V
4.0 V
ICC (mA)
3.3 V
0.05 2.7 V
1.8 V
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Frequency (MHz)
421
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
2.5 5.0 V
4.5 V
2
ICC (mA)
4.0 V
1.5
1
3.3 V
0.5
2.7 V
1.8 V
0
0 2 4 6 8 10 12 14 16 18 20
Frequency (MHz)
1600
1400
1200
Pulsewidth (ns)
1000
800
600
400
85 °C
200 25 °C
-40 °C
0
1.5 2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
422
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
423
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Page
(0xBF) Reserved – – – – – – – –
(0xBE) Reserved – – – – – – – –
(0xBD) TWAMR TWAM6 TWAM5 TWAM4 TWAM3 TWAM2 TWAM1 TWAM0 – 244
(0xBC) TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN – TWIE 241
(0xBB) TWDR 2-wire Serial Interface Data Register 243
(0xBA) TWAR TWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCE 244
(0xB9) TWSR TWS7 TWS6 TWS5 TWS4 TWS3 – TWPS1 TWPS0 243
(0xB8) TWBR 2-wire Serial Interface Bit Rate Register 241
(0xB7) Reserved – – – – – – –
(0xB6) ASSR – EXCLK AS2 TCN2UB OCR2AUB OCR2BUB TCR2AUB TCR2BUB 164
(0xB5) Reserved – – – – – – – –
(0xB4) OCR2B Timer/Counter2 Output Compare Register B 162
(0xB3) OCR2A Timer/Counter2 Output Compare Register A 162
(0xB2) TCNT2 Timer/Counter2 (8-bit) 162
(0xB1) TCCR2B FOC2A FOC2B – – WGM22 CS22 CS21 CS20 161
(0xB0) TCCR2A COM2A1 COM2A0 COM2B1 COM2B0 – – WGM21 WGM20 158
(0xAF) Reserved – – – – – – – –
(0xAE) Reserved – – – – – – – –
(0xAD) Reserved – – – – – – – –
(0xAC) Reserved – – – – – – – –
(0xAB) Reserved – – – – – – – –
(0xAA) Reserved – – – – – – – –
(0xA9) Reserved – – – – – – – –
(0xA8) Reserved – – – – – – – –
(0xA7) Reserved – – – – – – – –
(0xA6) Reserved – – – – – – – –
(0xA5) Reserved – – – – – – – –
(0xA4) Reserved – – – – – – – –
(0xA3) Reserved – – – – – – – –
(0xA2) Reserved – – – – – – – –
(0xA1) Reserved – – – – – – – –
(0xA0) Reserved – – – – – – – –
(0x9F) Reserved – – – – – – – –
(0x9E) Reserved – – – – – – – –
(0x9D) Reserved – – – – – – – –
(0x9C) Reserved – – – – – – – –
(0x9B) Reserved – – – – – – – –
(0x9A) Reserved – – – – – – – –
(0x99) Reserved – – – – – – – –
(0x98) Reserved – – – – – – – –
(0x97) Reserved – – – – – – – –
(0x96) Reserved – – – – – – – –
(0x95) Reserved – – – – – – – –
(0x94) Reserved – – – – – – – –
(0x93) Reserved – – – – – – – –
(0x92) Reserved – – – – – – – –
(0x91) Reserved – – – – – – – –
(0x90) Reserved – – – – – – – –
(0x8F) Reserved – – – – – – – –
(0x8E) Reserved – – – – – – – –
(0x8D) Reserved – – – – – – – –
(0x8C) Reserved – – – – – – – –
(0x8B) OCR1BH Timer/Counter1 - Output Compare Register B High Byte 138
(0x8A) OCR1BL Timer/Counter1 - Output Compare Register B Low Byte 138
(0x89) OCR1AH Timer/Counter1 - Output Compare Register A High Byte 138
(0x88) OCR1AL Timer/Counter1 - Output Compare Register A Low Byte 138
(0x87) ICR1H Timer/Counter1 - Input Capture Register High Byte 138
(0x86) ICR1L Timer/Counter1 - Input Capture Register Low Byte 138
(0x85) TCNT1H Timer/Counter1 - Counter Register High Byte 138
(0x84) TCNT1L Timer/Counter1 - Counter Register Low Byte 138
(0x83) Reserved – – – – – – – –
(0x82) TCCR1C FOC1A FOC1B – – – – – – 137
(0x81) TCCR1B ICNC1 ICES1 – WGM13 WGM12 CS12 CS11 CS10 136
(0x80) TCCR1A COM1A1 COM1A0 COM1B1 COM1B0 – – WGM11 WGM10 134
(0x7F) DIDR1 – – – – – – AIN1D AIN0D 249
(0x7E) DIDR0 – – ADC5D ADC4D ADC3D ADC2D ADC1D ADC0D 266
424
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Page
(0x7D) Reserved – – – – – – – –
(0x7C) ADMUX REFS1 REFS0 ADLAR – MUX3 MUX2 MUX1 MUX0 262
(0x7B) ADCSRB – ACME – – – ADTS2 ADTS1 ADTS0 265
(0x7A) ADCSRA ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0 263
(0x79) ADCH ADC Data Register High byte 265
(0x78) ADCL ADC Data Register Low byte 265
(0x77) Reserved – – – – – – – –
(0x76) Reserved – – – – – – – –
(0x75) Reserved – – – – – – – –
(0x74) Reserved – – – – – – – –
(0x73) Reserved – – – – – – – –
(0x72) Reserved – – – – – – – –
(0x71) Reserved – – – – – – – –
(0x70) TIMSK2 – – – – – OCIE2B OCIE2A TOIE2 163
(0x6F) TIMSK1 – – ICIE1 – – OCIE1B OCIE1A TOIE1 139
(0x6E) TIMSK0 – – – – – OCIE0B OCIE0A TOIE0 111
(0x6D) PCMSK2 PCINT23 PCINT22 PCINT21 PCINT20 PCINT19 PCINT18 PCINT17 PCINT16 74
(0x6C) PCMSK1 – PCINT14 PCINT13 PCINT12 PCINT11 PCINT10 PCINT9 PCINT8 74
(0x6B) PCMSK0 PCINT7 PCINT6 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 74
(0x6A) Reserved – – – – – – – –
(0x69) EICRA – – – – ISC11 ISC10 ISC01 ISC00 71
(0x68) PCICR – – – – – PCIE2 PCIE1 PCIE0
(0x67) Reserved – – – – – – – –
(0x66) OSCCAL Oscillator Calibration Register 37
(0x65) Reserved – – – – – – – –
(0x64) PRR PRTWI PRTIM2 PRTIM0 – PRTIM1 PRSPI PRUSART0 PRADC 42
(0x63) Reserved – – – – – – – –
(0x62) Reserved – – – – – – – –
(0x61) CLKPR CLKPCE – – – CLKPS3 CLKPS2 CLKPS1 CLKPS0 37
(0x60) WDTCSR WDIF WDIE WDP3 WDCE WDE WDP2 WDP1 WDP0 54
0x3F (0x5F) SREG I T H S V N Z C 9
0x3E (0x5E) SPH – – – – – (SP10) 5. SP9 SP8 12
0x3D (0x5D) SPL SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 12
0x3C (0x5C) Reserved – – – – – – – –
0x3B (0x5B) Reserved – – – – – – – –
0x3A (0x5A) Reserved – – – – – – – –
0x39 (0x59) Reserved – – – – – – – –
0x38 (0x58) Reserved – – – – – – – –
0x37 (0x57) SPMCSR SPMIE (RWWSB)5. – (RWWSRE)5. BLBSET PGWRT PGERS SELFPRGEN 292
0x36 (0x56) Reserved – – – – – – – –
0x35 (0x55) MCUCR – BODS BODSE PUD – – IVSEL IVCE 44/68/92
0x34 (0x54) MCUSR – – – – WDRF BORF EXTRF PORF 54
0x33 (0x53) SMCR – – – – SM2 SM1 SM0 SE 40
0x32 (0x52) Reserved – – – – – – – –
0x31 (0x51) Reserved – – – – – – – –
0x30 (0x50) ACSR ACD ACBG ACO ACI ACIE ACIC ACIS1 ACIS0 247
0x2F (0x4F) Reserved – – – – – – – –
0x2E (0x4E) SPDR SPI Data Register 175
0x2D (0x4D) SPSR SPIF WCOL – – – – – SPI2X 174
0x2C (0x4C) SPCR SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0 173
0x2B (0x4B) GPIOR2 General Purpose I/O Register 2 25
0x2A (0x4A) GPIOR1 General Purpose I/O Register 1 25
0x29 (0x49) Reserved – – – – – – – –
0x28 (0x48) OCR0B Timer/Counter0 Output Compare Register B
0x27 (0x47) OCR0A Timer/Counter0 Output Compare Register A
0x26 (0x46) TCNT0 Timer/Counter0 (8-bit)
0x25 (0x45) TCCR0B FOC0A FOC0B – – WGM02 CS02 CS01 CS00
0x24 (0x44) TCCR0A COM0A1 COM0A0 COM0B1 COM0B0 – – WGM01 WGM00
0x23 (0x43) GTCCR TSM – – – – – PSRASY PSRSYNC 143/165
0x22 (0x42) EEARH (EEPROM Address Register High Byte) 5. 21
0x21 (0x41) EEARL EEPROM Address Register Low Byte 21
0x20 (0x40) EEDR EEPROM Data Register 21
0x1F (0x3F) EECR – – EEPM1 EEPM0 EERIE EEMPE EEPE EERE 21
0x1E (0x3E) GPIOR0 General Purpose I/O Register 0 25
0x1D (0x3D) EIMSK – – – – – – INT1 INT0 72
0x1C (0x3C) EIFR – – – – – – INTF1 INTF0 72
425
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Page
0x1B (0x3B) PCIFR – – – – – PCIF2 PCIF1 PCIF0
0x1A (0x3A) Reserved – – – – – – – –
0x19 (0x39) Reserved – – – – – – – –
0x18 (0x38) Reserved – – – – – – – –
0x17 (0x37) TIFR2 – – – – – OCF2B OCF2A TOV2 163
0x16 (0x36) TIFR1 – – ICF1 – – OCF1B OCF1A TOV1 139
0x15 (0x35) TIFR0 – – – – – OCF0B OCF0A TOV0
0x14 (0x34) Reserved – – – – – – – –
0x13 (0x33) Reserved – – – – – – – –
0x12 (0x32) Reserved – – – – – – – –
0x11 (0x31) Reserved – – – – – – – –
0x10 (0x30) Reserved – – – – – – – –
0x0F (0x2F) Reserved – – – – – – – –
0x0E (0x2E) Reserved – – – – – – – –
0x0D (0x2D) Reserved – – – – – – – –
0x0C (0x2C) Reserved – – – – – – – –
0x0B (0x2B) PORTD PORTD7 PORTD6 PORTD5 PORTD4 PORTD3 PORTD2 PORTD1 PORTD0 93
0x0A (0x2A) DDRD DDD7 DDD6 DDD5 DDD4 DDD3 DDD2 DDD1 DDD0 93
0x09 (0x29) PIND PIND7 PIND6 PIND5 PIND4 PIND3 PIND2 PIND1 PIND0 93
0x08 (0x28) PORTC – PORTC6 PORTC5 PORTC4 PORTC3 PORTC2 PORTC1 PORTC0 92
0x07 (0x27) DDRC – DDC6 DDC5 DDC4 DDC3 DDC2 DDC1 DDC0 92
0x06 (0x26) PINC – PINC6 PINC5 PINC4 PINC3 PINC2 PINC1 PINC0 92
0x05 (0x25) PORTB PORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0 92
0x04 (0x24) DDRB DDB7 DDB6 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 92
0x03 (0x23) PINB PINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 92
0x02 (0x22) Reserved – – – – – – – –
0x01 (0x21) Reserved – – – – – – – –
0x0 (0x20) Reserved – – – – – – – –
Note: 1. For compatibility with future devices, reserved bits should be written to zero if accessed. Reserved I/O memory addresses
should never be written.
2. I/O Registers within the address range 0x00 - 0x1F are directly bit-accessible using the SBI and CBI instructions. In these
registers, the value of single bits can be checked by using the SBIS and SBIC instructions.
3. Some of the Status Flags are cleared by writing a logical one to them. Note that, unlike most other AVRs, the CBI and SBI
instructions will only operate on the specified bit, and can therefore be used on registers containing such Status Flags. The
CBI and SBI instructions work with registers 0x00 to 0x1F only.
4. When using the I/O specific commands IN and OUT, the I/O addresses 0x00 - 0x3F must be used. When addressing I/O
Registers as data space using LD and ST instructions, 0x20 must be added to these addresses. The
ATmega48PA/88PA/168PA/328P is a complex microcontroller with more peripheral units than can be supported within the 64
location reserved in Opcode for the IN and OUT instructions. For the Extended I/O space from 0x60 - 0xFF in SRAM, only
the ST/STS/STD and LD/LDS/LDD instructions can be used.
5. Only valid for ATmega88PA/168PA.
426
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
427
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
428
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
429
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
32.1 ATmega48PA
Package Type
32A 32-lead, Thin (1.0 mm) Plastic Quad Flat Package (TQFP)
28M1 28-pad, 4 x 4 x 1.0 body, Lead Pitch 0.45 mm Quad Flat No-Lead/Micro Lead Frame Package (QFN/MLF)
32M1-A 32-pad, 5 x 5 x 1.0 body, Lead Pitch 0.50 mm Quad Flat No-Lead/Micro Lead Frame Package (QFN/MLF)
28P3 28-lead, 0.300” Wide, Plastic Dual Inline Package (PDIP)
430
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
32.2 ATmega88PA
Package Type
32A 32-lead, Thin (1.0 mm) Plastic Quad Flat Package (TQFP)
28M1 28-pad, 4 x 4 x 1.0 body, Lead Pitch 0.45 mm Quad Flat No-Lead/Micro Lead Frame Package (QFN/MLF)
32M1-A 32-pad, 5 x 5 x 1.0 body, Lead Pitch 0.50 mm Quad Flat No-Lead/Micro Lead Frame Package (QFN/MLF)
28P3 28-lead, 0.300” Wide, Plastic Dual Inline Package (PDIP)
431
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
32.3 ATmega168PA
Package Type
32A 32-lead, Thin (1.0 mm) Plastic Quad Flat Package (TQFP)
28M1 28-pad, 4 x 4 x 1.0 body, Lead Pitch 0.45 mm Quad Flat No-Lead/Micro Lead Frame Package (QFN/MLF)
32M1-A 32-pad, 5 x 5 x 1.0 body, Lead Pitch 0.50 mm Quad Flat No-Lead/Micro Lead Frame Package (QFN/MLF)
28P3 28-lead, 0.300” Wide, Plastic Dual Inline Package (PDIP)
432
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
32.4 ATmega328P
Package Type
32A 32-lead, Thin (1.0 mm) Plastic Quad Flat Package (TQFP)
28P3 28-lead, 0.300” Wide, Plastic Dual Inline Package (PDIP)
32M1-A 32-pad, 5 x 5 x 1.0 body, Lead Pitch 0.50 mm Quad Flat No-Lead/Micro Lead Frame Package (QFN/MLF)
433
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
33.1 32A
PIN 1
B
PIN 1 IDENTIFIER
e E1 E
D1
D
C 0˚~7˚
A1 A2 A
L
COMMON DIMENSIONS
(Unit of Measure = mm)
10/5/2001
TITLE DRAWING NO. REV.
2325 Orchard Parkway
32A, 32-lead, 7 x 7 mm Body Size, 1.0 mm Body Thickness,
R San Jose, CA 95131 32A B
0.8 mm Lead Pitch, Thin Profile Plastic Quad Flat Package (TQFP)
434
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
33.2 28M1
1
Pin 1 ID
2
3 E SIDE VIEW
TOP VIEW
A2
D2
A1
1 0.08 C
Pin #1 2
Notch COMMON DIMENSIONS
(0.20 R) 3 E2 (Unit of Measure = mm)
10/27/04
TITLE DRAWING NO. REV.
2325 Orchard Parkway 20M1, 20-pad, 4 x 4 x 0.8 mm Body, Lead Pitch 0.50 mm,
S J CA 9 131 26 E d P d Mi L dF P k (MLF) 20M1 A
435
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
33.3 32M1-A
D1
1
0
2
3 Pin 1 ID
E1 E SIDE VIEW
TOP VIEW A3
A2
A1
A
K
0.08 C COMMON DIMENSIONS
P (Unit of Measure = mm)
D2
SYMBOL MIN NOM MAX NOTE
A 0.80 0.90 1.00
1 A1 – 0.02 0.05
P
2 A2 – 0.65 1.00
Pin #1 Notch
(0.20 R) 3
A3 0.20 REF
E2
b 0.18 0.23 0.30
5/25/06
TITLE DRAWING NO. REV.
2325 Orchard Parkway
32M1-A, 32-pad, 5 x 5 x 1.0 mm Body, Lead Pitch 0.50 mm, 32M1-A E
R San Jose, CA 95131 3.10 mm Exposed Pad, Micro Lead Frame Package (MLF)
436
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
33.4 28P3
D
PIN
1
E1
SEATING PLANE
A1
L B2
B (4 PLACES)
B1
e
COMMON DIMENSIONS
0º ~ 15º REF (Unit of Measure = mm)
C
SYMBOL MIN NOM MAX NOTE
eB A – – 4.5724
A1 0.508 – –
D 34.544 – 34.798 Note 1
E 7.620 – 8.255
E1 7.112 – 7.493 Note 1
B 0.381 – 0.533
Note: 1. Dimensions D and E1 do not include mold Flash or Protrusion. B1 1.143 – 1.397
Mold Flash or Protrusion shall not exceed 0.25 mm (0.010"). B2 0.762 – 1.143
L 3.175 – 3.429
C 0.203 – 0.356
eB – – 10.160
e 2.540 TYP
09/28/01
TITLE DRAWING NO. REV.
2325 Orchard Parkway
28P3, 28-lead (0.300"/7.62 mm Wide) Plastic Dual 28P3 B
R San Jose, CA 95131 Inline Package (PDIP)
437
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
34. Errata
34.1.1 Rev. D
No known errata.
34.2.1 Rev. F
No known errata.
34.3.1 Rev E
No known errata.
34.4.1 Rev D
No known errata.
34.4.2 Rev C
Not sampled.
34.4.3 Rev B
• Unstable 32 kHz Oscillator
34.4.4 Rev A
• Unstable 32 kHz Oscillator
438
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
1. Updated ”Features” on page 1 for ATmega48PA and updated the book accordingly.
2. Updated ”Overview” on page 5 included the Table 2-1 on page 6.
3. Updated ”AVR Memories” on page 16 included ”Register Description” on page 21 and inserted
Figure 7-1 on page 17.
4. Updated ”Register Description” on page 44.
5. Updated ”System Control and Reset” on page 46.
439
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
440
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Table of Contents
Features ..................................................................................................... 1
2 Overview ................................................................................................... 5
2.1Block Diagram ...........................................................................................................5
2.2Comparison Between ATmega48PA, ATmega88PA, ATmega168PA and
ATmega328P 6
3 Resources ................................................................................................. 7
i
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
11 Interrupts ................................................................................................ 57
11.1Interrupt Vectors in ATmega48PA .........................................................................57
11.2Interrupt Vectors in ATmega88PA .........................................................................59
11.3Interrupt Vectors in ATmega168PA .......................................................................62
11.4Interrupt Vectors in ATmega328P .........................................................................65
11.5Register Description ..............................................................................................68
ii
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
13 I/O-Ports .................................................................................................. 75
13.1Overview ...............................................................................................................75
13.2Ports as General Digital I/O ...................................................................................76
13.3Alternate Port Functions ........................................................................................80
13.4Register Description ..............................................................................................92
iii
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
iv
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
v
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
vi
8161D–AVR–10/09
ATmega48PA/88PA/168PA/328P
Table of Contents....................................................................................... i
vii
8161D–AVR–10/09
Headquarters International
Product Contact
Literature Requests
www.atmel.com/literature
Disclaimer: The information in this document is provided in connection with Atmel products. No license, express or implied, by estoppel or otherwise, to any
intellectual property right is granted by this document or in connection with the sale of Atmel products. EXCEPT AS SET FORTH IN ATMEL’S TERMS AND CONDI-
TIONS OF SALE LOCATED ON ATMEL’S WEB SITE, ATMEL ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED OR STATUTORY
WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDEN-
TAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, OR LOSS OF INFORMATION) ARISING OUT OF
THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Atmel makes no
representations or warranties with respect to the accuracy or completeness of the contents of this document and reserves the right to make changes to specifications
and product descriptions at any time without notice. Atmel does not make any commitment to update the information contained herein. Unless specifically provided
otherwise, Atmel products are not suitable for, and shall not be used in, automotive applications. Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life.
© 2009 Atmel Corporation. All rights reserved. Atmel ®, Atmel logo and combinations thereof, AVR®, AVR® logo and others are registered trade-
marks or trademarks of Atmel Corporation or its subsidiaries. Other terms and product names may be trademarks of others.
8161D–AVR–10/09