Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как сохранить уставки в памяти
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Tem@
Добрый день.

Помогите пожалуйста разобраться с запоминатнием уставок.
Есть (точнее разработан и запущен) прибор на базе ATmega16. ПРограмма рабочая и всем устраивает.
Но прибор необходимо настаривать и значения пары параметров измерять и вносить в программу. После чего прошивать проц.
ПРичём измерения этих параметров производится самим прибором.
Поэтому пришла мысли о автоматизации этого процеса.
Знающие люди расскажите как заставить программу записать полученные значения в энергонезависимую память.
Уже написан тестовый режим который включается перемычкой и программа может снять данные . Я только абсолютно не знаю как эти данные сохранить и в последующем чтобы основная ветка программы использовала эти уставки.
По сути процесс простой каждый программер знает как это делать, но начинающий crying.gif
Использую codevisionAVR.
Благодарю за помощь.
defunct
Цитата(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 требуемой разрядности, и дублирование.


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

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

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


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

Код
Param.param0 = 10;
Param.param1 = 30000;
GDI
В CodeVision встроен механизм работы с ЕЕПРОМ, надо всего лишь добавить ключевое слово перед объявлением переменной, например
Код
eeprom int i;
и дальше в программе просто работать с этой переменной, как с обычной, компилятор сам вставит подпрограммы чтения-записи еепром. Только лучше не читать-писать эту переменную в прерываниях, потому что операции с еепром требуют относительно большого времени на выполнение.
При таком использовании CodeVision создаст отдельный файл *.eep для прошивкм еепром. Вообще вся эта информация есть в хелпе на CodeVision, рекомендую почитать, найдете много интересного.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.