40
AT90S/LS2323/2343
1004D–09/01
Table 16.
High-voltage Serial Programming Instruction Set
Instruction
Instruction Format
Operation Remarks
Instr.1
Instr.2
Instr.3
Instr.4
Chip Erase
PB0
PB1
PB2
0_1000_0000_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_0100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0100_1100_00
x_xxxx_xxxx_xx
Wait t
WLWH_CE
after Instr.3 for
the Chip Erase cycle to finish.
Write Flash
High and Low
Address
PB0
PB1
PB2
0_0001_0000_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_0000_00
aa
_00
0_0001_1100_00
x_xxxx_xxxx_xx
0_
bbbb
_
bbbb
_00
0_0000_1100_00
x_xxxx_xxxx_xx
Repeat Instr.2 for a new
256-byte page. Repeat Instr.3
for each new address.
Write Flash
Low Byte
PB0
PB1
PB2
0_
i i i i
_
i i i i
_00
0_0010_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_0100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
0_0000_0000_00
Wait after Instr.3 until PB2
goes high. Repeat Instr.1,
Instr. 2 and Instr.3 for each
new address.
Write Flash
High Byte
PB0
PB1
PB2
0_
i i i i
_
i i i i
_00
0_0010_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0111_0100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0111_1100_00
0_0000_0000_00
Wait after Instr.3 until PB2
goes high. Repeat Instr.1,
Instr. 2 and Instr.3 for each
new address.
Read Flash
High and Low
Address
PB0
PB1
PB2
0_0000_0010_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_0000_00
aa
_00
0_0001_1100_00
x_xxxx_xxxx_xx
0_
bbbb
_
bbbb
_00
0_0000_1100_00
x_xxxx_xxxx_xx
Repeat Instr.2 and Instr.3 for
each new address.
Read Flash
Low Byte
PB0
PB1
PB2
0_0000_0000_00
0_0110_1000_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
o
_
oooo
_
ooo
x_xx
Repeat Instr.1 and Instr.2 for
each new address.
Read Flash
High Byte
PB0
PB1P
B2
0_0000_0000_00
0_0111_1000_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0111_1100_00
o
_
oooo
_
ooo
x_xx
Repeat Instr.1 and Instr.2 for
each new address.
Write
EEPROM
Low Address
PB0
PB1
PB2
0_0001_0001_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_0
bbb
_
bbbb
_00
0_0000_1100_00
x_xxxx_xxxx_xx
Repeat Instr.2 for each new
address.
Write
EEPROM
Byte
PB0
PB1
PB2
0_
i i i i
_
i i i i
_00
0_0010_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_0100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
0_0000_0000_00
Wait after Instr.3 until PB2
goes high
Read
EEPROM
Low Address
PB0
PB1
PB2
0_0000_0011_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_0
bbb
_
bbbb
_00
0_0000_1100_00
x_xxxx_xxxx_xx
Repeat Instr.2 for each new
address.
Read
EEPROM
Byte
PB0
PB1
PB2
0_0000_0000_00
0_0110_1000_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
o
_
oooo
_
ooo
x_xx
Repeat Instr.2 for each new
address
Write Fuse
Bits (AT90S/
LS2323)
PB0
PB1
PB2
0_0100_0000_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_11
S
1_111
F
_00
0_0010_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_0100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
x_xxxx_xxxx_xx
Wait t
WLWH_PFB
after Instr.3 for
the Write Fuse bits cycle to
finish. Set
S
,
F
= “0” to
program, “1” to unprogram.
Write Fuse
Bits (AT90S/
LS2343)
PB0
PB1
PB2
0_0100_0000_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_11
S
1_111
R
_00
0_0010_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_0100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
x_xxxx_xxxx_xx
Wait t
WLWH_PFB
after Instr.3 for
the Write Fuse bits cycle to
finish. Set
S
,
R
= “0” to
program, “1” to unprogram.
Write Lock
Bits
PB0
PB1
PB2
0_0010_0000_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_1111_1
21
1_00
0_0010_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_0100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
0_0000_0000_00
Wait after Instr.4 until PB2
goes high. Write
2
,
1
= “0” to
program the Lock bit.