Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Учет времени наработки
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
beer_warrior
Возникла проблемка - в девайсе необходимо считать время наработки.
Куча параметров системы хранится в AT45DBxxx, добавить еще один не проблема.
Однако....
По условиям девайс может работать меньше часа и короткие фрагменты могут сложиться в солидную неучтенку, поэтому время придеться писать поминутно.
Исходя из количества циклов флэши, писать хватит менее чем на год.
Вижу два выхода:
1. Хранить наработку в ОЗУ и писать по пропаданию питания, снабдив девайс солидным кондером.
Не хочеться из-за усложнения схемы и занятости выводов прерываний.
2.Писать в десяток ячеек памяти попеременно - благо памяти с избытком.
Не хочеться из-за достаточно морочного алгоритма - очевидно придеться писать в разные страницы.
М.б кто-н. посоветует третий путь?
iosifk
Цитата(beer_warrior @ May 19 2006, 17:37) *
Возникла проблемка - в девайсе необходимо считать время наработки.
1. Хранить наработку в ОЗУ и писать по пропаданию питания, снабдив девайс солидным кондером.
Не хочеться из-за усложнения схемы и занятости выводов прерываний.
2.Писать в десяток ячеек памяти попеременно - благо памяти с избытком.
Не хочеться из-за достаточно морочного алгоритма - очевидно придеться писать в разные страницы.
М.б кто-н. посоветует третий путь?


Память FRAM - не боится ограничений на число циклов перезаписи.
По поводу алгоритма эмуляции EEPROMа - полностью у NEC, а у меня на сайте только часть переведена и оформлена в статью.
Удачи!
rezident
1 способ. Сопровождайте каждую запись в DataFlash датой/временем. При включении ищите последнюю валидную дату/время.
Нюансы: алгоритм усложняется (проверка валидности записи), могут быть проблемы с поиском/восстановлением последней даты (особенно если отдельного RTC нет).
2 способ. В качестве ОЗУ для хранения времени наработки используйте один из буферов DataFlash. При пропадании питания запись одной страницы много времени не займет.
Нюансы: нужен узел сигнализации аварии питания, который ничего сложного не представляет - грубо говоря, TL431+оптрон в цепи первичного (сетевого) выпрямителя. Также нужен запас по времени при аварии питания. Если БП импульсный, то опять же это не проблема - при необходимости увеличить номинал электролита сетевого выпрямителя.

Цитата(iosifk @ May 19 2006, 19:47) *
Память FRAM - не боится ограничений на число циклов перезаписи.

Фраза звучит довольно забавно smile.gif
Petka
Цитата(rezident @ May 19 2006, 18:10) *
1 способ. Сопровождайте каждую запись в DataFlash датой/временем. При включении ищите последнюю валидную дату/время.
Нюансы: алгоритм усложняется (проверка валидности записи), могут быть проблемы с поиском/восстановлением последней даты (особенно если отдельного RTC нет).
2 способ. В качестве ОЗУ для хранения времени наработки используйте один из буферов DataFlash. При пропадании питания запись одной страницы много времени не займет.
Нюансы: нужен узел сигнализации аварии питания, который ничего сложного не представляет - грубо говоря, TL431+оптрон в цепи первичного (сетевого) выпрямителя. Также нужен запас по времени при аварии питания. Если БП импульсный, то опять же это не проблема - при необходимости увеличить номинал электролита сетевого выпрямителя.

Цитата(iosifk @ May 19 2006, 19:47) *

Память FRAM - не боится ограничений на число циклов перезаписи.

Фраза звучит довольно забавно smile.gif


с монитором питания и конденсаторами не стоит заморачиваться....

проще действительно поставить изделие фирмы ramtron, которое представляет и энергонезависимую память на НЕОГРАНИЧЕННОЕ количество перезаписей + часы реального времени + некоторые дополнительные вкусности и стоит недорого. и главное всего 1 микросхема =)
rezident
А мне вот любопытно, у кого-либо из советующих FRAM серия изделий (скажем сотня штук), имеющая в составе FRAM хотя бы года три-четыре безаварийно и безглюкаво уже отработала? Или, как обычно, все советуют чисто теоретис-с-ски? wink.gif
Petka
Цитата(rezident @ May 19 2006, 18:30) *
А мне вот любопытно, у кого-либо из советующих FRAM серия изделий (скажем сотня штук), имеющая в составе FRAM хотя бы года три-четыре безаварийно и безглюкаво уже отработала? Или, как обычно, все советуют чисто теоретис-с-ски? wink.gif


мне микросхемки с FRAM очень понравились, правда применить их негде было =) так что сразу скажу - не использовал, но и отрицательных отзывов не слышал о них.
rezident
Цитата(Petka @ May 19 2006, 20:34) *
не использовал, но и отрицательных отзывов не слышал о них.

А я положительных smile.gif Только восторженные. О том, как "это здорово" и что "в следующей разработке я их обязательно применю". А вот о результатах применения почему-то умалчивают.
m16
beer_warrior
раз у вас есть RTC так может применить с внутренней RAM к примеру DS1306 и тд - 96 байт внутр памяти пользователя если мало то можно взять DS1670 ,DS1680 и тд - управление и аварийное питание внешней RAM
OlegIvanov
SRAM с внутренней батареей - ножек правда до черта
SRAM + внешняя батарея - то же
SRAM с SPI или 1-Wire интерфейсом - относительно очень небольшой обьем памяти,
но если фиксировать только количество минут то вполне...
beer_warrior
1.Хм, FRAM.
Дело в том что уже используеться 45DB, слеплена под нее файловая система, да и доставаема она на 2 порядка лучше.
2.RTC у меня нет, просто считаються тики системного таймера.
Мне ж не даты нужны, а относительное время.
3.Возникла идея навенная постами,
А что если действительно использовать один из буферов 45-й как внешнее ОЗУ, и держать ее на ионисторе например?
rezident
Цитата(beer_warrior @ May 19 2006, 23:06) *
А что если действительно использовать один из буферов 45-й как внешнее ОЗУ, и держать ее на ионисторе например?

В принципе можно. AT45 в stand-by единицы микроАмпер потребляет. Но все же лучше, если буфер успеть записать в DataFlash перед выключением rolleyes.gif
beer_warrior
Наверное попробую и так и эдак, а о результатах доложу smile.gif
ps1x
Цитата(beer_warrior @ May 19 2006, 21:32) *
Наверное попробую и так и эдак, а о результатах доложу smile.gif



А может так:
1)При начале работы девайса пишется время начала.
2)При завершении - время завершения
3)Вычитаем одно из другого и получаем длительность работы.
4)Считываем из памяти сколько проработали за всю жизнь
5)Прибавляем туда полученое время.
6)Записываем обратно результат.

Т.е. за каждый цикл включения выключения тратиться только 1 запись в память.

В eeprom естессно.
rezident
Цитата(ps1x @ May 20 2006, 00:05) *
1)При начале работы девайса пишется время начала.
2)При завершении - время завершения
3)Вычитаем одно из другого и получаем длительность работы.
4)Считываем из памяти сколько проработали за всю жизнь
5)Прибавляем туда полученое время.
6)Записываем обратно результат.

При аварийном выключении такой довольно длительный алгоритм может не прокатить. Обычно время между возникновением сигнала об аварии питания и пропаданием питания рассчитывают порядка 10-20 мс. Конечно при использовании ИБП это время бывает и больше, но расчитывают на самый худший случай.
ps1x
Цитата(rezident @ May 19 2006, 23:03) *
Цитата(ps1x @ May 20 2006, 00:05) *

1)При начале работы девайса пишется время начала.
2)При завершении - время завершения
3)Вычитаем одно из другого и получаем длительность работы.
4)Считываем из памяти сколько проработали за всю жизнь
5)Прибавляем туда полученое время.
6)Записываем обратно результат.

При аварийном выключении такой довольно длительный алгоритм может не прокатить. Обычно время между возникновением сигнала об аварии питания и пропаданием питания рассчитывают порядка 10-20 мс. Конечно при использовании ИБП это время бывает и больше, но расчитывают на самый худший случай.

Так токи там совсем небольшие, можно от маленького ионистра запитать... Я думаю его на пару минут до выключения хватит.
defunct
Цитата(beer_warrior @ May 19 2006, 16:37) *
1. Хранить наработку в ОЗУ и писать по пропаданию питания, снабдив девайс солидным кондером.
Не хочеться из-за усложнения схемы и занятости выводов прерываний.
2. ....
М.б кто-н. посоветует третий путь?

мммм.. если немного модифицировать первый, а именно снабдить девайс литиевой таблеткой (такой от которой RTC в мамках питаются), AT45 если не изменяет память с 3В дружит, от той же таблетки питать RTC. При пропадании питания - сохранять данные в AT45, затем отключать флеш и переходить в Power Down режим, выводить МК из Power Down одновибратором при появлении основного питания.

Ну, а что если вообще просто поставить DS1307 с таблеткой, да и пусть себе считает наработку, тем более в нем и память имеется, не много ни мало но должно хватить, чтобы там размещать сведения о наработанных часах. ;>
Igor26
Цитата
Ну, а что если вообще просто поставить DS1307 с таблеткой, да и пусть себе считает наработку, тем более в нем и память имеется, не много ни мало но должно хватить, чтобы там размещать сведения о наработанных часах. ;>

У меня именно так и сделано в одном устройстве. Наработку считаю минутами. Плюс считатаю количество срабатываний исполнительных механизмов. Работает около двух лет. Подводных камней незамечено.
kolobok0
Цитата(rezident @ May 19 2006, 18:36) *
Цитата(Petka @ May 19 2006, 20:34) *

не использовал, но и отрицательных отзывов не слышал о них.

А я положительных :) Только восторженные. О том, как "это здорово" и что "в следующей разработке я их обязательно применю". А вот о результатах применения почему-то умалчивают.



ставим FRAM 25640 уже более 2 лет. Интенсивность по некоторым ячейкам - достаточно не маленькая (чтение-запись), несколько раз в секунду. проблем пока не замечено. Изготовленно более 2000 установок.

с уважением
(круглый)
rezident
Цитата(kolobok0 @ May 22 2006, 21:07) *
ставим FRAM 25640 уже более 2 лет. Интенсивность по некоторым ячейкам - достаточно не маленькая (чтение-запись), несколько раз в секунду.

О! Это уже близко к 10^9 циклов. Спасибо за информацию!
beer_warrior
ОК всем спасибо.
Небольшой OFF - где в Киеве можно разжиться FRAM по-быстрому?
Для макета.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.