Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 01.11.2010, 16:29  
begun
Гражданин KAZUS.RU
 
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
begun на пути к лучшему
По умолчанию Вопрос по EEPROM

дорогие друзья!

Записываю и читаю информацию в ЕЕПРОМ в CVAVR.Наблюдаю в ПРОТЕУС . Все нормально но,
когда перегружаю контроллер и вновь записываю информауию, запись начинается опять с нулевой ячейки, а мне нужно добавить и не потерять старую запись. у меня такой вопрос:
как можно записать информацию в ЕЕПРОМ ( в CVAVR )с определенного адреса и после записи получить дрес последней ячейки записи ,чтобы потом, в нужный момент ,продолжить запись уже из полученного нового адреса?
Извиняюсь если вопрос тривиальный ,но сам не смог справится, хотя приложил не мало усилии.
Заранее благодарен.
Реклама:
begun вне форума  
Непрочитано 01.11.2010, 16:34  
OlegNZH
Почётный гражданин KAZUS.RU
 
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Вопрос по EEPROM

"Global variables can be stored at specific SRAM and EEPROM locations at design-time using the @ operator."
например eeprom float b @0x10;
OlegNZH вне форума  
Непрочитано 01.11.2010, 17:18  
begun
Гражданин KAZUS.RU
 
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
begun на пути к лучшему
По умолчанию Re: Вопрос по EEPROM

OlegNZH спасибо ,конечно, но у меня его то не получается.
Задал глобальную пееменную :
char b =0x22;
в прерывание пишу
eeprom char b @ 0.12;
выдает ошибку
может не так понял ?
begun вне форума  
Непрочитано 01.11.2010, 17:24  
OlegNZH
Почётный гражданин KAZUS.RU
 
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Вопрос по EEPROM

@0x10; это Адрес , куда размещается. В какую ячейку памяти.Точнее- с Какой Ячейки (Данные имеют Разную длину)

Последний раз редактировалось OlegNZH; 01.11.2010 в 17:27.
OlegNZH вне форума  
Непрочитано 01.11.2010, 18:03  
sersne
Прописка
 
Регистрация: 09.11.2009
Сообщений: 165
Сказал спасибо: 36
Сказали Спасибо 55 раз(а) в 24 сообщении(ях)
sersne на пути к лучшему
По умолчанию Re: Вопрос по EEPROM

Цитата:
Данные имеют Разную длину
данные уже опеделены и имеют длинну char - 0..255.

На сколько я понял нужено записать массив данных, может быть подойдет что то типа этого:
eeprom char d[256];
В d[0] записать элемент массива с которого начинается новая запись, а данные писать начиная с d[1]. После перезагрузки в d[0] находится последний элемент массива данных, прочитать его и записать новые данные начиная с элемента массива расположенного в d[0];

Последний раз редактировалось sersne; 01.11.2010 в 18:07.
sersne вне форума  
Непрочитано 01.11.2010, 18:47  
begun
Гражданин KAZUS.RU
 
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
begun на пути к лучшему
По умолчанию 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] ,ведь нулевая ячейка толко одна и в ней можно записать одно число ?
begun вне форума  
Непрочитано 01.11.2010, 19:39  
sersne
Прописка
 
Регистрация: 09.11.2009
Сообщений: 165
Сказал спасибо: 36
Сказали Спасибо 55 раз(а) в 24 сообщении(ях)
sersne на пути к лучшему
По умолчанию 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.
sersne вне форума  
Непрочитано 01.11.2010, 19:54  
k0stya_
Временная регистрация
 
Регистрация: 23.09.2007
Адрес: Кривой Рог, Украина
Сообщений: 58
Сказал спасибо: 36
Сказали Спасибо 34 раз(а) в 20 сообщении(ях)
k0stya_ на пути к лучшему
По умолчанию Re: Вопрос по EEPROM

Можно в первой ячейке EEPROM сохранять адрес последней свободной ячейки после процедуры записи данных. Таким образом можно даже вычислять размер данных записаных в EEPROM...
k0stya_ вне форума  
Непрочитано 01.11.2010, 20:03  
sersne
Прописка
 
Регистрация: 09.11.2009
Сообщений: 165
Сказал спасибо: 36
Сказали Спасибо 55 раз(а) в 24 сообщении(ях)
sersne на пути к лучшему
По умолчанию Re: Вопрос по EEPROM

Сообщение от k0stya_ Посмотреть сообщение
Можно в первой ячейке EEPROM сохранять адрес последней свободной ячейки после процедуры записи данных. Таким образом можно даже вычислять размер данных записаных в EEPROM...
Я это и предлогал сделать, но begun определил два массива данных которые должны будут записываться в один массив в eeprom. Это самый простой способ.
sersne вне форума  
Непрочитано 01.11.2010, 21:19  
begun
Гражданин KAZUS.RU
 
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
begun на пути к лучшему
По умолчанию Re: Вопрос по EEPROM

да, вроде кое что проясняется ,но не понятно ,как определить ту самую последную нулевую ячейку который нужно запомнить?
begun вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PIC16f684 и EEPROM Sergey_ritm Микроконтроллеры, АЦП, память и т.д 19 27.02.2011 19:33
Помогите с EEPROM 7Fantomas7 Микроконтроллеры, АЦП, память и т.д 55 18.10.2010 22:28
Интересный вопрос - два усилителя к одной нагрузке eCAH Аудиотехника 45 14.10.2010 01:23
Вопрос по блоку питания... El-Shang Источники питания и свет 13 19.11.2009 17:35
[Решено] Проблема с eeprom в Proteus Memfis666 Proteus, KiCAD и другие ECAD 1 01.10.2009 15:38


Часовой пояс GMT +4, время: 00:49.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot