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

Post Reply
sergey_the_great
Posts: 17
Joined: 09 Dec 2016, 18:55

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

Post by sergey_the_great » 20 Dec 2018, 12:46

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

User avatar
Disona
Posts: 9
Joined: 28 Nov 2015, 22:03
Location: Москва

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

Post by Disona » 20 Dec 2018, 12:59

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

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

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

sergey_the_great
Posts: 17
Joined: 09 Dec 2016, 18:55

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

Post by sergey_the_great » 20 Dec 2018, 13:06

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

User avatar
Лашкевич Максим
Posts: 170
Joined: 30 Dec 2015, 10:38

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

Post by Лашкевич Максим » 20 Dec 2018, 13:52

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

sergey_the_great
Posts: 17
Joined: 09 Dec 2016, 18:55

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

Post by sergey_the_great » 20 Dec 2018, 15:02

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

User avatar
Лашкевич Максим
Posts: 170
Joined: 30 Dec 2015, 10:38

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

Post by Лашкевич Максим » 20 Dec 2018, 15:11

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

Post Reply