[an error occurred while processing this directive]
MSP's flash problems.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено velikS 13 февраля 2003 г. 12:31

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