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

 
 
> EEPROM. Счетчик времени наработки., AT24C02B + mega128
Spym
сообщение Jul 12 2008, 22:37
Сообщение #1


Участник
*

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



Доброго времени суток.

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

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

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

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

(Скорость в данном случае не критична).
Возможно, кто решал схожие задачи?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Serjio
сообщение Jul 16 2008, 06:26
Сообщение #2


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

Группа: Свой
Сообщений: 137
Регистрация: 3-09-04
Пользователь №: 594



вполне достаточно трех одинаковых переменных, и при старте их сравнивать между собой, делая выводы.
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Jul 16 2008, 07:36
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 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
sgs
сообщение Jul 18 2008, 08:22
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 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

Сообщений в этой теме
- Spym   EEPROM. Счетчик времени наработки.   Jul 12 2008, 22:37
- - defunct   Цитата(Spym @ Jul 13 2008, 01:37) (Скорос...   Jul 12 2008, 22:56
|- - aaarrr   Цитата(defunct @ Jul 13 2008, 02:56) IMHO...   Jul 12 2008, 22:57
|- - defunct   Цитата(aaarrr @ Jul 13 2008, 01:57) Чем л...   Jul 12 2008, 23:03
|- - aaarrr   Цитата(defunct @ Jul 13 2008, 03:03) цено...   Jul 12 2008, 23:20
|- - sgs   Цитата(aaarrr @ Jul 13 2008, 04:20) Цена ...   Jul 13 2008, 07:01
|- - aaarrr   Цитата(sgs @ Jul 13 2008, 11:01) А вот на...   Jul 13 2008, 11:12
|- - dx40   А чем не подходит стандартная реализация? Разбивае...   Jul 13 2008, 11:26
- - aaarrr   Цитата(Spym @ Jul 13 2008, 02:37) Если по...   Jul 12 2008, 22:56
- - Flasher   Может процессор со встроенным EEPROM?   Jul 12 2008, 22:57
- - Spym   ЦитатаА чем не подходит стандартная реализация? Та...   Jul 13 2008, 17:31
|- - dx40   Цитата(Spym @ Jul 13 2008, 21:31) Так и х...   Jul 13 2008, 17:54
|- - delamoure   Цитата(Spym @ Jul 13 2008, 20:31) Так и х...   Jul 13 2008, 21:04
- - Serjio   Если писать во внутреннюю память, то при записи ра...   Jul 13 2008, 18:45
- - Razubaev   Serjio: "...ресурсов хватит почти на 2 года.....   Jul 14 2008, 07:29
- - Serjio   Это не рекомендация - это предупреждение, сперва с...   Jul 14 2008, 12:21
- - prm   ИМХО количество запусков лучше считать при подаче ...   Jul 15 2008, 03:40
|- - aaarrr   Цитата(prm @ Jul 15 2008, 07:40) Отличный...   Jul 15 2008, 08:57
|- - defunct   Цитата(aaarrr @ Jul 15 2008, 11:57) ИМХО,...   Jul 15 2008, 11:25
- - Artem Polonsky   Если не критична точность - можно просто обновлять...   Jul 15 2008, 09:41
- - aaarrr   Если правильно (без стирания всего и вся разом) ор...   Jul 15 2008, 11:37
- - prm   Цитата(aaarrr @ Jul 15 2008, 14:57) ИМХО,...   Jul 15 2008, 11:38
|- - aaarrr   Цитата(prm @ Jul 15 2008, 15:38) Смотрим ...   Jul 15 2008, 11:43
|- - delamoure   Цитата(prm @ Jul 15 2008, 14:38) Смотрим ...   Jul 18 2008, 08:00
- - prm   Вариантов привели огромное количество. Думаю автор...   Jul 15 2008, 11:57
- - MALLOY2   А чем неустраевает внутриняя EEPROM меги128 ?   Jul 15 2008, 12:36
- - akl   Здравствуйте. Для решения аналогичной задачи остан...   Jul 15 2008, 13:28
- - ukpyr   Цитатапри записи раз в 10 минут ресурсов хватит по...   Jul 15 2008, 13:43
- - Serjio   Курим datasheet на мегу8 (и прочие меги) : 512 Byt...   Jul 15 2008, 20:39
|- - aaarrr   Цитата(Serjio @ Jul 16 2008, 00:39) Кольц...   Jul 15 2008, 20:48
|- - Petka   Цитата(Serjio @ Jul 16 2008, 00:39) Кольц...   Jul 16 2008, 06:56
|- - aaarrr   Цитата(Serjio @ Jul 16 2008, 10:26) вполн...   Jul 16 2008, 09:07
- - IJAR   Для Вашей задачи есть готовое устройство http://ww...   Jul 23 2008, 07:56
- - Spym   Уже готова разводка под FM25C160 (FRAM). Планирую ...   Jul 24 2008, 09:53
|- - sgs   Цитата(Spym @ Jul 24 2008, 14:53) Уже гот...   Jul 24 2008, 16:45
- - Боинг749   Цитата(Spym @ Jul 13 2008, 01:37) Доброго...   Aug 25 2008, 12:59
- - Igor26   Цитата(Боинг749 @ Aug 25 2008, 16:59) Есл...   Aug 25 2008, 13:06
- - Боинг749   Цитата(Igor26 @ Aug 25 2008, 16:06) Послу...   Aug 25 2008, 13:20


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

 


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


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