Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
01.11.2010, 16:29
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Вопрос по EEPROM
дорогие друзья!
Записываю и читаю информацию в ЕЕПРОМ в CVAVR.Наблюдаю в ПРОТЕУС . Все нормально но,
когда перегружаю контроллер и вновь записываю информауию, запись начинается опять с нулевой ячейки, а мне нужно добавить и не потерять старую запись. у меня такой вопрос:
как можно записать информацию в ЕЕПРОМ ( в CVAVR )с определенного адреса и после записи получить дрес последней ячейки записи ,чтобы потом, в нужный момент ,продолжить запись уже из полученного нового адреса?
Извиняюсь если вопрос тривиальный ,но сам не смог справится, хотя приложил не мало усилии.
Заранее благодарен.
|
|
|
|
01.11.2010, 16:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
|
Re: Вопрос по EEPROM
"Global variables can be stored at specific SRAM and EEPROM locations at design-time using the @ operator."
например eeprom float b @0x10;
|
|
|
|
01.11.2010, 17:18
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Вопрос по EEPROM
OlegNZH спасибо ,конечно, но у меня его то не получается.
Задал глобальную пееменную :
char b =0x22;
в прерывание пишу
eeprom char b @ 0.12;
выдает ошибку
может не так понял ?
|
|
|
|
01.11.2010, 17:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
|
Re: Вопрос по EEPROM
@0x10; это Адрес , куда размещается. В какую ячейку памяти.Точнее- с Какой Ячейки (Данные имеют Разную длину)
Последний раз редактировалось OlegNZH; 01.11.2010 в 17:27.
|
|
|
|
01.11.2010, 18:03
|
|
Прописка
Регистрация: 09.11.2009
Сообщений: 165
Сказал спасибо: 36
Сказали Спасибо 55 раз(а) в 24 сообщении(ях)
|
Re: Вопрос по EEPROM
Цитата:
|
Данные имеют Разную длину
|
данные уже опеделены и имеют длинну char - 0..255.
На сколько я понял нужено записать массив данных, может быть подойдет что то типа этого:
eeprom char d[256];
В d[0] записать элемент массива с которого начинается новая запись, а данные писать начиная с d[1]. После перезагрузки в d[0] находится последний элемент массива данных, прочитать его и записать новые данные начиная с элемента массива расположенного в d[0];
Последний раз редактировалось sersne; 01.11.2010 в 18:07.
|
|
|
|
01.11.2010, 18:47
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Вопрос по EEPROM
sersne,
да, к примеру ,нужно записать массив данных в ЕЕПРОМ.
есть массивы ланных:
unsigned char r1[]={0x22,0x33,0x45}
unsigned char r2[]={0x12,0x23,0x34}
нужно записать с перва r1[] a потом, после перегрузки, r2[]
и расположить их в ЕЕПРОМ последовательно т. е. так:
0x22,0x33,0x45,0x12,0x23,0x34
естественно ,предварительно заказываем место в ЕЕПРОМ
eeprom unsigned char e[6];
затем пишем
char c;
FOR(c=0;c‹3;c++)
e[c]=r1[c];
как же будет выглядеть продолжение кода если нужно после перегрузки
r[2] записать рядом с r[1] ,ведь нулевая ячейка толко одна и в ней можно записать одно число ?
|
|
|
|
01.11.2010, 19:39
|
|
Прописка
Регистрация: 09.11.2009
Сообщений: 165
Сказал спасибо: 36
Сказали Спасибо 55 раз(а) в 24 сообщении(ях)
|
Re: Вопрос по EEPROM
unsigned char r1[]={0x22,0x33,0x45} //данные 1
unsigned char r2[]={0x12,0x23,0x34} //данные 2
eeprom char test = {0x00}; // здесь будет храниться информация какие именно данные хотим записать. при прошивке eeprom он должен быть равен какому то одному значению.
eeprom unsigned char e[6]; // массив
main:
char c;
if (test = 0x00)
{
FOR(c=0;c‹3;c++)
e[c]=r1[c];
}
if (test = 0x01)
{
FOR(c=0;c‹3;c++)
e[c+3]=r2[c];
}
...
где то в программе перед перезагрузкой придется программно менять значение test;
Последний раз редактировалось sersne; 01.11.2010 в 22:30.
|
|
|
|
01.11.2010, 19:54
|
|
Временная регистрация
Регистрация: 23.09.2007
Адрес: Кривой Рог, Украина
Сообщений: 58
Сказал спасибо: 36
Сказали Спасибо 34 раз(а) в 20 сообщении(ях)
|
Re: Вопрос по EEPROM
Можно в первой ячейке EEPROM сохранять адрес последней свободной ячейки после процедуры записи данных. Таким образом можно даже вычислять размер данных записаных в EEPROM...
|
|
|
|
01.11.2010, 20:03
|
|
Прописка
Регистрация: 09.11.2009
Сообщений: 165
Сказал спасибо: 36
Сказали Спасибо 55 раз(а) в 24 сообщении(ях)
|
Re: Вопрос по EEPROM
Сообщение от k0stya_
|
Можно в первой ячейке EEPROM сохранять адрес последней свободной ячейки после процедуры записи данных. Таким образом можно даже вычислять размер данных записаных в EEPROM...
|
Я это и предлогал сделать, но begun определил два массива данных которые должны будут записываться в один массив в eeprom. Это самый простой способ.
|
|
|
|
01.11.2010, 21:19
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Вопрос по EEPROM
да, вроде кое что проясняется ,но не понятно ,как определить ту самую последную нулевую ячейку который нужно запомнить?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:49.
|
|