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

 
 
 
Reply to this topicStart new topic
> Как сохранить уставки в памяти
Tem@
сообщение Dec 11 2009, 10:52
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 15-10-08
Пользователь №: 40 966



Добрый день.

Помогите пожалуйста разобраться с запоминатнием уставок.
Есть (точнее разработан и запущен) прибор на базе ATmega16. ПРограмма рабочая и всем устраивает.
Но прибор необходимо настаривать и значения пары параметров измерять и вносить в программу. После чего прошивать проц.
ПРичём измерения этих параметров производится самим прибором.
Поэтому пришла мысли о автоматизации этого процеса.
Знающие люди расскажите как заставить программу записать полученные значения в энергонезависимую память.
Уже написан тестовый режим который включается перемычкой и программа может снять данные . Я только абсолютно не знаю как эти данные сохранить и в последующем чтобы основная ветка программы использовала эти уставки.
По сути процесс простой каждый программер знает как это делать, но начинающий crying.gif
Использую codevisionAVR.
Благодарю за помощь.
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 11 2009, 12:12
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Tem@ @ Dec 11 2009, 12:52) *
Я только абсолютно не знаю как эти данные сохранить и в последующем чтобы основная ветка программы использовала эти уставки.

Сохранять уставки можно в EEPROM который есть в любом AVR чипе, в m16 512 байт eeprom'a.

Как сохранять:
Например, написать пару функций чтение/запись массива байт по заданному адресу, по сл. прототипам:

Код
void eeprom_write(U16 eeprom_addr, PVOID pData, int size);
void eeprom_read( U16 eeprom_addr, PVOID pData, int size);



затем заводите структуру данных с уставками и держите ее всегда в ОЗУ:

Код
struct
{
    ... уставки
} config;



Сохраняете ее в eeprom, после изменения уставок:
eeprom_write( <адрес>, &config, sizeof( config));

и загружаете при старте программы:
eeprom_read( <адрес>, &config, sizeof(config));

По вкусу добаляете CRC требуемой разрядности, и дублирование.


Что из этого вызывает у вас сложности?
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Dec 11 2009, 12:14
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Мало что понятно из написанного.
Какие параметры? в какой памяти хранятся? сгруппированны в структуру или раскиданы где попало? Какую память хотите модифицировать (flash или eeprom)?

Если есть возможность переписать программу то сгруппируйте все параметры в структуру, разместите ее в еепром

Код
eeprom struct stParam{
   unsigned char param0;
   unsigned int param1;
   ..............................
} Param;


И берите параметры из этой структуре. А в вашем тестовом режиме меняйте ппараметры в еепром простым присваиванием.

Код
Param.param0 = 10;
Param.param1 = 30000;
Go to the top of the page
 
+Quote Post
GDI
сообщение Dec 11 2009, 12:43
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



В CodeVision встроен механизм работы с ЕЕПРОМ, надо всего лишь добавить ключевое слово перед объявлением переменной, например
Код
eeprom int i;
и дальше в программе просто работать с этой переменной, как с обычной, компилятор сам вставит подпрограммы чтения-записи еепром. Только лучше не читать-писать эту переменную в прерываниях, потому что операции с еепром требуют относительно большого времени на выполнение.
При таком использовании CodeVision создаст отдельный файл *.eep для прошивкм еепром. Вообще вся эта информация есть в хелпе на CodeVision, рекомендую почитать, найдете много интересного.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 23:49
Рейтинг@Mail.ru


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