|
|
  |
mega162 теряет настройки EEPROM |
|
|
|
Nov 18 2008, 21:05
|

Местный
  
Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423

|
Странная зависимость обнаружилась, при работе устройства. В памяти хранятся базовые настройки системы, перед их использованием проверяется их crc. Замечен сбой crc когда когда устройство полежит без работы сутки  . При частых включених и выключениях питания всё нормально, без ошибок. Питание 3,3 вольт, Включен встроеный супервизор питания на 2.9В Вывод ресет висит в воздухе. Подскажите что это может быть ?
|
|
|
|
|
Nov 18 2008, 23:45
|
Профессионал
    
Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960

|
Цитата(west329_ @ Nov 19 2008, 00:05)  Странная зависимость обнаружилась, при работе устройства. В памяти хранятся базовые настройки системы, перед их использованием проверяется их crc. Замечен сбой crc когда когда устройство полежит без работы сутки  . При частых включених и выключениях питания всё нормально, без ошибок. Питание 3,3 вольт, Включен встроеный супервизор питания на 2.9В Вывод ресет висит в воздухе. Подскажите что это может быть ? Попробуйте не использовать нулевой адрес в EEPROM
|
|
|
|
|
Nov 19 2008, 07:37
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 17-02-08
Пользователь №: 35 137

|
Цитата(west329_ @ Nov 19 2008, 00:05)  Вывод ресет висит в воздухе. Почему?
|
|
|
|
|
Nov 19 2008, 07:47
|

Местный
  
Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423

|
Цитата(espectro @ Nov 19 2008, 11:37)  Почему? А куда его деть  ? отломить  Изредка для прошивки используем и всё. Можем для опыта подтянуть его к + через 10к.
Сообщение отредактировал west329_ - Nov 19 2008, 07:48
|
|
|
|
|
Nov 19 2008, 11:03
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 17-02-08
Пользователь №: 35 137

|
Цитата(west329_ @ Nov 19 2008, 10:47)  А куда его деть  ? отломить  Можем для опыта подтянуть его к + через 10к. Для опыта?) Я думал, что подтягивать ресет на + питания - это хороший тон
|
|
|
|
|
Nov 20 2008, 00:31
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(espectro @ Nov 19 2008, 13:03)  Для опыта?) Я думал, что подтягивать ресет на + питания - это хороший тон  Но только не через резистор, т.к. резет и так подтянут к питанию через внутренний pull-up. Если хотите подтянуть то надо цеплять пин непосредственно к VCC. Цитата И еще конденсатор 0,1мк на землю чтоб помехи лишние не ловил. Больше помех наведется на дорожки которые неизбежно появятся если применить оба перечисленных совета - довесить резистор и кондер. Не надо ничего к резету цеплять, он самодостаточен по крайней мере в m162. В крайнем случае если Вас разражает висение этого пина в воздухе - прицепите его к Vcc. Или вам нравится иметь букет резет флагов? POR/BOD/EXT в одном флаконе? Цитата А куда его деть оставьте висеть. eeprom все равно падает не из-за этого. Возможно он падает из-за BOD 2.9V такого в m162 просто нет. Для того чтобы более точно сказать что может быть - попробуйте хранить две копии конфигурации, и проинформируйте нас слетают ли обе или только одна, если одна то какая?
|
|
|
|
|
Nov 20 2008, 02:18
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Хочу поделиться аналогичным случаем. Вчера обнаружил, что мое устройство "теряет" данные в EEPROM, если девайс выключить на некоторое время. Если прибор не выключать, то при загрузке данных нет никаких проблем. Что самое интересное, данные, которые загружались всегда были правильными, независимо от состояния CRC8. Меня очень сильно насторожил сей факт, как так, данные визуально в порядке, а CRC показывает сбой? В итоге выяснилась неприятная ошибка в реализации расчета CRC: контрольная сумма считается табличным методом. crc8Table - массив коэффициентов, используемый при расчете, хранится во FLASH. Чтобы считать данные, мы должны применить такую конструкцию Код *crc8 = pgm_read_byte(crc8Table + (*crc8 ^ byte)); Я же, по ошибке, написал это Код *crc8 = crc8Table[*crc8 ^ byte]; Естественно, при расчете программа читала данные не из постоянной неизменяемой FLASH, а из SRAM, где данные рандомны. Таким образом, при постоянно включенном питании данные в той области SRAM, откуда читались коэффициенты были постоянны (ну так, видимо получилось), а при выключении с последующим включением, данные были другими, соответсвенно CRC8 считалась по новым коэффициетам и не совпадала с записанной. Вот и получалось, что после выключения прибор терял настройки. На самом деле причина была в совершенно другом месте, а не в BOD, EEPROM и тп. Вот так вот...
--------------------
Выбор.
|
|
|
|
|
Nov 20 2008, 06:22
|

Местный
  
Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423

|
Цитата(defunct @ Nov 20 2008, 04:31)  eeprom все равно падает не из-за этого. Возможно он падает из-за BOD 2.9V такого в m162 просто нет. Нащёт BOD 2.9V нашол в даташите, возможно я ошибаюсь. Похоже причину нашли, но пока небуду утверждать на 100%, но проблема пропала. Какая ситуация была, изначально во время отладки всего устройства после ресета выводилась служебная информация (мы никак немогли понять почему первые пару символов отображались крякозябрамы, хотя система высела на кварце), только потом проводился контроль срс, проблем с еепром небыло. В финальной версии вывод служебной информации, был убран как мы поняли это в своём роде была небольшая задержка, подставил програмную задержку и всё стало нормально. Как я понял что это связано с питанием во время включения, и чтением сразу с еепрома. Все клонится в сторону применения внешнего визора питания.
Эскизы прикрепленных изображений
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|