English
Language : 

PIC24FJ128GC010 Datasheet, PDF (76/472 Pages) Microchip Technology – 16-Bit Flash Microcontrollers with 12-Bit Pipeline A/D, Sigma-Delta A/D, USB On-The-Go and XLP Technology
PIC24FJ128GC010 FAMILY
4.2.5.2 Data Write into EDS
In order to write data to EDS space, 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 regis-
ters. 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-6 illustrates how the EDS space address is
generated for write operations.
When the MSb of EA is ‘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 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 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-6:
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
DS30009312B-page 76
 2012-2013 Microchip Technology Inc.