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

 
 
> Программирование сегмента данных F5xxx
varvar
сообщение Mar 24 2013, 08:22
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811



Не подскажете, в чем разница программирования сегментов данных F5xx и F1xx? В F1xx, как помнится, было ограничение по тактовой частоте и минимальному напряжению.
В F5xx таких ограничений не увидел, тем не менее код, по сути дела скопированный из примеров, ничего во флеш не записывает.
Частота 8 мгц (уменьшение до 1 не помогло), питание 3.3V.

Код
void BurnEeprom(void)
{
  char *Flash_ptrC;
  Flash_ptrC = (char *) 0x1880;             // Initialize info segment C ptr  
  __disable_interrupt();                    // 5xx Workaround: Disable global

  FCTL3 = FWKEY;                           // unlock info  
  FCTL1 = FWKEY+ERASE;                     // Set Erase bit  
  *Flash_ptrC = 0;                         // Dummy write to erase info seg С
  
// на всякий случай - 32ms
  for (volatile int i=0; i<10000; i++)
  {
    __no_operation();
    __no_operation();    
    __no_operation();        
  }
  
  FCTL1 = FWKEY+WRT;                       // Byte write
  for (int i=0; i<27; i++) *Flash_ptrC++ = EEPROM.RegMap[i];  
  FCTL1 = FWKEY;                            // Clear WRT bit
  FCTL3 = FWKEY+LOCK;                     //  lock info  

  __enable_interrupt();                    // 5xx Workaround
}


Где опять собака могла порыться?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
varvar
сообщение Mar 24 2013, 17:16
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811



Что-то потихоньку задышало - но истоки непонятны
Когда объявляешь данные
Код
#pragma dataseg = INFOC                         // Info Flash Memory Block c
const uint8 FlashArray[27]=
{
0x28, 0x96, 0xC8, 0x96, 0x68, 0x97,
0x88, 0x13, 0xC4, 0x09, 0x82, 0x06, 0xE2, 0x04,
0xE8, 0x03, 0x41, 0x03, 0xCA, 0x02, 0x71, 0x02,
0x03,
0x01,
10,
0x01,
0x01
};  
#pragma dataseg = default

в сегменте С ничего нет, все данные в А
А когда так:
Код
const uint8 FlashArray[27]@0x1880=
{
0x28, 0x96, 0xC8, 0x96, 0x68, 0x97,
0x88, 0x13, 0xC4, 0x09, 0x82, 0x06, 0xE2, 0x04,
0xE8, 0x03, 0x41, 0x03, 0xCA, 0x02, 0x71, 0x02,
0x03,
0x01,
10,
0x01,
0x01
};

в С данные появляются, но из А они никуда не деваются.
Похоже, в опциях ИАРа нужно какую-то галку поставить/убрать, остается выяснить какую.

А примеры у тексаса ключница писала - по крайней мере lockinfo никогда не разблокируются, хотя примеры явно к инфо сегментам относятся.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 5th August 2025 - 00:01
Рейтинг@Mail.ru


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