| ??? 11/05/08 08:01 Read: times |
#159700 - reding flash Responding to: ???'s previous message |
Hello,
unsigned char xdata * idata pwrite; // pointer to FLASH used for writes // NOTE: this pointer must be located // in <data> or <idata> space! unsigned char code *pread; // pointer to FLASH used for reads // test string stored in FLASH unsigned char code test_string[] = "Howdy!"; ... while (*pread != ' ') { // copy until NULL is detected *pwrite = *pread; // copy byte pread++; // advance pointers pwrite++; } *pwrite = ' '; Read pointer not in xdata and not pointing to xdata, so it should be ok. This part of code is for writing into flash memory and that's working but this part of code :
// PART B -- copy test string to FLASH memory at address 0x1000
// initialize FLASH read pointer
pread = (unsigned char code *) test_string;
EA_save = EA; // save interrupt status
EA = 0; // disable interrupts (precautionary)
pwrite = 0x1000; // initialize FLASH write pointer
FLSCL |= 0x01; // enable FLASH writes/erases from
// user software
PSCTL = 0x01; // MOVX writes target FLASH memory
while (*pread != ' ') { // copy until NULL is detected
*pwrite = *pread; // copy byte
pread++; // advance pointers
pwrite++;
}
*pwrite = ' ';
PSCTL = 0x00; // MOVX writes target XRAM
FLSCL &= ~0x01; // disable FLASH writes/erases from
// user software
EA = EA_save; // re-enable interrupts
don't working. It's for reading values in the flash memory and store it in an array (eedata for me). Thanks Regards |



