Сохранение глобальных переменных

Ответить
sergey_the_great
Сообщения: 17
Зарегистрирован: 09 дек 2016, 18:55

Сохранение глобальных переменных

Сообщение sergey_the_great » 20 дек 2018, 12:46

Добрый день. Скажите пожалуйста, как сделать так, чтоб переменные, объявленные в main.c сохраняли свои значения после reset?

Аватара пользователя
Disona
Сообщения: 92
Зарегистрирован: 28 ноя 2015, 22:03
Откуда: Москва

Re: Сохранение глобальных переменных

Сообщение Disona » 20 дек 2018, 12:59

Здравствуйте.
Глобальные переменные инициализированы или нет? Если они инициализированы, то после сброса процессора, их значения будут равны константам, которыми вы их проинициализировали (если у вас в проекте используется файл stratup.s, в котором и осуществляется инициализация).

Если они не инициализированы, то тогда имеет значение тип ресета. Если ресет питанием - то значения будут сброшены, и в переменных будет лежать мусор. Если ресет, например, вочдогом - то по идее, значения должны сохраниться.

А в чём заключается задача? Зачем вам сохранять их значения после ресета?
С уважением,
Дмитрий Шпак
Telegram: +79773608997
shpak@motorcontrol.ru
Инженер-программист ООО "НПФ Вектор", Москва.

sergey_the_great
Сообщения: 17
Зарегистрирован: 09 дек 2016, 18:55

Re: Сохранение глобальных переменных

Сообщение sergey_the_great » 20 дек 2018, 13:06

В переменных может храниться состояние процесса. При скачке питания возникает прерывание и процессор переходит в режим микропотребления. Далее, питание восстанавливается и возникает reset. Нужно, чтоб после reset глобальные переменные сохранили прежние значения.

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: Сохранение глобальных переменных

Сообщение Лашкевич Максим » 20 дек 2018, 13:52

Честно говоря, мы с режимом микропотребления не работали. Спросите на форуме НИИЭТа, пожалуйста. Предпологаю, что если возникает событие reset, то нужно это расценивать как сброс микроконтроллера, и, собственно, загружаться с нуля - восстанавливать состояние переменных "своими силами": загружать значения из энергонезависимой памяти (предварительно сохраняя туда периодически стейт), ну или недопускать просадки питания.
Если не секрет, какую практическую проблему Вы решаете? Откуда такие сбои по питанию, после которых нужно сразу продолжать работать?
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

sergey_the_great
Сообщения: 17
Зарегистрирован: 09 дек 2016, 18:55

Re: Сохранение глобальных переменных

Сообщение sergey_the_great » 20 дек 2018, 15:02

Делаю управление наливом. (заправка бензовозов). Перехожу на ваш процессор с AT89S8252. Контроллер должен находиться в щитовой на нефтебазе отдельно от помещения оператора. При исчезновении питания контроллер переходит на батарейку и уходит в спящий режим. При восстановлении питания приходит reset. Со старым процессором все именно так и работало.

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: Сохранение глобальных переменных

Сообщение Лашкевич Максим » 20 дек 2018, 15:11

Ну... спросите, пожалуйста, на форуме НИИЭТа про сохранность оперативной памяти в режимах микропотребления. Мы здесь пас.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

Ответить