[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
действие раз: настроить FCTL2 (выставить коэф. деления, чтобы частота была 257-476КГц).
действие два: убедиться, что в ячейку можно записать (поскольку это флешь, то можно писать только нолики поверх единичек, но не наоборот).
действие три: запретить прерывания.
действие четыре: сбросить LOCK в FCTL3
действие пять: настроить FCTL1 на запись
действие шесть: занести данные в ячейку
действие семь: сбросить FCTL1
действите восемь (если надо): вернуть LOCK взад.
что-то типа такого:
{
unsigned char StoredIE1=IE1;
unsigned char StoredIE2=IE2;
unsigned char Offset=0;
IE1=0;
IE2=0;
_DINT();
FCTL2=EEWriteKey|FMCLK|(MCLK/450000);
FCTL3=EEWriteKey;
FCTL1=EEWriteKey|_Erase;
*((unsigned *)&ConfigInFlash+Offset)=0; //erase old segment
FCTL1=EEWriteKey|_Write;
while(Offset{
*((unsigned *)&ConfigInFlash+Offset)=*((unsigned *)&Config+Offset);
Offset++;
}
FCTL1=EEWriteKey;
IE1=StoredIE1;
IE2=StoredIE2;
_EINT();
}
E-mail: info@telesys.ru