beautypg.com

Attiny15l – Rainbow Electronics ATtiny15L User Manual

Page 57

background image

57

ATtiny15L

1187E–AVR–06/02

Table 25. High-voltage Serial Programming Instruction Set for ATtiny15L

(1)

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_000a_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_000a_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_ooox_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_ooox_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_00bb_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_00bb_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_ooox_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_1143_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

210_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_765x_x43x_xx

Reading 8 - 3 = “0” means the
Fuse bit is programmed.