ATtiny15L
51
Table 24.
High-voltage Serial Programming Instruction Set for ATtiny15L
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 after Instr.3 until PB2 goes
high 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_000
a
_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_0011_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_000
a
_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
PB1
PB2
0_0000_0000_00
0_0111_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.
Write EEPROM
Low Address
PB0
PB1
PB2
0_0001_0001_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_00
bb
_
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_00
bb
_
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
PB0
PB1
PB2
0_0100_0000_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_
8765
_11
43
_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 after Instr.4 until PB2 goes
high. Write
8
-
3
= “0” to program
the Fuse bit.
Write Lock bits
PB0
PB1
PB2
0_0010_0000_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_0000_0
21
0_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.
Read Fuse bits
PB0
PB1
PB2
0_0000_0100_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1000_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
8
_
765
x_x
43
x_xx
Reading
8
-
3
= “0” means the Fuse
bit is programmed.