Hermand
Hermand

Reputation: 11

dspic33ch Modulo Addressing

I am trying to write to use Modulo Adressing on my pic33ch512mp508 and write some random data in to the X and Y data memory. However, I can't get it to work for Y, it works perfectly fine for X.

Here are my code:

.global _modulo_adress_2
_modulo_adress_2:
    MOV #0x01, w0
    MOV w0, 0x2000
    MOV w0, 0x7200
    MOV #0x02, w0
    MOV w0, 0x2002
    MOV w0, 0x7202
    MOV #0x03, w0
    MOV w0, 0x2004
    MOV w0, 0x7204
    MOV #0x04, w0
    MOV w0, 0x2006
    MOV w0, 0x7206
    MOV #0x7200,w0  //set modulo start address
    MOV w0, YMODSRT
    NOP
    MOV #0x2000,w0  //set modulo start address
    MOV w0, XMODSRT
    NOP
    MOV #0x7207,w0  //set modulo end address
    MOV w0, YMODEND
    NOP
    MOV #0x2007,w0  //set modulo end address
    MOV w0, XMODEND
    NOP
    MOV #0xCFD1,w0  
    MOV w0, MODCON  
    NOP
    MOV #0x7200,w11
    MOV #0x2000,w1  
    MOV #0x2014,w3
    MOV #0x7214,w5
    REPEAT #20
    MOV [w11++],[w5++]
    REPEAT #20
    MOV [w1++],[w3++]
RETURN

the X outcome :
X Value at 0X2000 is: 0X1. Address 0 
X Value at 0X2002 is: 0X2. Address 1 
X Value at 0X2004 is: 0X3. Address 2 
X Value at 0X2006 is: 0X4. Address 3 
X Value at 0X2008 is: 00. Address 4 
X Value at 0X200A is: 00. Address 5 
X Value at 0X200C is: 00. Address 6 
X Value at 0X200E is: 00. Address 7 
X Value at 0X2010 is: 00. Address 8 
X Value at 0X2012 is: 00. Address 9 
X Value at 0X2014 is: 0X1. Address 10 
X Value at 0X2016 is: 0X2. Address 11 
X Value at 0X2018 is: 0X3. Address 12 
X Value at 0X201A is: 0X4. Address 13 
X Value at 0X201C is: 0X1. Address 14 
X Value at 0X201E is: 0X2. Address 15 
X Value at 0X2020 is: 0X3. Address 16 
X Value at 0X2022 is: 0X4. Address 17 
X Value at 0X2024 is: 0X1. Address 18 
X Value at 0X2026 is: 0X2. Address 19 
X Value at 0X2028 is: 0X3. Address 20 
X Value at 0X202A is: 0X4. Address 21 
X Value at 0X202C is: 0X1. Address 22 
X Value at 0X202E is: 0X2. Address 23 
X Value at 0X2030 is: 0X3. Address 24 
X Value at 0X2032 is: 0X4. Address 25 
X Value at 0X2034 is: 0X1. Address 26 
X Value at 0X2036 is: 0X2. Address 27 
X Value at 0X2038 is: 0X3. Address 28 
X Value at 0X203A is: 0X4. Address 29 
X Value at 0X203C is: 0X1. Address 30 
the Y outcome:
Y Value at 0X7200 is: 0X1. Address 0 
Y Value at 0X7202 is: 0X2. Address 1 
Y Value at 0X7204 is: 0X3. Address 2 
Y Value at 0X7206 is: 0X4. Address 3 
Y Value at 0X7208 is: 00. Address 4 
Y Value at 0X720A is: 00. Address 5 
Y Value at 0X720C is: 00. Address 6 
Y Value at 0X720E is: 00. Address 7 
Y Value at 0X7210 is: 00. Address 8 
Y Value at 0X7212 is: 00. Address 9 
Y Value at 0X7214 is: 0X1. Address 10 
Y Value at 0X7216 is: 0X2. Address 11 
Y Value at 0X7218 is: 0X3. Address 12 
Y Value at 0X721A is: 0X4. Address 13 
Y Value at 0X721C is: 00. Address 14 
Y Value at 0X721E is: 00. Address 15 
Y Value at 0X7220 is: 00. Address 16 
Y Value at 0X7222 is: 00. Address 17 
Y Value at 0X7224 is: 00. Address 18 
Y Value at 0X7226 is: 00. Address 19 
Y Value at 0X7228 is: 0X1. Address 20 
Y Value at 0X722A is: 0X2. Address 21 
Y Value at 0X722C is: 0X3. Address 22 
Y Value at 0X722E is: 0X4. Address 23 
Y Value at 0X7230 is: 00. Address 24 
Y Value at 0X7232 is: 00. Address 25 
Y Value at 0X7234 is: 00. Address 26

I have tried all the different setups and changed spaces, but nothing seams to work.

Link_to_example

Upvotes: 0

Views: 28

Answers (0)

Related Questions