Microchip Technology MA240029 데이터 시트

다운로드
페이지 406
 2010-2011 Microchip Technology Inc.
DS39996F-page 67
PIC24FJ128GA310 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.
 illustrates how the EDS space 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.
 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.
FIGURE 4-6:
EDS ADDRESS GENERATION FOR WRITE OPERATIONS
EXAMPLE 4-2:
EDS WRITE CODE IN ASSEMBLY
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.
DSWPAG Reg
Select
Wn
8
15 Bits
9 Bits
24-Bit EA
Wn<0> is Byte Select
1
0
; 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