|
EEPROM. Счетчик времени наработки., AT24C02B + mega128 |
|
|
|
Jul 16 2008, 07:36
|
Местный
  
Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101

|
Вот как я представляю себе это  Прошу критиковать. (применение 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 минута, потери возникают при включении меньше, чем на минуту и при каждом выключении. То есть прибор при нормальной работе включается на десятки минут. Чтобы не писать каждую минуту и избежать потерь при выключении, можно организовать контроль питания и буферный кондёр такой, чтобы хватило на запись. Но это уже третья песня  Что хочется узнать. Как портятся ячейки EEPROM - становятся FF, 00 или ещё как-то? Для проверки правильности записи - CRC или ещё что-то?
Сообщение отредактировал Maik-vs - Jul 16 2008, 07:44
|
|
|
|
|
Jul 18 2008, 08:00
|

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

|
Цитата(prm @ Jul 15 2008, 14:38)  Смотрим в сторону FM31xx от Ramtron. Часы + Память в одном флаконе. Замечательное решение! А вы пробовали? Кстати, народ, обратите сразу внимание на несколько неудобную реализацию reset у этих чипов.
--------------------
Ребята, как же это вы без гравицапы пепелац выкатываете из гаража? Это непорядок. ©
|
|
|
|
|
Jul 18 2008, 08:22
|
Участник

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

|
Цитата(Maik-vs @ Jul 16 2008, 12:36)  Вот как я представляю себе это  Прошу критиковать. (применение 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 байта одновременной записи.
|
|
|
|
|
Jul 24 2008, 16:45
|
Участник

Группа: Участник
Сообщений: 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 КОм к плюсу питания.
|
|
|
|
|
Aug 25 2008, 12:59
|
Частый гость
 
Группа: Новичок
Сообщений: 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)
|
|
|
|
|
Aug 25 2008, 13:20
|
Частый гость
 
Группа: Новичок
Сообщений: 83
Регистрация: 25-08-08
Пользователь №: 39 801

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