| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
ATMega, проблемы с медленным понижением Vсс
08.02.2008, 23:32
|
|
|
Вид на жительство
Регистрация: 26.07.2007
Сообщений: 482
Сказал спасибо: 18
Сказали Спасибо 106 раз(а) в 67 сообщении(ях)
|
ATMega, проблемы с медленным понижением Vсс
Вечер добрый, наткнулся на грабли, дано:
Контроллер, программа получает данные, и сохраняет в EEPROM, при потере питания, данные с EEP восстанавливаются... Все было хорошо, до тех пор, пока по цепи питания устройства не поставили большой конденсатор (напряжения питания убывает медленно)...
теперь, данные в 20% случаев восстанавливаются правильно, в 60% просто обнуляются, в остальных 20% - данные придумываются сами, причем даже близко не напоминающие то, что должно было быть...
Внимание вопрос, - как с этим бороться, не считая ключа по питанию...
__________
Не бывает так плохо, чтоб не могло стать еще хуже...
|
|
|
|
09.02.2008, 00:03
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Включить BOD или поставить внешний монитор питания. Сохранять данные несколько раз, при восстановлении проверять по мажоритарному принципу. Не хранить ничего по адресу 0 в еепром. Примерно так, в порядке убывания полезности.
|
|
|
|
09.02.2008, 00:16
|
|
|
Прописка
Регистрация: 22.09.2006
Адрес: Днепропетровск
Сообщений: 114
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Можно применить внешний супервизор питания.
Для контроля целостности данных, можно считать CRC (для скорости CRC-8 ) и записывать в тот же EEPROM.
|
|
|
|
09.02.2008, 00:57
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,479
Сказал спасибо: 3,193
Сказали Спасибо 2,982 раз(а) в 682 сообщении(ях)
|
Есть еще вариант:
1)Данные храним примерно в середине EEPROM (адреса 180-230). Нужно насильно заставить их размещаться там директивой.
2) Вводим 2 переменных (одну в ОЗУ, сторую в EEPROM по адресу, например 355).
3) После КАЖДОГО чтения и КАЖДОЙ записи считываем переменную из EEPROM в ОЗУ.
Этим мы заставим постоянно находится в адресных регистрах адреса ненужной нам ячейки и при сбоях пострадает только информация в ячейках EEPROM от 0 до 100 (допустим) и от 355 до 450 (допустим). А данные по адресам 180-230 останутся целые.
|
|
|
|
09.02.2008, 01:10
|
|
|
Вид на жительство
Регистрация: 26.07.2007
Сообщений: 482
Сказал спасибо: 18
Сказали Спасибо 106 раз(а) в 67 сообщении(ях)
|
Ух-ты! сколько советов !!!! С-П-А-С-И-Б-О!!!!
Вот сейчас набрел на БОД, включил и вроде все заработало как часики, поставил на 4волта порог, все проблемы улетучились! Насчет CRC16 - я думаю слишком, не стоит оно того, а вот про копию в RAM - так и делал, в EEP в процессе работы только записываются новые данные, которые считываются во время загрузки...
Сейчас пишу в ЕЕР с адреса 0 и выше, погонял раз 20, с очень медленными и быстрыми скачками, вроде глюков небыло ни одного!
Еще раз всем спасибо!
ЗЫ
 а вообще-то, мне здесь полагался жирный RTFM  Ибо заслужил!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:52.
|
|