|
msp430f2254. Зависание и выполнение произвольного куска кода в условиях помех |
|
|
|
Jun 24 2016, 12:03
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 2-10-05
Пользователь №: 9 146

|
Доброго времени суток! Столкнулся со следующей проблемой. Есть автономное устройство, собранное на msp430f2254. Внешний WatchDog на устройстве отсутствует (сэкономили  ). Питание аккумуляторное. От заказчика стали приходить претензии: зависает (лечится только переключением питания). Экспериментально было определено, что проблема в кварце (12 МГц). Но вопрос не в этом. Во время экспериментов я определил, что тыкая какой-нибудь железкой в ножки кварца на раз получаем такое зависание, а иногда (довольно часто) пыполнения кода программы, отвественного за стирания внутреннего программного Flash с понятным результатом. MCLK от кварца. Если MCLK сделать от DCO проблема исчезает. Кто-нибудь сталкивался таким? Как решили?
|
|
|
|
|
Jun 24 2016, 12:49
|
Местный
  
Группа: Участник
Сообщений: 326
Регистрация: 30-05-06
Пользователь №: 17 602

|
Цитата(emark @ Jun 24 2016, 15:03)  Как решили? Установкой драйвера руки.сис
|
|
|
|
|
Jun 24 2016, 13:35
|

Знающий
   
Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663

|
Цитата(emark @ Jun 24 2016, 16:03)  Доброго времени суток! Столкнулся со следующей проблемой. Есть автономное устройство, собранное на msp430f2254. Внешний WatchDog на устройстве отсутствует (сэкономили  ). Питание аккумуляторное. От заказчика стали приходить претензии: зависает (лечится только переключением питания). Экспериментально было определено, что проблема в кварце (12 МГц). Но вопрос не в этом. Во время экспериментов я определил, что тыкая какой-нибудь железкой в ножки кварца на раз получаем такое зависание, а иногда (довольно часто) пыполнения кода программы, отвественного за стирания внутреннего программного Flash с понятным результатом. MCLK от кварца. Если MCLK сделать от DCO проблема исчезает. Кто-нибудь сталкивался таким? Как решили? Тыкать "…какой-нибудь железкой в ножки кварца…" не надо, он не для этого. Теоретически, если касанием XOUT колебания может и не будут сорваны, то касанием XIN - наверняка. Рекомендации самые простые: дорожки до кварца как можно кроче, нагрузочные ёмкости должны соответствовать параметрам кварца, под кварцем только малосигнальная земля (ни какой сильноточной). Аппаратный контроль за тактированием в MSP430 весьма развитый, отладчиком можно получить всё что нужно.
Сообщение отредактировал Obam - Jun 24 2016, 13:38
--------------------
Пролетарий умственного труда.
|
|
|
|
|
Jun 24 2016, 13:52
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 2-10-05
Пользователь №: 9 146

|
Цитата(mcheb @ Jun 24 2016, 17:49)  Установкой драйвера руки.сис Конкретней... a то у меня libastral не установлена тоже...
Сообщение отредактировал emark - Jun 24 2016, 14:12
|
|
|
|
|
Jun 24 2016, 14:09
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 2-10-05
Пользователь №: 9 146

|
Цитата(Obam @ Jun 24 2016, 18:35)  Тыкать "…какой-нибудь железкой в ножки кварца…" не надо, он не для этого. Теоретически, если касанием XOUT колебания может и не будут сорваны, то касанием XIN - наверняка. Рекомендации самые простые: дорожки до кварца как можно кроче, нагрузочные ёмкости должны соответствовать параметрам кварца, под кварцем только малосигнальная земля (ни какой сильноточной). Аппаратный контроль за тактированием в MSP430 весьма развитый, отладчиком можно получить всё что нужно. Тыча, я имитировал помеху. Результат был очень похожий. Меня смущает другое, возможность (и даже легкость), с которой можно MSP заставить выполнять произвольный кусок кода в прошивке. Обработка прерывания от сбоев генератора мне не помогла. Цитата(Obam @ Jun 24 2016, 18:35)  Аппаратный контроль за тактированием в MSP430 весьма развитый, отладчиком можно получить всё что нужно. ммм... про отладчик поподробнее. У меня JTAG отладчик сразу виснет, если я подобными издевательствами занимаюсь. Цитата(iosifk @ Jun 24 2016, 18:57)  И уж если переразвести не удается, то можно сделать экраны из фольги и прикрыть ими от помех... Мы этим и занимаемся (поскольку полностью от кварца отказаться не можем) + перевод MCLK на DCO
Сообщение отредактировал emark - Jun 24 2016, 13:59
|
|
|
|
|
Jun 26 2016, 16:13
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 2-10-05
Пользователь №: 9 146

|
Цитата(k155la3 @ Jun 26 2016, 19:10)  Проверьте, не открыт ли какойнить флаг прерывания, не обеспеченный вектором. Рекомендую на все вектора поставить обработчики-"пустышки". NMI - если есть. Для отлова демона можете в каждую пустышку поставить контрольную точку и помучить девайс. --- Смена режима тактирования. Вы устраните последствия а причина останется неизвестной. Проверьте также осцилографом цепь питания на предмет выбросов и провалов.
ps - постарайтесь найти режим когда сбой-глюк устойчив. Другим методом, а не "кварцевым" - сделайте "тест-проект", который будет отличаться от основного только тем, что на свободный пин будет P1OUT ^= 0x01. Его мониторить осцилографом.
Нахрена все это ? Возможно, в девайсе зависает LCD например (что ажбегом возможно если I2C и топорный софт-драйвер). Эти все этапы я уже проделал. Собрали установку генерации ЭМИ (из латора и прерывателя), с помощью которого и нашли слабое место нашего изделия (кварц), путем последовательного экранирования частей платы. Просто потом я нашел более простой путь - непосредственного воздействия металическим предметом на ножки кварца. Еще раз повторю, меня сильно смущает что сбивая тактовый генератор (пусть варварскими методами), можно запустить произвольный кусок кода прошивки. Раньше на MSP я с таким не сталкивался. С зависанием худо-бедно справится внешний watchdog, а вот с исполнением произвольного куска кода...
|
|
|
|
|
Jun 27 2016, 06:30
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(emark @ Jun 24 2016, 15:03)  ... тыкая какой-нибудь железкой в ножки кварца на раз получаем такое зависание, а иногда (довольно часто) пыполнения кода программы, отвественного за стирания внутреннего программного Flash с понятным результатом. MCLK от кварца. Если MCLK сделать от DCO проблема исчезает. Кто-нибудь сталкивался таким? Как решили? Было 1-в-1 как у вас, включая самопроизвольное стирание флэш. Перешел на тактирование от dco с периодической подстройкой по кварцу. По другому не лечится: в msp кварцевый генератор малопотребляющий, амплитуда на кварце мизерная он сбивается от малейшего чиха. Сам процессор однотактный а они капризны в отношении тактирования. Так что на экранирование и переразводку можете даже не тратить время - не поможет. При работе от dco msp очень устойчив. Цитата(jcxz) Этим Вы не помеху симитировали. В нормально разведённом устройстве помеха не должна туда попадать. Имхо - таким образом можно почти любой МК "заставить выполнять произвольный кусок кода в прошивке". Так как сбиваете тактирование, следовательно портится например выбираемый в данный момент код на произвольный. Помеха всегда попадает потому что идеальной защиты от помех не бывает. Вопрос в степени ослаблении помехи и чувствительности входов МК. Попробуйте сбить старый 4-х тактовый pic16 или классический 12-тактовый mcs-51 (cmos версию). Они "тыкание" в кварц вообще не замечают. Если кварц закоротить останавливаются, раскоротишь продолжают работать с того же места.
|
|
|
|
|
Jun 27 2016, 07:19
|

Знающий
   
Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663

|
Цитата(emark @ Jun 24 2016, 18:09)  ммм... про отладчик поподробнее. У меня JTAG отладчик сразу виснет, если я подобными издевательствами занимаюсь. Подробнее чем в SLAU144J гл.5 не будет, а я так понимаю с нею вы знакомы. Странно, почему вам не удаётся обслужить OFIFG. Опять же п. 5.2.7: "If a fault is detected for the crystal oscillator sourcing the MCLK, the MCLK is automatically switched to the DCO for its clock source. This does not change the SELMx bit settings. This condition must be handled by user software." - на этот пункт эрраты часом нет? Если вы действительно имитируете тяжёлую помеховую обстановку, то JTAG законно отваливается. Кстати выдежка из DS ни чем не поможет? [attachment=101469:Tbl.png]
--------------------
Пролетарий умственного труда.
|
|
|
|
|
Jun 27 2016, 08:01
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Цитата(emark @ Jun 26 2016, 19:13)  Эти все этапы я уже проделал. . . . . Еще раз повторю, меня сильно смущает что сбивая тактовый генератор (пусть варварскими методами), можно запустить произвольный кусок кода прошивки. Раньше на MSP я с таким не сталкивался. С зависанием худо-бедно справится внешний watchdog, а вот с исполнением произвольного куска кода... Чтобы я делал, IMHO - если есть возможность - задать внешнее "неубиваемо-гарантированое" тактирование и проверить гипотенузу что вылет из-за слета тактирования (или помехи на тактовый вход) - для ВЧ тактирования должен отрабатывать флаг неисправности генератора. и даже если тактирование вообще нет - процессор должен переключаться на VLO (по F22XX семейству точно не знаю) - проверить тип кварца, его "глючность" (контафакт), обвеску-емкости / настройку генератора. Рекомендации по типовой схеме включения из даташита на кварц. Мне попадались глючные 32768. - проверить как девайс реагирует на ВЧ импульсную помеху (смс на рядом лежащий мобильник). Эсли слетатет - экранировать - фильтровать. итд в томже стиле  Цитата(Obam @ Jun 27 2016, 10:19)  ... Странно, почему вам не удаётся обслужить OFIFG. ... Демонов изгонять выкуривая slaz167j.pdf, искать литерал "OFIFG"
Сообщение отредактировал k155la3 - Jun 27 2016, 08:40
|
|
|
|
|
Jun 27 2016, 08:23
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(emark @ Jun 24 2016, 15:03)  Кто-нибудь сталкивался таким? Как решили? Да, бывают такие случаи. Тогда надо сделать так чтобы микроконтроллер не становился антенным противовесом. Т.е. надо создать искусственный противовес рядом с кварцем, это может быть USB кабель, оплетка какого-нибудь экранированного интерфейсного кабеля, например CAN или плейн большой площади. Тогда можете тыкать отверткой прямо в ноги кварца и ничего не произойдёт.
|
|
|
|
|
Jun 27 2016, 08:26
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(_3m @ Jun 27 2016, 09:30)  Помеха всегда попадает потому что идеальной защиты от помех не бывает. Вопрос в степени ослаблении помехи и чувствительности входов МК. Попробуйте сбить старый 4-х тактовый pic16 или классический 12-тактовый mcs-51 (cmos версию). Они "тыкание" в кварц вообще не замечают. Если кварц закоротить останавливаются, раскоротишь продолжают работать с того же места. Когда-то давно нам в Элтех клиент прислал результаты опытов. Он пьезо-поджигалкой для газа тестировал разные стартовые наборы микроконтроллеров. так вот, меги сбивались, а НЕКовские - нет. Поищите статью, автор Горюнов... А вывод такой. Все микроконтроллеры сделаны для разного применения. Если Вы хотите применить в "промышленности" микроконтроллер, сделанный для "бытовухи", то имеете то, что имеете. Выбирайте микроконтроллер сделанный для "автопрома". Там уровень помех значительно выше и МК сразу делали менее к ним чувствительными... А "сегодня" - экраны, развязки земель по входу и по выходу, фильтрация питания...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jun 27 2016, 08:28
|

Знающий
   
Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663

|
Цитата(k155la3 @ Jun 27 2016, 12:01)  Цитата (Obam @ Jun 27 2016, 10:19) * Демонов изгонять выкуривая slaz167j.pdf, искать литерал "OFIFG" sm.gif Эт когда это я такое писал?
--------------------
Пролетарий умственного труда.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|