Jump to content
    

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

Добрый день!

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

 

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

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

 

Share this post


Link to post
Share on other sites

Добрый день!

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

 

Мне на 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

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

Share this post


Link to post
Share on other sites

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

 

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

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

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

Edited by Obam

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...