Доброе время суток smile.gif
Написал программу которая должна переписывать данные во Flash МК. Но к сожалению правильно она не работает.
После первого старта программа стирает 0 страницу, записывает туда данные - все нормально, но последующие попытки записи увенчались провалом - то есть запись идет не с того адреса, который я подаю, а опять с нулевого. Количество страниц для записи лежит в EEPROM-е, сами данные вычитываються из внешней памяти.
CODE

for (i=FirstPageForWrite ; i < FirstPageForWrite + ((EEPROM_read(aCNTPaketHigh)<<8) + EEPROM_read(aCNTPaketLow));i++) {
Page_To_Buffer(i,1);
Buffer_Read_Str(1,0,264,BufferPtr);

if (BufferPtr[261]==0)
cByte_Paket = 256;
else
cByte_Paket = BufferPtr[261];

tCRC = 0;
for (j = 0;j < cByte_Paket;j++) {
tCRC += BufferPtr[j];
}

pCRC = (CharHex(BufferPtr[256] >> 4) * 16 + CharHex(BufferPtr[256] & 0x0F)) * 256 ;
pCRC += CharHex(BufferPtr[257] >> 4) * 16;
pCRC += CharHex(BufferPtr[257] & 0x0F);

if (pCRC == tCRC) {
addrWR = ((BufferPtr[258] >> 4) * 100000 ) + ((BufferPtr[258] & 0x0F) * 10000 );
addrWR += ((BufferPtr[259] >> 4) * 1000 ) + ((BufferPtr[259] & 0x0F) * 100 );
addrWR += ((BufferPtr[260] >> 4) * 10 ) + ((BufferPtr[260] & 0x0F) * 1 );

//addrWR = atoi(BufferPtr[258]) * 1000 + atoi(BufferPtr[259]) * 100 + atoi(BufferPtr[260]);

_PAGE_ERASE( addrWR );
_WAIT_FOR_SPM();
tempaddress = addrWR;
kk = 0;
do {
data = BufferPtr[kk+1] << 8 | BufferPtr[kk];
_WAIT_FOR_SPM();
_FILL_TEMP_WORD(addrWR,data);
(addrWR)+=2; // Select next word in memory.
kk+=2;
} while(kk < cByte_Paket); // Loop until all bytes written.

_PAGE_WRITE(addrWR);
_WAIT_FOR_SPM();
_ENABLE_RWW_SECTION();
}
}

В чем может быть дело?
Заранее благодарен smile.gif

Да прибудет с Вами удача smile.gif