Bekass 0 6 июня, 2006 Опубликовано 6 июня, 2006 · Жалоба Есть Eeprom , ее ресурс записи максимум 1000000 раз. Необходимо записывать данные примерно раз в 0.5-1 секунду на срок 30-50 лет.... Судя по расчетам на такое времени одной ячейки памяти не хватит... Может кто встречался с алгоритмами записи (по разным ячейкам, по битово или еще как-то ) для таких многократных режимов write ????? :wub: :wub: :wub: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
otrog 0 6 июня, 2006 Опубликовано 6 июня, 2006 · Жалоба Еще есть FRAM ее ресурс записи неограничен. http://electronix.ru/forum/index.php?showt...9&hl=fram&st=15 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bekass 0 6 июня, 2006 Опубликовано 6 июня, 2006 · Жалоба Fram Дороже Eeprom , поэтому выбор руковадстав пао на Eeprom :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bzx 0 6 июня, 2006 Опубликовано 6 июня, 2006 · Жалоба Идея простая - писать информацию по разным адресам EEPROM. Для этого надо знать характер записываемых данных, только тогда можно предложить эффективный алгоритм записи и восстановления данных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vesago 0 6 июня, 2006 Опубликовано 6 июня, 2006 · Жалоба Я пишу по кольцу, а указатели храню в FRAM. FRAM у меня с чесами реального времени, супервизором и памятью на 32к. Если не использовать какой-то памяти для хранения указателей, то надо решить проблему синхронизации. Наверное можно строить запись таким образом, что она фиксированной длинны и имеет уникальный номер или дату время. Тогда при старте проц может отыскать место, куда ложить новую запись. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arttab 0 6 июня, 2006 Опубликовано 6 июня, 2006 · Жалоба Самое простое писать по кольцу, следя чтоб было место для новой записи (это будет указатель на то куда писать новую запись) и если место кончается стирать "перед" собо1 (FF -> 00). Не оригинально и признак начала записи может понадобиться, зато просто. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndyBig 8 6 июня, 2006 Опубликовано 6 июня, 2006 · Жалоба У Атмела есть аппноут, посвященный этому. Там организуется именно кольцевая запись, но без отдельного хранения указателя начала. Точно не помню как, но как-то очень просто :). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 6 июня, 2006 Опубликовано 6 июня, 2006 · Жалоба Точно не помню как, но как-то очень просто :). Можно в заголовке записи указывать размер и номер записи перед самой записью. Получится нечто похожее на MCB (memory control block) цепочку в DOS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 18 7 июня, 2006 Опубликовано 7 июня, 2006 · Жалоба Чтобы удвоить ресурс при записи счетчика, я пишу четные значения по одному адресу, а нечетные - по другому. При чтении читаются оба значения и выбирается бOльшее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arttab 0 7 июня, 2006 Опубликовано 7 июня, 2006 · Жалоба У Атмела есть аппноут, посвященный этому. Там организуется именно кольцевая запись, но без отдельного хранения указателя начала. Точно не помню как, но как-то очень просто :). Хранить вообщем и не надо. Нодо чтоб всегда было свободное место. и искать его снизу вверх (или наоборот - зависит от подхода). Если остаются место под 1 запись надо очистить старую (заголовак может подтереть) и потом уже записать. и так по кругу. самая свежая запись перед свободным полем Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
proba 0 7 июня, 2006 Опубликовано 7 июня, 2006 · Жалоба 30 г. = 946 080 000 сеk. т.е. как минимум нужен колцевои запись в 1024 ячеики. 1 баит FRAM стоит наверно менше чем 1024 баит EEPROM. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IEC 1 7 июня, 2006 Опубликовано 7 июня, 2006 · Жалоба А можно подключить компаратор на контроль падения напряжения питания и при его срабатывании запрещать все прерывания и сохранять данные. Если контролировать питание до стабилизатора то времени хватит забить байт 100 (зависит от емкости конденсатора перед стабилизатором). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BVU 0 7 июня, 2006 Опубликовано 7 июня, 2006 · Жалоба Fram Дороже Eeprom , поэтому выбор руковадстав пао на Eeprom :( Да довольно 'компетентное' у Вас руководство... при непрерывной записи с интервалом в 0.5 сек. eeprom-ма хватит всего лишь на ~5.5 лет. :) А чем внутреннее ОЗУ то неустраивает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nameless 0 7 июня, 2006 Опубликовано 7 июня, 2006 · Жалоба Совсем недавно аналогичная задача встала из-за непредсказуемого на объекте поведения питалова... Так вот. Если запрещенных комбинаций нет (типа 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==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] И память перетирать при этом не страшно! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BVU 0 8 июня, 2006 Опубликовано 8 июня, 2006 · Жалоба Задачу можно решить более простым способом, которая увеличит срок службы системы не до 50-ти, а более лет. На вычислительное устройство, как автономный источник питания ставиться ионистр (на случай сбоя внешнего питания) и периодически контролируется внешнее питание. Запись данных производится в ОЗУ. При обнаружении отключения внешнего питания, данные начинают записываться в eeprom либо система с течением времени (в зависимости от энергоресурса ионистора) консервируется до 'до лучших времен'. Поведенческих вариантов системы можно придумать великое множество исходя из условий эксплуатации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться