emark 0 24 июня, 2016 Опубликовано 24 июня, 2016 · Жалоба Доброго времени суток! Столкнулся со следующей проблемой. Есть автономное устройство, собранное на msp430f2254. Внешний WatchDog на устройстве отсутствует (сэкономили :)). Питание аккумуляторное. От заказчика стали приходить претензии: зависает (лечится только переключением питания). Экспериментально было определено, что проблема в кварце (12 МГц). Но вопрос не в этом. Во время экспериментов я определил, что тыкая какой-нибудь железкой в ножки кварца на раз получаем такое зависание, а иногда (довольно часто) пыполнения кода программы, отвественного за стирания внутреннего программного Flash с понятным результатом. MCLK от кварца. Если MCLK сделать от DCO проблема исчезает. Кто-нибудь сталкивался таким? Как решили? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mcheb 0 24 июня, 2016 Опубликовано 24 июня, 2016 · Жалоба Как решили? Установкой драйвера руки.сис Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 24 июня, 2016 Опубликовано 24 июня, 2016 (изменено) · Жалоба Доброго времени суток! Столкнулся со следующей проблемой. Есть автономное устройство, собранное на msp430f2254. Внешний WatchDog на устройстве отсутствует (сэкономили :)). Питание аккумуляторное. От заказчика стали приходить претензии: зависает (лечится только переключением питания). Экспериментально было определено, что проблема в кварце (12 МГц). Но вопрос не в этом. Во время экспериментов я определил, что тыкая какой-нибудь железкой в ножки кварца на раз получаем такое зависание, а иногда (довольно часто) пыполнения кода программы, отвественного за стирания внутреннего программного Flash с понятным результатом. MCLK от кварца. Если MCLK сделать от DCO проблема исчезает. Кто-нибудь сталкивался таким? Как решили? Тыкать "…какой-нибудь железкой в ножки кварца…" не надо, он не для этого. Теоретически, если касанием XOUT колебания может и не будут сорваны, то касанием XIN - наверняка. Рекомендации самые простые: дорожки до кварца как можно кроче, нагрузочные ёмкости должны соответствовать параметрам кварца, под кварцем только малосигнальная земля (ни какой сильноточной). Аппаратный контроль за тактированием в MSP430 весьма развитый, отладчиком можно получить всё что нужно. Изменено 24 июня, 2016 пользователем Obam Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
emark 0 24 июня, 2016 Опубликовано 24 июня, 2016 (изменено) · Жалоба Установкой драйвера руки.сис Конкретней... a то у меня libastral не установлена тоже... Изменено 24 июня, 2016 пользователем emark Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 24 июня, 2016 Опубликовано 24 июня, 2016 · Жалоба Тыкать "…какой-нибудь железкой в ножки кварца…" не надо, он не для этого. Теоретически, если касанием XOUT колебания может и не будут сорваны, то касанием XIN - наверняка. Рекомендации самые простые: дорожки до кварца как можно кроче, нагрузочные ёмкости должны соответствовать параметрам кварца, под кварцем только малосигнальная земля (ни какой сильноточной). И уж если переразвести не удается, то можно сделать экраны из фольги и прикрыть ими от помех... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
emark 0 24 июня, 2016 Опубликовано 24 июня, 2016 (изменено) · Жалоба Тыкать "…какой-нибудь железкой в ножки кварца…" не надо, он не для этого. Теоретически, если касанием XOUT колебания может и не будут сорваны, то касанием XIN - наверняка. Рекомендации самые простые: дорожки до кварца как можно кроче, нагрузочные ёмкости должны соответствовать параметрам кварца, под кварцем только малосигнальная земля (ни какой сильноточной). Аппаратный контроль за тактированием в MSP430 весьма развитый, отладчиком можно получить всё что нужно. Тыча, я имитировал помеху. Результат был очень похожий. Меня смущает другое, возможность (и даже легкость), с которой можно MSP заставить выполнять произвольный кусок кода в прошивке. Обработка прерывания от сбоев генератора мне не помогла. Аппаратный контроль за тактированием в MSP430 весьма развитый, отладчиком можно получить всё что нужно. ммм... про отладчик поподробнее. У меня JTAG отладчик сразу виснет, если я подобными издевательствами занимаюсь. И уж если переразвести не удается, то можно сделать экраны из фольги и прикрыть ими от помех... Мы этим и занимаемся (поскольку полностью от кварца отказаться не можем) + перевод MCLK на DCO Изменено 24 июня, 2016 пользователем emark Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 26 июня, 2016 Опубликовано 26 июня, 2016 (изменено) · Жалоба Проверьте, не открыт ли какойнить флаг прерывания, не обеспеченный вектором. Рекомендую на все вектора поставить обработчики-"пустышки". NMI - если есть. Для отлова демона можете в каждую пустышку поставить контрольную точку и помучить девайс. --- Смена режима тактирования. Вы устраните последствия а причина останется неизвестной. Проверьте также осцилографом цепь питания на предмет выбросов и провалов. ps - постарайтесь найти режим когда сбой-глюк устойчив. Другим методом, а не "кварцевым" - сделайте "тест-проект", который будет отличаться от основного только тем, что на свободный пин будет P1OUT ^= 0x01. Его мониторить осцилографом. Нахрена все это ? Возможно, в девайсе зависает LCD например (что ажбегом возможно если I2C и топорный софт-драйвер). Изменено 26 июня, 2016 пользователем k155la3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
emark 0 26 июня, 2016 Опубликовано 26 июня, 2016 · Жалоба Проверьте, не открыт ли какойнить флаг прерывания, не обеспеченный вектором. Рекомендую на все вектора поставить обработчики-"пустышки". NMI - если есть. Для отлова демона можете в каждую пустышку поставить контрольную точку и помучить девайс. --- Смена режима тактирования. Вы устраните последствия а причина останется неизвестной. Проверьте также осцилографом цепь питания на предмет выбросов и провалов. ps - постарайтесь найти режим когда сбой-глюк устойчив. Другим методом, а не "кварцевым" - сделайте "тест-проект", который будет отличаться от основного только тем, что на свободный пин будет P1OUT ^= 0x01. Его мониторить осцилографом. Нахрена все это ? Возможно, в девайсе зависает LCD например (что ажбегом возможно если I2C и топорный софт-драйвер). Эти все этапы я уже проделал. Собрали установку генерации ЭМИ (из латора и прерывателя), с помощью которого и нашли слабое место нашего изделия (кварц), путем последовательного экранирования частей платы. Просто потом я нашел более простой путь - непосредственного воздействия металическим предметом на ножки кварца. Еще раз повторю, меня сильно смущает что сбивая тактовый генератор (пусть варварскими методами), можно запустить произвольный кусок кода прошивки. Раньше на MSP я с таким не сталкивался. С зависанием худо-бедно справится внешний watchdog, а вот с исполнением произвольного куска кода... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 27 июня, 2016 Опубликовано 27 июня, 2016 · Жалоба Тыча, я имитировал помеху. Результат был очень похожий. Меня смущает другое, возможность (и даже легкость), с которой можно MSP заставить выполнять произвольный кусок кода в прошивке. Обработка прерывания от сбоев генератора мне не помогла. Этим Вы не помеху симитировали. В нормально разведённом устройстве помеха не должна туда попадать. Имхо - таким образом можно почти любой МК "заставить выполнять произвольный кусок кода в прошивке". Так как сбиваете тактирование, следовательно портится например выбираемый в данный момент код на произвольный. С таким-же успехом можете замкнуть любые произвольные ноги МК и удивиться: "что-ж это он неправильно стал работать-то?" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_3m 9 27 июня, 2016 Опубликовано 27 июня, 2016 · Жалоба ... тыкая какой-нибудь железкой в ножки кварца на раз получаем такое зависание, а иногда (довольно часто) пыполнения кода программы, отвественного за стирания внутреннего программного Flash с понятным результатом. MCLK от кварца. Если MCLK сделать от DCO проблема исчезает. Кто-нибудь сталкивался таким? Как решили? Было 1-в-1 как у вас, включая самопроизвольное стирание флэш. Перешел на тактирование от dco с периодической подстройкой по кварцу. По другому не лечится: в msp кварцевый генератор малопотребляющий, амплитуда на кварце мизерная он сбивается от малейшего чиха. Сам процессор однотактный а они капризны в отношении тактирования. Так что на экранирование и переразводку можете даже не тратить время - не поможет. При работе от dco msp очень устойчив. Этим Вы не помеху симитировали. В нормально разведённом устройстве помеха не должна туда попадать. Имхо - таким образом можно почти любой МК "заставить выполнять произвольный кусок кода в прошивке". Так как сбиваете тактирование, следовательно портится например выбираемый в данный момент код на произвольный. Помеха всегда попадает потому что идеальной защиты от помех не бывает. Вопрос в степени ослаблении помехи и чувствительности входов МК. Попробуйте сбить старый 4-х тактовый pic16 или классический 12-тактовый mcs-51 (cmos версию). Они "тыкание" в кварц вообще не замечают. Если кварц закоротить останавливаются, раскоротишь продолжают работать с того же места. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 27 июня, 2016 Опубликовано 27 июня, 2016 · Жалоба ммм... про отладчик поподробнее. У меня 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 ни чем не поможет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 27 июня, 2016 Опубликовано 27 июня, 2016 (изменено) · Жалоба Эти все этапы я уже проделал. . . . . Еще раз повторю, меня сильно смущает что сбивая тактовый генератор (пусть варварскими методами), можно запустить произвольный кусок кода прошивки. Раньше на MSP я с таким не сталкивался. С зависанием худо-бедно справится внешний watchdog, а вот с исполнением произвольного куска кода... Чтобы я делал, IMHO - если есть возможность - задать внешнее "неубиваемо-гарантированое" тактирование и проверить гипотенузу что вылет из-за слета тактирования (или помехи на тактовый вход) - для ВЧ тактирования должен отрабатывать флаг неисправности генератора. и даже если тактирование вообще нет - процессор должен переключаться на VLO (по F22XX семейству точно не знаю) - проверить тип кварца, его "глючность" (контафакт), обвеску-емкости / настройку генератора. Рекомендации по типовой схеме включения из даташита на кварц. Мне попадались глючные 32768. - проверить как девайс реагирует на ВЧ импульсную помеху (смс на рядом лежащий мобильник). Эсли слетатет - экранировать - фильтровать. итд в томже стиле :) ... Странно, почему вам не удаётся обслужить OFIFG. ... Демонов изгонять выкуривая slaz167j.pdf, искать литерал "OFIFG" :) Изменено 27 июня, 2016 пользователем k155la3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 27 июня, 2016 Опубликовано 27 июня, 2016 · Жалоба Кто-нибудь сталкивался таким? Как решили? Да, бывают такие случаи. Тогда надо сделать так чтобы микроконтроллер не становился антенным противовесом. Т.е. надо создать искусственный противовес рядом с кварцем, это может быть USB кабель, оплетка какого-нибудь экранированного интерфейсного кабеля, например CAN или плейн большой площади. Тогда можете тыкать отверткой прямо в ноги кварца и ничего не произойдёт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 27 июня, 2016 Опубликовано 27 июня, 2016 · Жалоба Помеха всегда попадает потому что идеальной защиты от помех не бывает. Вопрос в степени ослаблении помехи и чувствительности входов МК. Попробуйте сбить старый 4-х тактовый pic16 или классический 12-тактовый mcs-51 (cmos версию). Они "тыкание" в кварц вообще не замечают. Если кварц закоротить останавливаются, раскоротишь продолжают работать с того же места. Когда-то давно нам в Элтех клиент прислал результаты опытов. Он пьезо-поджигалкой для газа тестировал разные стартовые наборы микроконтроллеров. так вот, меги сбивались, а НЕКовские - нет. Поищите статью, автор Горюнов... А вывод такой. Все микроконтроллеры сделаны для разного применения. Если Вы хотите применить в "промышленности" микроконтроллер, сделанный для "бытовухи", то имеете то, что имеете. Выбирайте микроконтроллер сделанный для "автопрома". Там уровень помех значительно выше и МК сразу делали менее к ним чувствительными... А "сегодня" - экраны, развязки земель по входу и по выходу, фильтрация питания... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 27 июня, 2016 Опубликовано 27 июня, 2016 · Жалоба (Obam @ Jun 27 2016, 10:19) * Демонов изгонять выкуривая slaz167j.pdf, искать литерал "OFIFG" sm.gif Эт когда это я такое писал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться