English
Language : 

PIC24FJ64GA705 Datasheet, PDF (56/412 Pages) –
PIC24FJ256GA705 FAMILY
4.2.5.2 Data Write into EDS
In order to write data to EDS, such as in EDS reads, an
Address Pointer is set up by loading the required EDS
page number into the DSWPAG register, and assigning
the offset address to one of the W registers. Once the
above assignment is done, then the EDS window is
enabled by setting bit 15 of the Working register,
assigned with the offset address, and the accessed
location can be written.
Figure 4-5 illustrates how the EDS address is generated
for write operations.
When the MSbs of EA are ‘1’, the lower 9 bits of
DSWPAG are concatenated to the lower 15 bits of EA
to form a 24-bit EDS address for write operations.
Example 4-2 shows how to write a byte, word and
double word to EDS.
The Data Space Page registers (DSRPAG/DSWPAG)
do not update automatically while crossing a page
boundary when the rollover happens from 0xFFFF to
0x8000. While developing code in assembly, care must
be taken to update the Data Space Page registers when
an Address Pointer crosses the page boundary. The ‘C’
compiler keeps track of the addressing, and increments
or decrements the Page registers accordingly, while
accessing contiguous data memory locations.
Note 1: All write operations to EDS are executed
in a single cycle.
2: Use of Read/Modify/Write operation on
any EDS location under a REPEAT
instruction is not supported. For example:
BCLR, BSW, BTG, RLC f, RLNC f, RRC f,
RRNC f, ADD f, SUB f, SUBR f, AND f,
IOR f, XOR f, ASR f, ASL f.
3: Use the DSRPAG register while
performing Read/Modify/Write operations.
FIGURE 4-5:
EDS ADDRESS GENERATION FOR WRITE OPERATIONS
Select
1
8
0
DSWPAG Reg
9 Bits
24-Bit EA
Wn
15 Bits
Wn<0> is Byte Select
EXAMPLE 4-2: EDS WRITE CODE IN ASSEMBLY
; Set the EDS page where the data to be written
mov
#0x0002, w0
mov
w0, DSWPAG
;page 2 is selected for write
mov
#0x0800, w1 ;select the location (0x800) to be written
bset w1, #15
;set the MSB of the base address, enable EDS mode
;Write a byte to the selected location
mov
#0x00A5, w2
mov
#0x003C, w3
mov.b w2, [w1++]
;write Low byte
mov.b w3, [w1++]
;write High byte
;Write a word to the selected location
mov
#0x1234, w2 ;
mov
w2, [w1]
;
;Write a Double - word to the selected location
mov
#0x1122, w2
mov
#0x4455, w3
mov.d w2, [w1]
;2 EDS writes
DS30010118B-page 56
 2016 Microchip Technology Inc.