beautypg.com

Programming the flash, Reading the flash – Rainbow Electronics ATmega3290P_V User Manual

Page 310

background image

310

ATmega329/3290/649/6490

2552H–AVR–11/06

Programming the Flash

Before programming the Flash a Chip Erase must be performed, see “Performing Chip
Erase” on page 309.

1.

Enter JTAG instruction PROG_COMMANDS.

2.

Enable Flash write using programming instruction 2a.

3.

Load address High byte using programming instruction 2b.

4.

Load address Low byte using programming instruction 2c.

5.

Load data using programming instructions 2d, 2e and 2f.

6.

Repeat steps 4 and 5 for all instruction words in the page.

7.

Write the page using programming instruction 2g.

8.

Poll for Flash write complete using programming instruction 2h, or wait for t

WLRH

(refer to Table 134 on page 295).

9.

Repeat steps 3 to 7 until all data have been programmed.

A more efficient data transfer can be achieved using the PROG_PAGELOAD
instruction:

1.

Enter JTAG instruction PROG_COMMANDS.

2.

Enable Flash write using programming instruction 2a.

3.

Load the page address using programming instructions 2b and 2c. PCWORD
(refer to Table 132 on page 286) is used to address within one page and must be
written as 0.

4.

Enter JTAG instruction PROG_PAGELOAD.

5.

Load the entire page by shifting in all instruction words in the page byte-by-byte,
starting with the LSB of the first instruction in the page and ending with the MSB
of the last instruction in the page. Use Update-DR to copy the contents of the
Flash Data Byte Register into the Flash page location and to auto-increment the
Program Counter before each new word.

6.

Enter JTAG instruction PROG_COMMANDS.

7.

Write the page using programming instruction 2g.

8.

Poll for Flash write complete using programming instruction 2h, or wait for t

WLRH

(refer to Table 134 on page 295).

9.

Repeat steps 3 to 8 until all data have been programmed.

Reading the Flash

1.

Enter JTAG instruction PROG_COMMANDS.

2.

Enable Flash read using programming instruction 3a.

3.

Load address using programming instructions 3b and 3c.

4.

Read data using programming instruction 3d.

5.

Repeat steps 3 and 4 until all data have been read.

A more efficient data transfer can be achieved using the PROG_PAGEREAD
instruction:

1.

Enter JTAG instruction PROG_COMMANDS.

2.

Enable Flash read using programming instruction 3a.

3.

Load the page address using programming instructions 3b and 3c. PCWORD
(refer to Table 132 on page 286) is used to address within one page and must be
written as 0.

4.

Enter JTAG instruction PROG_PAGEREAD.

5.

Read the entire page (or Flash) by shifting out all instruction words in the page
(or Flash), starting with the LSB of the first instruction in the page (Flash) and