Гость mihask 20 февраля, 2007 Опубликовано 20 февраля, 2007 (изменено) · Жалоба И все таки я пожалй остановлюсь на RTC+tiny2313+кандюк+диод, т.к. неохото бэкапное питание как в тачках заводить, должно быть так: Есь питалово на счетчике он мотает, нет питалова от вырублен, всего два провода из корпуса торчать будет. А такой способ сохранения данных надежен? Ведь здесь видимо предполагается аварийное отключение питания? То есть в месте с резким отключением питания может возникнуть какая нибудь помеха на линии связи RTC - tiny2313. Или это маловероятно ? А как часто нужно сохранять данные во flash? Ведь если данные нужно сохранять достаточно редко то способ предложенный AlexG (ну и я его тоже предлагал в самом начале :) ) вполне подойдет,причем у вас будет несколько точек записи если одна запортится остальные останутся. Ведь эти 100000 циклов чтения/записи фирма производитель гарантирует(для конкретной одной ячейки ), а записывая каждый раз в новые ячейки мы расширяем этот диапазон. По крайней мере способ "RTC+tiny2313+кандюк+диод" можно совместить со способом предложенным AlexG , просто сохранять счетчик в EEPROM пореже, хотя бы для резерва :) Изменено 20 февраля, 2007 пользователем mihask Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bloodden 0 20 ноября, 2007 Опубликовано 20 ноября, 2007 · Жалоба метод как у aahardsoft"а у меня уже намотал под тыщу часов без единого сбоя. вкл/выкл 1-2 раза в сутки. 90s8515 самовар, и ему с головой хватает всё записать и лечь спать 100мкФ кондёра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
visht 0 20 ноября, 2007 Опубликовано 20 ноября, 2007 · Жалоба почти согласен с aahardsoft но делал чуть иначе: Запись моточасов проводилась в RTC с интервалом 1 минута. При этом считалось CRC записи, или просто инверсия (не раз наверное видели в дампах щитков :) ). Для супер надежности можно сделать 2-й буфер, на случай вырубки питания в момент записи. По выключению питания ничего не пишется, все действия производяться по включению. 1. даем выдержку для устаканивания питания, можно в этот момент LCD проинитить или еще что нибудь. 2. проверяем CRC записи, и если все OK переносим результат в EEPROM процессора. 3. Если CRC не совпало ни в одном буфере - переносим данные из EEPROM в RTC. Потеря время последней работы. 4. Если совсем все плохо, CRC не совпало нигде - общая ошибка ... Ну а все остальное типа буфер в EEPROM на любителя :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maik-vs 0 22 ноября, 2007 Опубликовано 22 ноября, 2007 · Жалоба Сам хочу. Пока на бумажке придумал следующее. В ЕЕПРОМ организуем N ячеек по 4 байта. 3 байта - число и 1 байт CRC. Если число - время в минутах, то 3 байта хватит на 32 года. Сначала ячейки инициализируются нулями с правильным CRC: убеждаемся что они записываются. При включении питания ищем максимальное значение с правильным CRC: это наработанное время. Переписываем его в память, будем наращивать каждую минуту, вычисляя CRC. В ЕЕПРОМе ищем верную запись с нулями+CRC. Запоминаем адрес: это место для записи счётчика. Если нету таковой, то пытаемся записать нули во все 4 байта. Получилось - ячейка рабочая. При выключении (смотрим компаратором на напряжение ДО стабилизатора) быстренько переписываем счётчик в ячейку. В качестве часов хочу использовать родной кварц-таймер-программный счётчик по прерыванию таймера с коррекцией каждые N и M*N интервалов. Точность получается хорошая. Алгоритм сделан из предположения, что в "усталый" ЕЕПРОМ труднее записать нули, чем единицы. Это так? Хочется услышать критику. :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться