Tem@ 0 11 декабря, 2009 Опубликовано 11 декабря, 2009 · Жалоба Добрый день. Помогите пожалуйста разобраться с запоминатнием уставок. Есть (точнее разработан и запущен) прибор на базе ATmega16. ПРограмма рабочая и всем устраивает. Но прибор необходимо настаривать и значения пары параметров измерять и вносить в программу. После чего прошивать проц. ПРичём измерения этих параметров производится самим прибором. Поэтому пришла мысли о автоматизации этого процеса. Знающие люди расскажите как заставить программу записать полученные значения в энергонезависимую память. Уже написан тестовый режим который включается перемычкой и программа может снять данные . Я только абсолютно не знаю как эти данные сохранить и в последующем чтобы основная ветка программы использовала эти уставки. По сути процесс простой каждый программер знает как это делать, но начинающий :crying: Использую codevisionAVR. Благодарю за помощь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 11 декабря, 2009 Опубликовано 11 декабря, 2009 · Жалоба Я только абсолютно не знаю как эти данные сохранить и в последующем чтобы основная ветка программы использовала эти уставки. Сохранять уставки можно в 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_ 0 11 декабря, 2009 Опубликовано 11 декабря, 2009 · Жалоба Мало что понятно из написанного. Какие параметры? в какой памяти хранятся? сгруппированны в структуру или раскиданы где попало? Какую память хотите модифицировать (flash или eeprom)? Если есть возможность переписать программу то сгруппируйте все параметры в структуру, разместите ее в еепром eeprom struct stParam{ unsigned char param0; unsigned int param1; .............................. } Param; И берите параметры из этой структуре. А в вашем тестовом режиме меняйте ппараметры в еепром простым присваиванием. Param.param0 = 10; Param.param1 = 30000; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GDI 0 11 декабря, 2009 Опубликовано 11 декабря, 2009 · Жалоба В CodeVision встроен механизм работы с ЕЕПРОМ, надо всего лишь добавить ключевое слово перед объявлением переменной, например eeprom int i; и дальше в программе просто работать с этой переменной, как с обычной, компилятор сам вставит подпрограммы чтения-записи еепром. Только лучше не читать-писать эту переменную в прерываниях, потому что операции с еепром требуют относительно большого времени на выполнение. При таком использовании CodeVision создаст отдельный файл *.eep для прошивкм еепром. Вообще вся эта информация есть в хелпе на CodeVision, рекомендую почитать, найдете много интересного. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться