Перейти к содержанию
    

msp430f2254. Зависание и выполнение произвольного куска кода в условиях помех

Доброго времени суток!

 

Столкнулся со следующей проблемой. Есть автономное устройство, собранное на msp430f2254. Внешний WatchDog на устройстве отсутствует (сэкономили :)). Питание аккумуляторное. От заказчика стали приходить претензии: зависает (лечится только переключением питания). Экспериментально было определено, что проблема в кварце (12 МГц). Но вопрос не в этом. Во время экспериментов я определил, что тыкая какой-нибудь железкой в ножки кварца на раз получаем такое зависание, а иногда (довольно часто) пыполнения кода программы, отвественного за стирания внутреннего программного Flash с понятным результатом. MCLK от кварца. Если MCLK сделать от DCO проблема исчезает.

 

Кто-нибудь сталкивался таким? Как решили?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени суток!

 

Столкнулся со следующей проблемой. Есть автономное устройство, собранное на msp430f2254. Внешний WatchDog на устройстве отсутствует (сэкономили :)). Питание аккумуляторное. От заказчика стали приходить претензии: зависает (лечится только переключением питания). Экспериментально было определено, что проблема в кварце (12 МГц). Но вопрос не в этом. Во время экспериментов я определил, что тыкая какой-нибудь железкой в ножки кварца на раз получаем такое зависание, а иногда (довольно часто) пыполнения кода программы, отвественного за стирания внутреннего программного Flash с понятным результатом. MCLK от кварца. Если MCLK сделать от DCO проблема исчезает.

 

Кто-нибудь сталкивался таким? Как решили?

 

Тыкать "…какой-нибудь железкой в ножки кварца…" не надо, он не для этого. Теоретически, если касанием XOUT колебания может и не будут сорваны, то касанием XIN - наверняка.

Рекомендации самые простые: дорожки до кварца как можно кроче, нагрузочные ёмкости должны соответствовать параметрам кварца, под кварцем только малосигнальная земля (ни какой сильноточной).

Аппаратный контроль за тактированием в MSP430 весьма развитый, отладчиком можно получить всё что нужно.

Изменено пользователем Obam

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Установкой драйвера руки.сис

 

Конкретней... a то у меня libastral не установлена тоже...

Изменено пользователем emark

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тыкать "…какой-нибудь железкой в ножки кварца…" не надо, он не для этого. Теоретически, если касанием XOUT колебания может и не будут сорваны, то касанием XIN - наверняка.

Рекомендации самые простые: дорожки до кварца как можно кроче, нагрузочные ёмкости должны соответствовать параметрам кварца, под кварцем только малосигнальная земля (ни какой сильноточной).

И уж если переразвести не удается, то можно сделать экраны из фольги и прикрыть ими от помех...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тыкать "…какой-нибудь железкой в ножки кварца…" не надо, он не для этого. Теоретически, если касанием XOUT колебания может и не будут сорваны, то касанием XIN - наверняка.

Рекомендации самые простые: дорожки до кварца как можно кроче, нагрузочные ёмкости должны соответствовать параметрам кварца, под кварцем только малосигнальная земля (ни какой сильноточной).

Аппаратный контроль за тактированием в MSP430 весьма развитый, отладчиком можно получить всё что нужно.

 

Тыча, я имитировал помеху. Результат был очень похожий.

 

Меня смущает другое, возможность (и даже легкость), с которой можно MSP заставить выполнять произвольный кусок кода в прошивке. Обработка прерывания от сбоев генератора мне не помогла.

 

Аппаратный контроль за тактированием в MSP430 весьма развитый, отладчиком можно получить всё что нужно.

ммм... про отладчик поподробнее. У меня JTAG отладчик сразу виснет, если я подобными издевательствами занимаюсь.

 

И уж если переразвести не удается, то можно сделать экраны из фольги и прикрыть ими от помех...

 

Мы этим и занимаемся (поскольку полностью от кварца отказаться не можем) + перевод MCLK на DCO

Изменено пользователем emark

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверьте, не открыт ли какойнить флаг прерывания, не обеспеченный вектором.

Рекомендую на все вектора поставить обработчики-"пустышки". NMI - если есть.

Для отлова демона можете в каждую пустышку поставить

контрольную точку и помучить девайс.

---

Смена режима тактирования. Вы устраните последствия а причина останется неизвестной.

Проверьте также осцилографом цепь питания на предмет выбросов и провалов.

 

 

ps

- постарайтесь найти режим когда сбой-глюк устойчив. Другим методом, а не "кварцевым"

- сделайте "тест-проект", который будет отличаться от основного только тем, что на свободный

пин будет P1OUT ^= 0x01. Его мониторить осцилографом.

 

Нахрена все это ?

Возможно, в девайсе зависает LCD например (что ажбегом возможно если I2C и топорный софт-драйвер).

 

 

 

Изменено пользователем k155la3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверьте, не открыт ли какойнить флаг прерывания, не обеспеченный вектором.

Рекомендую на все вектора поставить обработчики-"пустышки". NMI - если есть.

Для отлова демона можете в каждую пустышку поставить

контрольную точку и помучить девайс.

---

Смена режима тактирования. Вы устраните последствия а причина останется неизвестной.

Проверьте также осцилографом цепь питания на предмет выбросов и провалов.

 

 

ps

- постарайтесь найти режим когда сбой-глюк устойчив. Другим методом, а не "кварцевым"

- сделайте "тест-проект", который будет отличаться от основного только тем, что на свободный

пин будет P1OUT ^= 0x01. Его мониторить осцилографом.

 

Нахрена все это ?

Возможно, в девайсе зависает LCD например (что ажбегом возможно если I2C и топорный софт-драйвер).

 

Эти все этапы я уже проделал.

 

Собрали установку генерации ЭМИ (из латора и прерывателя), с помощью которого и нашли слабое место нашего изделия (кварц), путем последовательного экранирования частей платы. Просто потом я нашел более простой путь - непосредственного воздействия металическим предметом на ножки кварца.

 

Еще раз повторю, меня сильно смущает что сбивая тактовый генератор (пусть варварскими методами), можно запустить произвольный кусок кода прошивки. Раньше на MSP я с таким не сталкивался. С зависанием худо-бедно справится внешний watchdog, а вот с исполнением произвольного куска кода...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тыча, я имитировал помеху. Результат был очень похожий.

Меня смущает другое, возможность (и даже легкость), с которой можно MSP заставить выполнять произвольный кусок кода в прошивке. Обработка прерывания от сбоев генератора мне не помогла.

Этим Вы не помеху симитировали. В нормально разведённом устройстве помеха не должна туда попадать.

Имхо - таким образом можно почти любой МК "заставить выполнять произвольный кусок кода в прошивке". Так как сбиваете тактирование, следовательно портится например выбираемый в данный момент код на произвольный.

С таким-же успехом можете замкнуть любые произвольные ноги МК и удивиться: "что-ж это он неправильно стал работать-то?"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... тыкая какой-нибудь железкой в ножки кварца на раз получаем такое зависание, а иногда (довольно часто) пыполнения кода программы, отвественного за стирания внутреннего программного Flash с понятным результатом. MCLK от кварца. Если MCLK сделать от DCO проблема исчезает.

Кто-нибудь сталкивался таким? Как решили?

Было 1-в-1 как у вас, включая самопроизвольное стирание флэш.

Перешел на тактирование от dco с периодической подстройкой по кварцу. По другому не лечится: в msp кварцевый генератор малопотребляющий, амплитуда на кварце мизерная он сбивается от малейшего чиха. Сам процессор однотактный а они капризны в отношении тактирования. Так что на экранирование и переразводку можете даже не тратить время - не поможет.

При работе от dco msp очень устойчив.

 

Этим Вы не помеху симитировали. В нормально разведённом устройстве помеха не должна туда попадать.

Имхо - таким образом можно почти любой МК "заставить выполнять произвольный кусок кода в прошивке". Так как сбиваете тактирование, следовательно портится например выбираемый в данный момент код на произвольный.

Помеха всегда попадает потому что идеальной защиты от помех не бывает. Вопрос в степени ослаблении помехи и чувствительности входов МК.

Попробуйте сбить старый 4-х тактовый pic16 или классический 12-тактовый mcs-51 (cmos версию). Они "тыкание" в кварц вообще не замечают. Если кварц закоротить останавливаются, раскоротишь продолжают работать с того же места.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ммм... про отладчик поподробнее. У меня 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 ни чем не поможет?

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эти все этапы я уже проделал.

. . . .

Еще раз повторю, меня сильно смущает что сбивая тактовый генератор (пусть варварскими методами), можно запустить произвольный кусок кода прошивки. Раньше на MSP я с таким не сталкивался. С зависанием худо-бедно справится внешний watchdog, а вот с исполнением произвольного куска кода...

 

Чтобы я делал, IMHO

- если есть возможность - задать внешнее "неубиваемо-гарантированое" тактирование и проверить гипотенузу что вылет из-за слета тактирования

(или помехи на тактовый вход)

- для ВЧ тактирования должен отрабатывать флаг неисправности генератора.

и даже если тактирование вообще нет - процессор должен переключаться на VLO (по F22XX семейству точно не знаю)

- проверить тип кварца, его "глючность" (контафакт), обвеску-емкости / настройку генератора.

Рекомендации по типовой схеме включения из даташита на кварц.

Мне попадались глючные 32768.

- проверить как девайс реагирует на ВЧ импульсную помеху

(смс на рядом лежащий мобильник). Эсли слетатет - экранировать - фильтровать.

итд в томже стиле :)

 

 

 

... Странно, почему вам не удаётся обслужить OFIFG. ...

Демонов изгонять выкуривая

slaz167j.pdf, искать литерал "OFIFG"

:)

 

Изменено пользователем k155la3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто-нибудь сталкивался таким? Как решили?

 

Да, бывают такие случаи.

 

Тогда надо сделать так чтобы микроконтроллер не становился антенным противовесом.

Т.е. надо создать искусственный противовес рядом с кварцем, это может быть USB кабель, оплетка какого-нибудь экранированного интерфейсного кабеля, например CAN или плейн большой площади.

 

Тогда можете тыкать отверткой прямо в ноги кварца и ничего не произойдёт.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помеха всегда попадает потому что идеальной защиты от помех не бывает. Вопрос в степени ослаблении помехи и чувствительности входов МК.

Попробуйте сбить старый 4-х тактовый pic16 или классический 12-тактовый mcs-51 (cmos версию). Они "тыкание" в кварц вообще не замечают. Если кварц закоротить останавливаются, раскоротишь продолжают работать с того же места.

Когда-то давно нам в Элтех клиент прислал результаты опытов. Он пьезо-поджигалкой для газа тестировал разные стартовые наборы микроконтроллеров.

так вот, меги сбивались, а НЕКовские - нет. Поищите статью, автор Горюнов...

А вывод такой. Все микроконтроллеры сделаны для разного применения. Если Вы хотите применить в "промышленности" микроконтроллер, сделанный для "бытовухи", то имеете то, что имеете. Выбирайте микроконтроллер сделанный для "автопрома". Там уровень помех значительно выше и МК сразу делали менее к ним чувствительными...

 

А "сегодня" - экраны, развязки земель по входу и по выходу, фильтрация питания...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

(Obam @ Jun 27 2016, 10:19) *

Демонов изгонять выкуривая

slaz167j.pdf, искать литерал "OFIFG"

sm.gif

 

Эт когда это я такое писал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...