реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Помогите правильно прописать запись в Flash
viking-92
сообщение May 14 2015, 20:08
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 14-05-15
Пользователь №: 86 682



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

Мне на MSP430F169 необходимо прописать запись во флеш вот такого выражения (ADC10MEM0+ADC10MEM0)/2, потом обратиться к данной ячейке во флеш для сравнения данного значения.
Как это осуществить?
Go to the top of the page
 
+Quote Post
mcheb
сообщение May 15 2015, 01:06
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 30-05-06
Пользователь №: 17 602



Цитата(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
Следует учесть,что стирается вся страница! Будьте аккуратны. Учите даташит.
Go to the top of the page
 
+Quote Post
Obam
сообщение May 15 2015, 09:01
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Цитата(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.

Сообщение отредактировал Obam - May 15 2015, 09:02


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 17:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016