Перейти к содержанию
    

Помогите правильно прописать запись в Flash

Добрый день!

Возможно я поднимаю старую тему, помогите тогда ссылкой хотя бы.

 

Мне на MSP430F169 необходимо прописать запись во флеш вот такого выражения (ADC10MEM0+ADC10MEM0)/2, потом обратиться к данной ячейке во флеш для сравнения данного значения.

Как это осуществить?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день!

Возможно я поднимаю старую тему, помогите тогда ссылкой хотя бы.

 

Мне на MSP430F169 необходимо прописать запись во флеш вот такого выражения (ADC10MEM0+ADC10MEM0)/2, потом обратиться к данной ячейке во флеш для сравнения данного значения.

Как это осуществить?

//------------------------------------------------------------------------------
//--------------------------- Запись во Flash memory ---------------------------
//------------------------------------------------------------------------------
void  WriteFlash(void)         //
{
  _DINT(); //__disable_interrupt();
  FCTL2=FWKEY+FSSEL_0+FN0+FN1;    //ACLK div=4
  FCTL3=FWKEY;                    //reset LOCK
  FCTL1=FWKEY+ERASE;              //Set Erase Segment
  __asm("clr.b &0x1000");
  _NOP();
  FCTL3=FWKEY+LOCK;               //Set LOCK
  FCTL3=FWKEY;                    //reset LOCK
  FCTL1=FWKEY+WRT;                //Set Write
  __asm("mov.b &TypeDevice,&0x1000");
  _NOP();
  FCTL3=FWKEY+LOCK;               //Set LOCK
  FCTL1=FWKEY;                    //ReSet Write and Erase
  _EINT(); //__enable_interrupt();
}

#define ADC_ROM 0x1000

 

Как то вот так. TypeDevice=(ADC10MEM0+ADC10MEM0)/2

0x1000 адрес флэша,где это хранится. Обращаться к нему так *(uint16_t *)ADC_ROM

Следует учесть,что стирается вся страница! Будьте аккуратны. Учите даташит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

…
  _DINT(); //__disable_interrupt();
  FCTL2=FWKEY+FSSEL_0+FN0+FN1;    //ACLK div=4
…
#define ADC_ROM 0x1000
…

 

Позволю себе чуть конструктивной кртики: тактирование от ACLK (а это в подавляющем большинстве случаев 32768Гц + собственный постделитель) да ещё и делённого на 4 не подходит,

тк тактовая частота для генератора временных интервалов flash-а должна быть в диапазоне 257..476кГц.

Думаю следовало бы указать частоту ACLK.

Изменено пользователем Obam

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...