|
Дивайс на mega162., Сбои в работе. Нужен совет. |
|
|
|
Jul 23 2010, 06:01
|
Участник

Группа: Свой
Сообщений: 58
Регистрация: 1-08-05
Пользователь №: 7 242

|
Доброе время суток, уважаемые коллеги.
Есть девайс на меге162+ОЗУ 32кБ. Плата двухслойная. Длина линий шины адреса/данных - 40-50 мм. Разводка неплохая, с обеих сторон свободное место залито полигонами. Тактируется кварцем 16 МГц. Питание 5В подается через тонкий 7 см шлейфик вместе с SPI интерфейсом от головного устройства. Питание на головном устройстве сделано на MC33063.
Проблема такая: иногда на некоторых редких объектах происходит зависание меги162. Также иногда на ней же портятся данные во внутренней ЕЕПРОМ и памяти программ. Встроенные BOD и WDT задействованы. Внешних нет.
Я думаю, что память программ может портиться из за того, что программа перепрыгивает непостижимым образом в область загрузчика, где есть ф-ции работы с SPM. Однако ж там перед программирование проверяются CRC и т.п. Но не смотря на это данные портятся. Иногда даже загрузчик портит сам себя. Грешу на не очень удачную разводку линий тактирования от кварца: длина проводников 2-3 см, с переходом на нижний слой и обратно, кондеры расположены рядом с кварцем - довольно далеко от проца.
Из решений пока только приходит работа от внутреннего RC-генератора... Дело осложняется тем, что в условиях лаборатории этих проблем выявить не удалось.. как только не гоняли. Испытания в лаборатории импульсных помех тоже результата не дали. Поэтому действовать приходится практически наугад.
Может, кто то выскажет свои соображения, пути решения?
|
|
|
|
|
Jul 23 2010, 06:41
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(eastwind @ Jul 23 2010, 10:01)  Может, кто то выскажет свои соображения, пути решения? Теоретически эту проблему никто вам не решит. Нужна "отладочная печать" - махание ножками в ключевых местах программы и наблюдение за ними осциллографом. При зависании можно оценить где выполнялась программа, а затем постепенно суживать место поиска. Это может происходить не только при аппаратном сбое, но и например при выходе из main, при возникновении прерывания, которое в программе не обрабатывается. Правда, я не совсем понимаю, как может зависать программа если в ней работает WDT.
Сообщение отредактировал 777777 - Jul 23 2010, 06:41
|
|
|
|
|
Jul 23 2010, 07:45
|
Участник

Группа: Свой
Сообщений: 58
Регистрация: 1-08-05
Пользователь №: 7 242

|
Цитата(777777 @ Jul 23 2010, 12:41)  При зависании можно оценить где выполнялась программа, а затем постепенно суживать место поиска. Это может происходить не только при аппаратном сбое, но и например при выходе из main, при возникновении прерывания, которое в программе не обрабатывается. Правда, я не совсем понимаю, как может зависать программа если в ней работает WDT. Нет необрабатываемых прерываний. Программа рабочая. На многих объектах модули стоят месяцами и проблем нет. Ошибки на "проблемных" объектах возникают совершенно хаотично и систематизировать их не получается. Поэтому и начал думать в сторону питания/тактирования. Цитата(Палыч @ Jul 23 2010, 13:21)  Возможно - проблемы с питанием. Встречалась ситуация когда при включении питания устройства слетала прошивка. Оказалось, что источник питания при своём включении давал короткий но приличный по амплитуде импульс повышенного напряжения. Flash этого очень не любит - при напряжении питания выше 6,2V (по памяти, может быть - 6,3) прошивка и EEPROM слетают начисто (стираются), если импульс короткий или меньшей амплитуды - стираются отдельные куски или даже биты... Как решали проблему?
|
|
|
|
|
Jul 23 2010, 08:34
|
Местный
  
Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541

|
Цитата(eastwind @ Jul 23 2010, 10:45)  Нет необрабатываемых прерываний. Программа рабочая. На многих объектах модули стоят месяцами и проблем нет. Ошибки на "проблемных" объектах возникают совершенно хаотично и систематизировать их не получается. Поэтому и начал думать в сторону питания/тактирования.
Как решали проблему? Как дела с фильтрующими кондерами по питанию ? Какое напряжения питания ? как вариант сменить бутлоадер или вообще от него отказаться.
|
|
|
|
|
Jul 23 2010, 09:43
|
Участник

Группа: Свой
Сообщений: 58
Регистрация: 1-08-05
Пользователь №: 7 242

|
Цитата(777777 @ Jul 23 2010, 14:27)  Я имел в виду, что не используемые прерывания могли оказаться каким-то образом разрешенными. Я понял, что вы хотели сказать. Я и имел ввиду, что разрешенных необрабатываемых прерываний нет. Цитата(Клим @ Jul 23 2010, 14:34)  Как дела с фильтрующими кондерами по питанию ? Какое напряжения питания ? как вариант сменить бутлоадер или вообще от него отказаться. Фильрующие кондеры стоят на всех трех ногах контроллера. Очень близко к выводам. Напряжение питания указал в первом посте. 5В. Пробовали отказаться от бутлоадера. Проблема перетирания флэши пропала, но все остальные симптомы остались: ЕЕПРОМ портится, проц виснет, улетает непонятно куда.
|
|
|
|
|
Jul 23 2010, 18:49
|
Частый гость
 
Группа: Участник
Сообщений: 96
Регистрация: 27-06-08
Из: Москва
Пользователь №: 38 581

|
Попробуйте поставить внешний супервизор, отключив встроенный, генератор при этом оставить как есть. Если писали на ассемблере и включен WDT создайте в самом конце программы что то типа: Код nop nop ;конец не используемой области error: nop jmp error
Сообщение отредактировал rtfcnf - Jul 23 2010, 18:58
|
|
|
|
|
Jul 24 2010, 14:32
|
Участник

Группа: Свой
Сообщений: 58
Регистрация: 1-08-05
Пользователь №: 7 242

|
Цитата(zombi @ Jul 23 2010, 21:51)  А есть электролитик по питанию? сразу после "тонкий 7 см шлейфик" ? нет, после шлейфа стоит тантал. электролита нет. Цитата(andrewkrot @ Jul 23 2010, 22:55)  А чем занимается Ваша плата? На ней нет реле или иных реактивных элементов? нету ничего такого
|
|
|
|
|
Jul 24 2010, 20:31
|

Частый гость
 
Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966

|
Цитата(eastwind @ Jul 23 2010, 13:43)  ...ЕЕПРОМ портится, проц виснет, улетает непонятно куда. У коллеги слетала ЕЕПРОМ (первые несколько адресов) когда он начинал "счелкать" питанием платы (даж сделал девайс для этого  ) - решилось все включением внутреннего BODa..ну и кондеры "побольше", вроде, поставил... Простите, пропустил про уже включенный BOD
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|