реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> AVR+Eeprom 2-serial Алгоритм увеличения количества записей
Bekass
сообщение Jun 6 2006, 06:52
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 17-02-06
Пользователь №: 14 446



Есть Eeprom , ее ресурс записи максимум 1000000 раз.
Необходимо записывать данные примерно раз в 0.5-1 секунду на срок 30-50 лет....
Судя по расчетам на такое времени одной ячейки памяти не хватит...
Может кто встречался с алгоритмами записи (по разным ячейкам, по битово или еще как-то ) для таких многократных режимов write ????? wub.gif wub.gif wub.gif
Go to the top of the page
 
+Quote Post
otrog
сообщение Jun 6 2006, 07:02
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



Еще есть FRAM ее ресурс записи неограничен.
http://electronix.ru/forum/index.php?showt...9&hl=fram&st=15


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
Bekass
сообщение Jun 6 2006, 07:20
Сообщение #3





Группа: Новичок
Сообщений: 9
Регистрация: 17-02-06
Пользователь №: 14 446



Fram Дороже Eeprom , поэтому выбор руковадстав пао на Eeprom sad.gif
Go to the top of the page
 
+Quote Post
bzx
сообщение Jun 6 2006, 07:42
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 482
Регистрация: 5-07-05
Из: Санкт-Петербург
Пользователь №: 6 528



Идея простая - писать информацию по разным адресам EEPROM. Для этого надо знать характер записываемых данных, только тогда можно предложить эффективный алгоритм записи и восстановления данных.


--------------------
Для связи email: info собака qbit.su
Go to the top of the page
 
+Quote Post
vesago
сообщение Jun 6 2006, 07:50
Сообщение #5


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Я пишу по кольцу, а указатели храню в FRAM. FRAM у меня с чесами реального времени, супервизором и памятью на 32к. Если не использовать какой-то памяти для хранения указателей, то надо решить проблему синхронизации. Наверное можно строить запись таким образом, что она фиксированной длинны и имеет уникальный номер или дату время. Тогда при старте проц может отыскать место, куда ложить новую запись.
Go to the top of the page
 
+Quote Post
arttab
сообщение Jun 6 2006, 07:50
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



Самое простое писать по кольцу, следя чтоб было место для новой записи (это будет указатель на то куда писать новую запись) и если место кончается стирать "перед" собо1 (FF -> 00).
Не оригинально и признак начала записи может понадобиться, зато просто.


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
AndyBig
сообщение Jun 6 2006, 19:33
Сообщение #7


Иногдящий
****

Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931



У Атмела есть аппноут, посвященный этому. Там организуется именно кольцевая запись, но без отдельного хранения указателя начала. Точно не помню как, но как-то очень просто smile.gif.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jun 6 2006, 20:41
Сообщение #8


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(AndyBig @ Jun 6 2006, 22:33) *
Точно не помню как, но как-то очень просто smile.gif.

Можно в заголовке записи указывать размер и номер записи перед самой записью. Получится нечто похожее на MCB (memory control block) цепочку в DOS.
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jun 7 2006, 00:19
Сообщение #9


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Чтобы удвоить ресурс при записи счетчика, я пишу четные значения по одному адресу, а нечетные - по другому. При чтении читаются оба значения и выбирается бOльшее.
Go to the top of the page
 
+Quote Post
arttab
сообщение Jun 7 2006, 02:15
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



Цитата(AndyBig @ Jun 7 2006, 02:33) *
У Атмела есть аппноут, посвященный этому. Там организуется именно кольцевая запись, но без отдельного хранения указателя начала. Точно не помню как, но как-то очень просто smile.gif.

Хранить вообщем и не надо. Нодо чтоб всегда было свободное место. и искать его снизу вверх (или наоборот - зависит от подхода).
Если остаются место под 1 запись надо очистить старую (заголовак может подтереть) и потом уже записать. и так по кругу. самая свежая запись перед свободным полем


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
proba
сообщение Jun 7 2006, 08:16
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 358
Регистрация: 29-05-05
Пользователь №: 5 526



30 г. = 946 080 000 сеk. т.е. как минимум нужен колцевои запись в 1024 ячеики. 1 баит FRAM стоит наверно менше чем 1024 баит EEPROM.
Go to the top of the page
 
+Quote Post
IEC
сообщение Jun 7 2006, 08:16
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



А можно подключить компаратор на контроль падения напряжения питания и при его срабатывании запрещать все прерывания и сохранять данные. Если контролировать питание до стабилизатора то времени хватит забить байт 100 (зависит от емкости конденсатора перед стабилизатором).
Go to the top of the page
 
+Quote Post
BVU
сообщение Jun 7 2006, 11:54
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(Bekass @ Jun 6 2006, 11:20) *
Fram Дороже Eeprom , поэтому выбор руковадстав пао на Eeprom sad.gif

Да довольно 'компетентное' у Вас руководство... при непрерывной записи с интервалом в 0.5 сек. eeprom-ма хватит всего лишь на ~5.5 лет. smile.gif
А чем внутреннее ОЗУ то неустраивает?


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
nameless
сообщение Jun 7 2006, 13:16
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 9-07-04
Пользователь №: 305



Совсем недавно аналогичная задача встала из-за непредсказуемого на объекте поведения питалова...
Так вот. Если запрещенных комбинаций нет (типа FF или 00), то придется делать два кольца...вот я и увеличивал время жизни 128 раз. Весь косяк в том, что нельзя переписать битовые поля отдельно друг от друга. Поэтому время жизни обозначено для байта и точка.

unsigned char __eeprom EE_ring[128] @ 128;
unsigned long __eeprom EE_abs_DATA_num[128] @ 256;

void EE_ring_restore(void)
{
unsigned char i;
for(i=0;i<128;i++)
{
if(EE_ring[i]==0x00)
{
ring = i;
break;
}
}
if(ring==128)
{
ring=0;
EE_ring[0]=0;
}
}


void EE_do_new_ring(void)
{
EE_ring[ring]=0xFF;
ring = (ring+1)&127;
EE_ring[ring]=0;
}

ring - глобальная в сраме. Потом в майне обращаюсь к EE_abs_DATA_num[ring]
И память перетирать при этом не страшно!
Go to the top of the page
 
+Quote Post
BVU
сообщение Jun 8 2006, 06:56
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Задачу можно решить более простым способом, которая увеличит срок службы системы не до 50-ти, а более лет. На вычислительное устройство, как автономный источник питания ставиться ионистр (на случай сбоя внешнего питания) и периодически контролируется внешнее питание. Запись данных производится в ОЗУ. При обнаружении отключения внешнего питания, данные начинают записываться в eeprom либо система с течением времени (в зависимости от энергоресурса ионистора) консервируется до 'до лучших времен'. Поведенческих вариантов системы можно придумать великое множество исходя из условий эксплуатации.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 15:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01468 секунд с 7
ELECTRONIX ©2004-2016