Перейти к содержанию
    

Как сохранить уставки в памяти

Добрый день.

 

Помогите пожалуйста разобраться с запоминатнием уставок.

Есть (точнее разработан и запущен) прибор на базе ATmega16. ПРограмма рабочая и всем устраивает.

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

ПРичём измерения этих параметров производится самим прибором.

Поэтому пришла мысли о автоматизации этого процеса.

Знающие люди расскажите как заставить программу записать полученные значения в энергонезависимую память.

Уже написан тестовый режим который включается перемычкой и программа может снять данные . Я только абсолютно не знаю как эти данные сохранить и в последующем чтобы основная ветка программы использовала эти уставки.

По сути процесс простой каждый программер знает как это делать, но начинающий :crying:

Использую codevisionAVR.

Благодарю за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я только абсолютно не знаю как эти данные сохранить и в последующем чтобы основная ветка программы использовала эти уставки.

Сохранять уставки можно в 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 требуемой разрядности, и дублирование.

 

 

Что из этого вызывает у вас сложности?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мало что понятно из написанного.

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

 

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

 

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

 

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

 

Param.param0 = 10;
Param.param1 = 30000;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В CodeVision встроен механизм работы с ЕЕПРОМ, надо всего лишь добавить ключевое слово перед объявлением переменной, например

eeprom int i;

и дальше в программе просто работать с этой переменной, как с обычной, компилятор сам вставит подпрограммы чтения-записи еепром. Только лучше не читать-писать эту переменную в прерываниях, потому что операции с еепром требуют относительно большого времени на выполнение.

При таком использовании CodeVision создаст отдельный файл *.eep для прошивкм еепром. Вообще вся эта информация есть в хелпе на CodeVision, рекомендую почитать, найдете много интересного.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...