16+
Вторник
24 октября
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

Микроконтроллеры AVR

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
Adept  (03.10.2017 14:10 - 03.10.2017 14:38) , в ответ на Для повышения надежности записи в ЕЕПРОМ применяю дублирование, размазывание по площадям и контроль целостности. автор: ASDFS
дублирование не катит (если только с подсчётом КС блока) у меня сделана мажоритарная логика (для mega16). Ну да... тройной расход памяти :( 
зато надёжность выше на порядок. Правда если по уму, конечно нужно ремап делать и карту битых секторов байт но как-то всё сильно "лохмато" получается, да и где хранить карту битых секторов? в памяти программ? Мажоритарная логика (примитивная, только на чтение) работает без нареканий: пишем в три байта, без проверок, читаем тоже три байта, верное значение выбираем "голосованием" по критерию не хуже, чем 2 из 3-х :) Одиночные байты почему-то иногда сбоили при записи (аналогичные п/п работают в tiny2313 без сбоев). Пытался победить несколько дней ( не вкурил, где собака зарылась :(( сделал мажоритарное чтение, т.к. проект "горел" по срокам. А сохранять нужно было всего-то десяток байт настроек. Потом, когда будет время покопаться более вдумчиво - попробую победить (думаю где-то подкладывает свинью логика работы контроллера EEPROM, или при выключении питания (просту обрубаем питание), управление каким-то образом передаётся на процедуру записи, т.к. именно во время чтения при включении (или при выключении питания) портится значение ячейки. Может с питанием какая фигня (там 4,8 вольта и 16МГц) но питание падает медленно (там ёмкости в парутыщмкФ). brownout detector настроен как надо, головки адресный регистр "паркуется" (записывается нулями сразу после чтения), нулевая ячейка не используется. Но сбой возникает примерно так. Запрограммировали настроечные константы в приборе (установили их с клавиатуры на передней панели), выключаем, включаем - работает. Выключаем, включаем - работает. Выключаем.... и так много раз (дней). На энный раз включаем - и упс... константы слетели (одна, но рандомно любая). Думаю дело действительно в медленно падающем питании, когда при определённых условиях контроллеру "сносит крышу" и он начинает выполнять абы какой код (но как же тогда BD, который вроде как должен затыкать его сбросом?? На tiny2313 такой проблемы нет, но там в устройстве нет и таких ёмкостей на питании. Нужно будет пожалуй ещё сделать обновление (запись) сбойного байта, если таковой обнаружится при чтении, ну и вообще процедуру записи доработать по типу "запись-проверка" (чтение-то делается быстро, много времени не займёт. ) Правда непонятно, что делать со сбойным байтом?? Пытаться прописать его энное, заданное количество раз??? так при записи массива в EEPROM на этом можно потерять время, а бывают сценарии, когда нужно быстро сохранить массив в EEPROM (пусть даже какой-то байт будет и битый, зато остальные запишутся). А бывает нужно наоборот, - можно неспешно, но гарантированно сохранить все. Видать для этих случаев нужно две процедуры записи сделать. Одну - без проверок (или просто запись/проверка), а вторую с заданным количеством повторных попыток записи и ремапом в резервную ячейку, если не получилось (но там ещё нужно продумать и понять как быть с обработкой ошибок) :((( Так вот тривиальная задача обрастает множеством граблей, как только отходим от варианта "ну и фиг с ним, - работает же" :))
 [x][x][x][x][x][x] [x][x][x][x][x][x][x][x]

Тема выделяется по переводу строки или автоматом

 

Имя


Регистрация позволит вам редактировать и перемещать ваши сообщения и прикреплять к ним файлы.
 
Символы: á é ó ú ý « »
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7526 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVII