Страница 1 из 1

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

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

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

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

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

А в чём заключается задача? Зачем вам сохранять их значения после ресета?

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

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

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

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

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

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

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

Добавлено: 20 дек 2018, 15:11
Лашкевич Максим
Ну... спросите, пожалуйста, на форуме НИИЭТа про сохранность оперативной памяти в режимах микропотребления. Мы здесь пас.