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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
Petka
сообщение Jul 16 2008, 06:56
Сообщение #31


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

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(Serjio @ Jul 16 2008, 00:39) *
Кольцевой буфер конечно может спасти, но за счет усложнения мат обеспечения, и если есть свободные ресурсы (по таймингу, по свободной памяти программ и EEPROM).

Appnote AVR101 "High endurance EEPROM storage"
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Jul 16 2008, 07:36
Сообщение #32


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Вот как я представляю себе это 07.gif Прошу критиковать. (применение FRAM, батареек - простите, это другая песня, речь идёт именно об использовании родного ППЗУ в кристалле).

В EEPROM выделяем буфер N слов. Слово 4 байта ( 3 байта число минут, хватит на 32 года, 1 байт CRC). При прошивке расписываем буфер нулями с правильным CRC.

При включении прибора ищем ближайшее слово с правильным CRC. (адрес P) Его значение переписывааем в RAM, там наращиваем каждую минуту. Дальше ищем от P+1 до P-2 по кольцу слово с правильным нулём (в смысле CRC), адрес Q. Если нет - пишем нуль+CRC в P+1 .. P-2 пока получится.

Во время работы каждую минуту записываем значение времени в Q с проверкой. Не получилось - ищем/организуем следующее слово для записи, как описано выше.

Что получается. Буфер содержит "хвост" из счётчиков последних включений с правильным CRC. По жизни EEPROM исчерпывает ресурс, и тогда получается неверный CRC. Вся эта байда работает, пока не испортятся все слова буфера, кроме одного. Тогда в нём содержится счётчик наработки на момент исчерпания ресурса. Точность 1 минута, потери возникают при включении меньше, чем на минуту и при каждом выключении. То есть прибор при нормальной работе включается на десятки минут.
Чтобы не писать каждую минуту и избежать потерь при выключении, можно организовать контроль питания и буферный кондёр такой, чтобы хватило на запись. Но это уже третья песня smile.gif

Что хочется узнать. Как портятся ячейки EEPROM - становятся FF, 00 или ещё как-то? Для проверки правильности записи - CRC или ещё что-то?

Сообщение отредактировал Maik-vs - Jul 16 2008, 07:44
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 16 2008, 09:07
Сообщение #33


Гуру
******

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



Цитата(Serjio @ Jul 16 2008, 10:26) *
вполне достаточно трех одинаковых переменных, и при старте их сравнивать между собой, делая выводы.

Это менее надежно. Тем более, что это должны быть не переменные, а структуры со своим CRC.
Go to the top of the page
 
+Quote Post
delamoure
сообщение Jul 18 2008, 08:00
Сообщение #34


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

Группа: Свой
Сообщений: 176
Регистрация: 2-04-08
Из: Днепропетровск
Пользователь №: 36 406



Цитата(prm @ Jul 15 2008, 14:38) *
Смотрим в сторону FM31xx от Ramtron. Часы + Память в одном флаконе. Замечательное решение!



А вы пробовали?
Кстати, народ, обратите сразу внимание на несколько неудобную реализацию reset у этих чипов.


--------------------
Ребята, как же это вы без гравицапы пепелац выкатываете из гаража? Это непорядок. ©
Go to the top of the page
 
+Quote Post
sgs
сообщение Jul 18 2008, 08:22
Сообщение #35


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 25-01-06
Из: Самара
Пользователь №: 13 578



Цитата(Maik-vs @ Jul 16 2008, 12:36) *
Вот как я представляю себе это 07.gif Прошу критиковать. (применение FRAM, батареек - простите, это другая песня, речь идёт именно об использовании родного ППЗУ в кристалле).

В EEPROM выделяем буфер N слов. Слово 4 байта ( 3 байта число минут, хватит на 32 года, 1 байт CRC). При прошивке расписываем буфер нулями с правильным CRC.
....
Что хочется узнать. Как портятся ячейки EEPROM - становятся FF, 00 или ещё как-то? Для проверки правильности записи - CRC или ещё что-то?


Поскольку изначально предлагалось писать в 24С02, то вопрос использования внутреннего EEPROMа не поднимался. Для использования EEPROM я применял лет пять назад следующий алгоритм: 3 зоны памяти - 2 байта, 256 байтов и 4х256. В первой зоне - два старших байта (3 и 2) сохраняемого числа. Они пишутся с разрядкой 1/65536 относительно частоты записи. Во втором блоке - средний байт (1), причем адрес внутри блока определяется байтом (2). Младший байт пишется в массив 1024(4х256) по адресу, определяемому байтом (1) и младшими разрядами байта (2). Запись в каждую зону - строго по изменению соответствующего байта. Таким образом, живучесть каждой записи определяется живучестью записи самого младшего байта - 600 000 Х 1024, что дает порядка 20 лет неперывной записи с периодом в 1 секунду... Естественно, применялась 24С16 - 2К байтов. Свободные ячейки пошли на служебные параметры процессора... Правда, такой вариант применим только при наличии внешней EEPROM, поскольку надежность записи напрямую зависит от объема памяти. Еще одна проблема внутреннего EEPROMа - запись в одну ячейку за раз, в то время, как 24 серия имеет буфер на 8-16-32 байта одновременной записи.
Go to the top of the page
 
+Quote Post
IJAR
сообщение Jul 23 2008, 07:56
Сообщение #36


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 26-02-07
Из: г. Зеленоград
Пользователь №: 25 669



Для Вашей задачи есть готовое устройство
http://www.fractal.com.ru/index.php?p=devi...p;ssp=IND1-2.7x


--------------------
Вяжешь - вой, а поедешь - песни пой.
Между "хочу" и "можно" всегда есть дистанция
Go to the top of the page
 
+Quote Post
Spym
сообщение Jul 24 2008, 09:53
Сообщение #37


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 24-02-08
Из: Москва
Пользователь №: 35 348



Уже готова разводка под FM25C160 (FRAM).
Планирую записывать время наработки 1 раз в секунду, используя 2 ячейки (запись в каждую ячейку через раз), то есть в случае отключения питания в процессе записи счетчик потеряет не более 1 секунды.
Go to the top of the page
 
+Quote Post
sgs
сообщение Jul 24 2008, 16:45
Сообщение #38


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 25-01-06
Из: Самара
Пользователь №: 13 578



Цитата(Spym @ Jul 24 2008, 14:53) *
Уже готова разводка под FM25C160 (FRAM).
Планирую записывать время наработки 1 раз в секунду, используя 2 ячейки (запись в каждую ячейку через раз), то есть в случае отключения питания в процессе записи счетчик потеряет не более 1 секунды.

Для FRAM'а существенно напряжение питания: 4.5 ..5.5 В. Если питание будет ниже 4.5 В во время обращения к чипу (все равно - по записи или чтению), вы рискуете потерять не только данные в ячейке обращения, но и во всех связанных с ней ячейках строки регенерации - конкретно для FM25C160 - 4 байта в 4-х разных банках. Поэтому производитель настоятельно рекомендует (page 3) контролировать питание и принимать меры, чтобы хотя бы сигнал CS был "1" при пониженном напряжении. В своих схемах я перед обращением к FRAM'у проверяю уровень "сырого" питания (до стабилизатора), выбранный так, чтобы времени разряда конденсатора фильтра до минимального входного напряжения стабилизатора хватило на операцию записи/чтения. При этом важные данные хранятся блоками с CRC. Кстати, не стоит полагаться на внутренние подтягивающие резисторы выводов процессоров - обязательно подтягивайте CS резистором 10..100 КОм к плюсу питания.
Go to the top of the page
 
+Quote Post
Боинг749
сообщение Aug 25 2008, 12:59
Сообщение #39


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

Группа: Новичок
Сообщений: 83
Регистрация: 25-08-08
Пользователь №: 39 801



Цитата(Spym @ Jul 13 2008, 01:37) *
Доброго времени суток.

Требуется хранить в энергонезависимой памяти количество запусков станка и время наработки, для чего предполагается использовать что-то вроде Atmel AT24C02B.

Запись значений в EEPROM производится при отключении питания, пока конденсаторы держат 5В.

С целью увеличить ресурс памяти, была мысль организовать работу с ней следующим образом:

Изначально во все ячейки записаны 0x00.
При отключении устройства пишем значения в ближайшие свободные ячейки.
При последующем включении читаем последнюю ячейку перед 0x00.
Если после прочитанной ячейки нет свободных, записываем во все ячейки 0x00 (т.е. следующая запись с первой ячейки).

(Скорость в данном случае не критична).
Возможно, кто решал схожие задачи?


Если нужно писать более одного байта то лучше использовать FLASH.. Тем более что она и пишется быстрей (4.5мС против 8-9мС у EEPROM)
Go to the top of the page
 
+Quote Post
Igor26
сообщение Aug 25 2008, 13:06
Сообщение #40


Знающий
****

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



Цитата(Боинг749 @ Aug 25 2008, 16:59) *
Если нужно писать более одного байта то лучше использовать FLASH.. Тем более что она и пишется быстрей (4.5мС против 8-9мС у EEPROM)

Послушайте уважаемый. Вы темы читаете полностью, или только заголовки? Интересно, на сколько тем вы еще ответите за сегодня.
Go to the top of the page
 
+Quote Post
Боинг749
сообщение Aug 25 2008, 13:20
Сообщение #41


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

Группа: Новичок
Сообщений: 83
Регистрация: 25-08-08
Пользователь №: 39 801



Цитата(Igor26 @ Aug 25 2008, 16:06) *
Послушайте уважаемый. Вы темы читаете полностью, или только заголовки? Интересно, на сколько тем вы еще ответите за сегодня.

Человек спросил, я ему дал совет из своего опыта....Хотел помочь
Go to the top of the page
 
+Quote Post

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

 


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


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