реклама на сайте
подробности

 
 
> Дивайс на mega162., Сбои в работе. Нужен совет.
eastwind
сообщение Jul 23 2010, 06:01
Сообщение #1


Участник
*

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



Доброе время суток, уважаемые коллеги.

Есть девайс на меге162+ОЗУ 32кБ. Плата двухслойная. Длина линий шины адреса/данных - 40-50 мм. Разводка неплохая, с обеих сторон свободное место залито полигонами.
Тактируется кварцем 16 МГц. Питание 5В подается через тонкий 7 см шлейфик вместе с SPI интерфейсом от головного устройства.
Питание на головном устройстве сделано на MC33063.

Проблема такая: иногда на некоторых редких объектах происходит зависание меги162.
Также иногда на ней же портятся данные во внутренней ЕЕПРОМ и памяти программ.
Встроенные BOD и WDT задействованы. Внешних нет.

Я думаю, что память программ может портиться из за того, что программа перепрыгивает непостижимым образом в область загрузчика, где есть ф-ции работы с SPM. Однако ж там перед программирование проверяются CRC и т.п. Но не смотря на это данные портятся. Иногда даже загрузчик портит сам себя.
Грешу на не очень удачную разводку линий тактирования от кварца: длина проводников 2-3 см, с переходом на нижний слой и обратно, кондеры расположены рядом с кварцем - довольно далеко от проца.

Из решений пока только приходит работа от внутреннего RC-генератора...
Дело осложняется тем, что в условиях лаборатории этих проблем выявить не удалось.. как только не гоняли. Испытания в лаборатории импульсных помех тоже результата не дали.
Поэтому действовать приходится практически наугад.

Может, кто то выскажет свои соображения, пути решения?
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 18)
777777
сообщение Jul 23 2010, 06:41
Сообщение #2


Профессионал
*****

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



Цитата(eastwind @ Jul 23 2010, 10:01) *
Может, кто то выскажет свои соображения, пути решения?

Теоретически эту проблему никто вам не решит. Нужна "отладочная печать" - махание ножками в ключевых местах программы и наблюдение за ними осциллографом. При зависании можно оценить где выполнялась программа, а затем постепенно суживать место поиска. Это может происходить не только при аппаратном сбое, но и например при выходе из main, при возникновении прерывания, которое в программе не обрабатывается. Правда, я не совсем понимаю, как может зависать программа если в ней работает WDT.

Сообщение отредактировал 777777 - Jul 23 2010, 06:41
Go to the top of the page
 
+Quote Post
Savrik
сообщение Jul 23 2010, 06:58
Сообщение #3


наблюдаю..
***

Группа: Свой
Сообщений: 291
Регистрация: 11-12-06
Из: Украина
Пользователь №: 23 369



Ставте "ловушки" - и по питанию, и по сигналам. Поставте еще одно устройство, пусть МК туда пишет лог. Желательно все это синхронизировать.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 23 2010, 07:21
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(eastwind @ Jul 23 2010, 10:01) *
Также иногда на ней же портятся данные во внутренней ЕЕПРОМ и памяти программ.
Возможно - проблемы с питанием.
Встречалась ситуация когда при включении питания устройства слетала прошивка. Оказалось, что источник питания при своём включении давал короткий но приличный по амплитуде импульс повышенного напряжения. Flash этого очень не любит - при напряжении питания выше 6,2V (по памяти, может быть - 6,3) прошивка и EEPROM слетают начисто (стираются), если импульс короткий или меньшей амплитуды - стираются отдельные куски или даже биты...
Go to the top of the page
 
+Quote Post
eastwind
сообщение Jul 23 2010, 07:45
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 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 слетают начисто (стираются), если импульс короткий или меньшей амплитуды - стираются отдельные куски или даже биты...

Как решали проблему?
Go to the top of the page
 
+Quote Post
Savrik
сообщение Jul 23 2010, 08:06
Сообщение #6


наблюдаю..
***

Группа: Свой
Сообщений: 291
Регистрация: 11-12-06
Из: Украина
Пользователь №: 23 369



Ну всплеск можно ограничить любыми средствами, самые простые - стабилитрон на 5,6В, TL431+транзистор, варистор, трансиль..
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 23 2010, 08:09
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(eastwind @ Jul 23 2010, 11:45) *
Как решали проблему?
Поскольку импульс повышенного напряжения блок питания давал сразу после подачи на него 220В, решение нашлось простое: низкое напряжение с БП потребителям раздавалось с некоторой, большей по времени чем импульс задержкой после подключения к сети 220.
Go to the top of the page
 
+Quote Post
777777
сообщение Jul 23 2010, 08:27
Сообщение #8


Профессионал
*****

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



Цитата(eastwind @ Jul 23 2010, 11:45) *
Нет необрабатываемых прерываний.

Как? Неужели в системе используются все без исключения прерывания? smile.gif
Я имел в виду, что не используемые прерывания могли оказаться каким-то образом разрешенными.
Go to the top of the page
 
+Quote Post
Клим
сообщение Jul 23 2010, 08:34
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541



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


Как решали проблему?

Как дела с фильтрующими кондерами по питанию ?
Какое напряжения питания ?
как вариант сменить бутлоадер или вообще от него отказаться.
Go to the top of the page
 
+Quote Post
eastwind
сообщение Jul 23 2010, 09:43
Сообщение #10


Участник
*

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



Цитата(777777 @ Jul 23 2010, 14:27) *
Я имел в виду, что не используемые прерывания могли оказаться каким-то образом разрешенными.

Я понял, что вы хотели сказать.
Я и имел ввиду, что разрешенных необрабатываемых прерываний нет.

Цитата(Клим @ Jul 23 2010, 14:34) *
Как дела с фильтрующими кондерами по питанию ?
Какое напряжения питания ?
как вариант сменить бутлоадер или вообще от него отказаться.


Фильрующие кондеры стоят на всех трех ногах контроллера. Очень близко к выводам.
Напряжение питания указал в первом посте. 5В.
Пробовали отказаться от бутлоадера. Проблема перетирания флэши пропала, но все остальные симптомы остались: ЕЕПРОМ портится, проц виснет, улетает непонятно куда.
Go to the top of the page
 
+Quote Post
zombi
сообщение Jul 23 2010, 15:51
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



А есть электролитик по питанию? сразу после "тонкий 7 см шлейфик" ?

Может это мои предрассудки но я с некоторых пор во всех изделиях стараюсь использовать ТОЛЬКО ВНЕШНИЕ ГЕНЕРАТОРЫ
Go to the top of the page
 
+Quote Post
andrewkrot
сообщение Jul 23 2010, 16:55
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 306
Регистрация: 11-11-04
Из: Москва
Пользователь №: 1 106



А чем занимается Ваша плата? На ней нет реле или иных реактивных элементов?
Go to the top of the page
 
+Quote Post
rtfcnf
сообщение Jul 23 2010, 18:49
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 96
Регистрация: 27-06-08
Из: Москва
Пользователь №: 38 581



Попробуйте поставить внешний супервизор, отключив встроенный, генератор при этом оставить как есть. Если писали на ассемблере и включен WDT создайте в самом конце программы что то типа:
Код
        nop
        nop
;конец не используемой области
error:
        nop
        jmp error



Сообщение отредактировал rtfcnf - Jul 23 2010, 18:58
Go to the top of the page
 
+Quote Post
eastwind
сообщение Jul 24 2010, 14:32
Сообщение #14


Участник
*

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



Цитата(zombi @ Jul 23 2010, 21:51) *
А есть электролитик по питанию? сразу после "тонкий 7 см шлейфик" ?

нет, после шлейфа стоит тантал. электролита нет.

Цитата(andrewkrot @ Jul 23 2010, 22:55) *
А чем занимается Ваша плата? На ней нет реле или иных реактивных элементов?

нету ничего такого
Go to the top of the page
 
+Quote Post
kosyak©
сообщение Jul 24 2010, 20:31
Сообщение #15


Частый гость
**

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



Цитата(eastwind @ Jul 23 2010, 13:43) *
...ЕЕПРОМ портится, проц виснет, улетает непонятно куда.

У коллеги слетала ЕЕПРОМ (первые несколько адресов) когда он начинал "счелкать" питанием платы (даж сделал девайс для этого smile.gif ) - решилось все включением внутреннего BODa..ну и кондеры "побольше", вроде, поставил...


Простите, пропустил про уже включенный BOD cranky.gif
Go to the top of the page
 
+Quote Post
Dx!
сообщение Jul 25 2010, 15:21
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 108
Регистрация: 6-02-09
Из: Новочеркасск
Пользователь №: 44 469



Цитата(eastwind @ Jul 24 2010, 18:32) *
нет, после шлейфа стоит тантал. электролита нет.

Тантал тоже электролит. Аки и любой другой полярный конденсатор.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 30 2010, 01:37
Сообщение #17


кекс
******

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



Очень сомневаюсь, что дело в МК и тем более тактировании или разводке...

Программа в MK наверняка использует ICALL / IJMP, данные для которых берутся из внешней памяти, а внешняя память неподконтрольна BOD'у, отсюда и выполнение случайного кода...

Риторический вопрос:
Сохраняет ли достоверность и работоспособность внешняя память и защелка во всем диапазоне напряжений от Vbod и до номинального VCC?

Советы:
1. Поместить стек и по возможности все критические структуры данных, содержащие адреса callback'ов, во внутреннюю память МК.
2. Поставить порог Vbod самый большой из возможных (4.3V).
3. Экранировать плату на объекте (использовать металлические корпуса).
4. Для защиты секции бутлоадера использовать соответвующую комбинацию BLB LOCK битов, которая просто непозволит туда писать. (это работает 100%).
5. Для защиты eeprom пользовать его исключительно как storage device, применить дублирование и CRC при записи, и восстановление битой копии при чтении.


PS: Из своей практики, имел дело с серийным устройством m162 +32kb с совершенно дебильной разводкой, так вот с примененными выше советами - из пары сотен таких девайсов (а работают они на подстанциях 10-36КВ), ни один не слетел за последние 5 лет. Бутлоадер в них есть, если BOD отключить флеш слетает моментально - достаточно пару раз выключить и включить.
Go to the top of the page
 
+Quote Post
eastwind
сообщение Aug 1 2010, 07:47
Сообщение #18


Участник
*

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



1. Поставил на проблемном объекте внешние супервизоры на 4,6В, отключил встроенный.
2. Поставил на разъем питания стабилитрон на 5.1 В.
3. Увеличил емкости конденсаторов на плате.
4. Данные в ЕЕПРОМ сделал с резервированием.
5. RSTACK и CSTACK и так были расположены во внутренней памяти контроллера.

Ждем... Обязательно сообщу результат на форуме.
Большое спасибо всем, кто участвует в обсуждении.
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Aug 4 2010, 16:37
Сообщение #19


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



ИМХО ключево слово - spi интерфейс идет шлейфиком...
в идеале гальвано развязку уделать если нет возможности, есть
ещё 1 дополнительный контр прием:
повесте на ваши проводки (даже не длинные) ферритовое колечко
проницаемостью чем ниже, тем лучше например 400нм


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 23:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01528 секунд с 7
ELECTRONIX ©2004-2016