Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: оптимизация в EW430 4.20
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
msalov
наблюдаю интересное явление


при оптимизации Low/None
Код
// 45 Alarm_On &= ~alarm_bit;
BIC.B R10, &Alarm_On
// 46 Alarm_Off &= ~alarm_bit;
BIC.B R10, &Alarm_Off


при medium/high
Код
// 45 Alarm_On &= ~alarm_bit;
MOV.B R10, R14
XOR.B #0xff, R14
AND.B R14, &Alarm_On
// 46 Alarm_Off &= ~alarm_bit;
AND.B R14, &Alarm_Off


Все задействованные переменные типа uint8_t. alarm_bit - локальная, две другие - глобальные. В чем подвох?
KARLSON
Здравствуйте. У меня IAR 5.10.1.
Есть переменная в INFO памяти

#pragma location = 0x101A
const unsigned char CS_A[] = {0x98}; Она может измениться.

У компилятора включена оптимизация Medium.
в условии if(SS == CS_A[]) в место адреса где взять значение компилятор берёт значение.

Пробовал так:
volatile unsigned char gg;
gg = *(volatile unsigned char *)&CS_A[0];
if(SS == gg)
НЕ ПОМОГАЕТ.

Если объявить так:
#pragma location = 0x101A
const volatile unsigned char CS_A[] = {0x98};

То появляется предупреждение:
Warning[Pa034]: initialized variable can not have __no_init attribute, discarded "Путь к файлу"
И ошибка
Error[Be022]: location address not allowed for initialized variables (writable variables without the __no_init attribute) "Путь к файлу"

Как же к адресу обратиться?
rezident
2 KARLSON. Вот там я приводил пример "обходного пути".
Естественно компилятор выдает предупреждение типа
Цитата
Warning[w18]: Segment DATA16_AC (seg part no 4, symbol "MyParInit" in module "main", address [8000-8016]) overlaps segment DATA16_AN (seg part no 5, symbol "MyPar" in module "main", address [8000-8016])

В программе везде использую имя и адрес структуры MyPar, которая объявлена с аттрибутом __no_init. Поскольку компилятор не имеет информации о значениях элементов этой структуры, то вынужден каждый раз считывать их по адресу данной структуры.
Способ не очень корректный, но работает. laughing.gif
KARLSON
Спасибо, работает)))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.