[an error occurred while processing this directive]
|
Ne poymu, chto za fignya proishodit. Est' kod zapisi vo FLASH (izmenenniy example):
void write_SegAbyte (unsigned char address, char value)
{
char *Flash_ptr; // Flash pointer
Flash_ptr = (char *) 0x1000; // Initialize Flash pointer
FCTL3 = FWKEY; // Clear Lock bit
FCTL1 = FWKEY + WRT; // Set WRT bit for write operation
i=FCTL3;
while(i & BUSY) // Wait until BUSY
i=FCTL3;
*(Flash_ptr+address) = value; // Write value to flash
FCTL1 = FWKEY; // Clear WRT bit
FCTL3 = FWKEY + LOCK; // Reset LOCK bit
}
I programma chteniya:
char read_SegAbyte (unsigned char address)
{
char *Flash_ptr; // Flash pointer
char result = 0;
Flash_ptr = (char *) 0x1000; // Initialize Flash segment A pointer
FCTL1 = FWKEY; // Set Erase bit
FCTL3 = FWKEY; // Clear Lock bit
FCTL1 = FWKEY + WRT; // Set WRT bit for write operation
result = *(Flash_ptr+address); // copy value segment A to segment B
FCTL1 = FWKEY; // Clear WRT bit
FCTL3 = FWKEY + LOCK; // Reset LOCK bit
return result;
}
Perviy raz pishu/chitayu vse rabotaet, zapisannoe sovpadaet s scitannim.
Vtoroy raz pishu/chitayu - fignya pret, dannie ne sovpadayut.
Nepoymu, gde oshibka? Mojet, kto uje imel delo s Flash? Podskajite, pls.
I esche. Mojno li pisat' vo flash, ne stiraya segment?
Pasiba.
E-mail: info@telesys.ru