реклама на сайте
подробности

 
 
> Программирование С8051F341, запись в память
Aloc
сообщение Nov 29 2011, 19:59
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 29-11-11
Из: Санкт-Петербург
Пользователь №: 68 585



Здравствуйте, помогите, пожалуйста, начинающему. В общем необходимо сохранить четыре двухбайтовые переменные, так, чтобы при выключении МК через регистр управления питанием, при новом включении по RST их можно было вернуть.

Идея, вообще, в следующем при первом включении оценивается средний уровень в 4-х каналах АЦП МК отключается, при последующем включении используются полученные значения.

Сообщение отредактировал Aloc - Nov 29 2011, 20:00
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Aloc
сообщение Dec 1 2011, 07:16
Сообщение #2





Группа: Участник
Сообщений: 14
Регистрация: 29-11-11
Из: Санкт-Петербург
Пользователь №: 68 585



Цитата
Примерно понятно. Тут уж Вам решать. Если выключения питания не предполагается, можно лишний раз флэш не насиловать. Опять же, насколько критична потеря данных при случайных выключениях питания? Дело в том, что дубовый, на первый взгляд, вариант с сохранением во флэше имеет свои ньюансы. Во-первых, насколько часто приходится сохранять? Даже с разумным "размазанным" по некоторой области хранением можно убить флэш при достаточной частоте сохранений. Во-вторых, само наличие в коде функций записи во флэш повышает шансы на слет прошивки. Это было не только у меня, а также у других горемык здесь и на форуме silabs.

В принципе не критична, если что их можно заново рассчитать, думаю флэшем тогда не заморачиваться.
Цитата
А что значит " отключился до момента прихода сигнала"? переход в STOP режим?

да, переход в STOP
Цитата
У silabs нет своего компилятора, используются сторонние. По умолчанию, вроде как, keil. Но у него размер кода ограничен. А вообще о используемом у Вас компиляторе написано в project-> Tool Chain Integration в меню

Тогда Keil.
Цитата
В xdata завожу переменную. В подстегиваемом файле startup.a51 по умолчанию
Код
XDATALEN EQU 0H Т.е. область xdata не обнуляется после сброса. Далее все просто. После сброса по питанию обнуляю переменную, после софтверного сброса инкрементирую. Причину сброса можно определить по регистру сброса RSTSRC.

Файл startup.a51 нужно самостоятельно скинуть в проект и пристегнуть?
Полазил в стандартных примерах, во всех файлах startup xdata с 0h, т.е. переменная в xdata не обнуляется при объявлении в любом случае?
Go to the top of the page
 
+Quote Post
barabek
сообщение Dec 1 2011, 08:10
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(Aloc @ Dec 1 2011, 17:16) *
Файл startup.a51 нужно самостоятельно скинуть в проект и пристегнуть?


необязательно, он автоматом подстегивается. Но я всегда его копирую в свою папку и подстегиваю при работе с этими камнями, добавив соответсвующие 2 строки, дабы избежать проблем с watchdog.

Цитата
Полазил в стандартных примерах, во всех файлах startup xdata с 0h, т.е. переменная в xdata не обнуляется при объявлении в любом случае?

Да, честно говоря, не знаю в каких случаях компилятор модифицирует длину xdata. В общем случае можно организовать хранение переменных в любом месте, но слегка модифицировав statrup.a51
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 22:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01371 секунд с 7
ELECTRONIX ©2004-2016