Здравтсвуйте.
Ситуация такая:
Есть 3 переменные, которые необходимо разместить во FLASH памяти.
Код
#pragma memory = constseg(INFOD) // адреса 1000-103F
const volatile signed char nst
min_ust = 19, // 3 установленное по умолчанию отрицательное значение
max_ust = 25, // 4 установленное по умолчанию положительное знание
config = 1;
Кстати, без слова "const" переменные во флеш не размещаются. Кто-нибудь знает почему?
Эти переменные изменяются пользователем путём стирания и записывания флеш памяти. Значения меняются точно.
Далее
есть кусок кода:
Код
if ((DATA.temperatura > max_ust) || (DATA.temperatura < min_ust)) // если температура вышла из диаппазона
{
// делаем то-то
}
else // если норма
{
// делаем другое
}
Без оптимизации в настройках компилятора всё нормально, но стоит включить оптимизацию, то в условии в место max_ust и min_ust компилятор ставит 25 и 19 соответственно. Вся загвоздка скорее всего в ключевом слове const. Но без него переменные оказываются в оперативной памяти.
Без оптимизации не могу, т.к. уже код не умещается в памяти контроллера.
Как выйти из сложившейся ситуации?
Кризис - это не отсутствие денег, а отсутствие идей! Учитесь и никаких кризисов не будет.