ATMEGA164A-PU Atmel, ATMEGA164A-PU Datasheet - Page 301
Manufacturer Part Number
IC MCU AVR 16K 20MHZ 40PDIP
Specifications of ATMEGA164A-PU
I²C, SPI, UART/USART
Brown-out Detect/Reset, POR, PWM, WDT
Number Of I /o
Program Memory Size
16KB (8K x 16)
Program Memory Type
512 x 8
1K x 8
Voltage - Supply (vcc/vdd)
1.8 V ~ 5.5 V
-40°C ~ 85°C
Package / Case
40-DIP (0.600", 15.24mm)
No. Of I/o's
Eeprom Memory Size
Ram Memory Size
Lead Free Status / RoHS Status
Lead free / RoHS Compliant
Enter Programming Mode
Considerations for Efficient Programming
Table 26-13. Command Byte Bit Encoding
The following algorithm puts the device in parallel programming mode:
1. Apply 4.5 - 5.5V between V
2. Set RESET to “0” and toggle XTAL1 at least six times.
3. Set the Prog_enable pins listed in
4. Apply 11.5 - 12.5V to RESET. Any activity on Prog_enable pins within 100 ns after +12V
5. Wait at least 50 µs before sending a new command.
The loaded command and address are retained in the device during programming. For efficient
programming, the following should be considered.
• The command needs only be loaded once when writing or reading multiple memory locations.
• Skip writing the data value 0xFF, that is the contents of the entire EEPROM (unless the
• Address high byte needs only be loaded before programming or reading a new 256 word
The Chip Erase will erase the Flash and EEPROM
not reset until the program memory has been completely erased. The Fuse bits are not
changed. A Chip Erase must be performed before the Flash and/or EEPROM are
Load Command “Chip Erase”
EESAVE Fuse is programmed) and Flash after a Chip Erase.
window in Flash or 256 byte EEPROM. This consideration also applies to Signature bytes
has been applied to RESET, will cause the device to fail entering programming mode.
1. The EEPRPOM memory is preserved during Chip Erase if the EESAVE Fuse is programmed.
Write Fuse bits
Write Lock bits
Read Signature Bytes and Calibration byte
Read Fuse and Lock bits
Table 26-11 on page 300
memories plus Lock bits. The Lock bits are
to “0000” and wait at least