i could read address 0x82800 by this code :
mov R2,#0x2800 EXTS #8,#1 mov R1,[R2]
which R1 contains right answer .
but i cant write to this address with this code :
mov R1,0xffff mov R2,#0x2800 EXTS #8,#1 Mov [R2],R1
when i can read this location , why i can not write ? please help me.
i tried many times using C code , but no success, then searching internet, but no success,then i read datasheet and understand using off DPP register, tried, but no success,and then using EXT instructions and no success,using flash programming register , but... , then ask question here...
this is new test result:
#define memory_location *( unsigned int huge *)(0x00082800) and in main function { uart_send(memory_location); //send value to uart > this value is correct i.e. 0x1111 memory_location = 0xffff; //write to location > correct??? uart_send(memory_location); //send value to uart > but this is last data, not 0xffff }
Maybe google for the keyword "volatile"?
Have you spent some time looking inside the processor-specific header files, to see how the processor-specific register declarations are written? There is lot to learn by reading code.
What is special about this address? Is it RAM, a peripheral register, or FLASH? You are overly cryptic and vague about your purpose here.
If FLASH, perhaps memory_location = 0x0000; would be more instructive as most flash implementation erase to 0xFFFF and permit writes where bits transition from 1 -> 0, but not the other way round.