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

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

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

 

Если MCLK сделать от DCO проблема исчезает.

 

^)

 

Ещё, чисто программно, аккуратнее с указателями на функции.

MISRA, например, явно запрещает неконстантные указатели не код - видимо, не зря

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


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

Подробнее чем в 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 ни чем не поможет?

 

Ну да, поэтому у нас и 12MГц, а не 16

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


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

Табличка как бы намекала на зависимость от напряжения питания и правильность установки LFXT1Sx.

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


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

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

 

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

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

 

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

 

ммм... видимо немного не ясно написал. я замыкаю ноги кварца, а не поочередно в них тычу.

 

противовес подсоединен к земле рядом с кварцем?

 

а как это сделать в автономном аккумуляторном устройстве?

 

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

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

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

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

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

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

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

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

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

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

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

 

это все уже проделано...

 

Табличка как бы намекала на зависимость от напряжения питания и правильность установки LFXT1Sx.

Специально еще раз проверил. Все правильно.

 

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

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

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

 

 

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

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

 

да... Собрали такое же устройсто на STM-е, показал себя в этом отношении покрепче.

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


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

Опять же п. 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." - на этот пункт эрраты часом нет?

 

А это из какой errat-ы? В SLAZ167 такого нет, да и организация пунктов там другая.

 

По смыслу тоже не понятно. Если биты не меняются, как тогда цпу тактируется? Какими-то окольными путями что ли?

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


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

будет ли вылет или завес, если

---

источник для MCLK <-- DCO

а кварц будет востребован например для таймера или чего другого

TIMER <-- ACLK <-- XT

---

тыкаем по Вашей методк кварц, и ... ?

 

... как тогда цпу тактируется? Какими-то окольными путями что ли?

Мониторили ли через контрольные выходы потров SELS(MCLK) что происходит на линии MCLK при "вылете" ?

Будет видно, на какую частоту-источник уходит тактирование

 

 

 

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


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

А это из какой errat-ы? В SLAZ167 такого нет, да и организация пунктов там другая.

 

По смыслу тоже не понятно. Если биты не меняются, как тогда цпу тактируется? Какими-то окольными путями что ли?

 

Это из User's Guide SLAU144J гл.5 п. 5.2.7, про этот пункт интересовался эрратой.

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


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

будет ли вылет или завес, если

---

источник для MCLK <-- DCO

а кварц будет востребован например для таймера или чего другого

TIMER <-- ACLK <-- XT

---

тыкаем по Вашей методк кварц, и ... ?

 

Так завесить практически не удается (если отрабатывать прерывание по сбою генератора)

 

у меня сейчас сделанотак:

  • MCLK от DCO;
  • ACLK от кварца;
  • частоты DCO и кварца одинаковые;
  • разрешено прерывание по сбою генратора;
  • в прерывании подтверждаю переход на DCO и пытаюсь запустить кварц, если в течении примерно 10 мс не удалось, то сброс.

 

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


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

А попробуйте для эксперимента добавить резистор на 5 МОм между входом генератора и + 3,3v, может сбои уменьшаться?

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


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

А попробуйте для эксперимента добавить резистор на 5 МОм между входом генератора и + 3,3v, может сбои уменьшаться?

 

Можно попробовать.

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


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

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

Ну не очень он устойчив, но зато имеет хорошее свойство - при помехах, если срабатывает супервизор питания, то контроллер пересбрасывается, но содержимое памяти остается неиспорченным. Это позволяет реализовать восстановление текущего состояния программы, и пользователь может даже не заметить, что произошел сброс.

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


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

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

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

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

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

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

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

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

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

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