Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите правильно прописать запись в Flash
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
viking-92
Добрый день!
Возможно я поднимаю старую тему, помогите тогда ссылкой хотя бы.

Мне на MSP430F169 необходимо прописать запись во флеш вот такого выражения (ADC10MEM0+ADC10MEM0)/2, потом обратиться к данной ячейке во флеш для сравнения данного значения.
Как это осуществить?
mcheb
Цитата(viking-92 @ May 15 2015, 00:08) *
Добрый день!
Возможно я поднимаю старую тему, помогите тогда ссылкой хотя бы.

Мне на 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
Следует учесть,что стирается вся страница! Будьте аккуратны. Учите даташит.
Obam
Цитата(mcheb @ May 15 2015, 05:06) *
Код

  _DINT(); //__disable_interrupt();
  FCTL2=FWKEY+FSSEL_0+FN0+FN1;    //ACLK div=4

#define ADC_ROM 0x1000


Позволю себе чуть конструктивной кртики: тактирование от ACLK (а это в подавляющем большинстве случаев 32768Гц + собственный постделитель) да ещё и делённого на 4 не подходит,
тк тактовая частота для генератора временных интервалов flash-а должна быть в диапазоне 257..476кГц.
Думаю следовало бы указать частоту ACLK.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.