Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: msp430f5438 перезапускается
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
GlueBF
Добрый день, участники форума. Столкнусля с такой проблемой при разработке устройства. Устройство служит для измерения тока и напряжения нагрузки. Нагрузка - обогреватель 1 кВт, питается от сети 220В.
При включении нагрузки (щелчок тумблера обогревателя) может произойти перезагрузка МК (с вероятностью 5-10 случаев из 100), а также просто "зависание" МК (с вероятностью 1-2 случая из 100).
Никак не могу понять в чем причина. Вообще аппаратная ли это проблема или программная.
МК стоит в плате MSP-TS430PZ5x100.
Если нужны еще какие-то подробности - опишу.
jorikdima
тумблер дает помеху. Либо тактирование срывается, а у вас нету соответствующего обработчика прерывания. Либо по питанию проблемы: кратковременная просадка, помеха...
Pavel V.
Как настроено тактирование? Как организовано питание платы и управление нагрузкой?
GlueBF
Кусок кода с настройкой модуля тактирования:
CODE
// ***** Настройка модуля тактирования *****************************************
P5SEL|=BIT2+ // Задействовать P5.2 для XT2IN
BIT3; // Задействовать P5.3 для XT2OUT
UCSCTL6&=~XT2OFF; // Включить XT2
UCSCTL3|=SELREF_2; // Источник FLLref - REFO
UCSCTL4|=SELA_2; // Источник ACLK - REFO
do{ // Дождаться стабилизации XT2 и DCO
UCSCTL7&=~(XT2OFFG+ // Сбросить флаг неисправности XT2
XT1LFOFFG+ // Сбросить флаг неисправности XT1 (НЧ)
XT1HFOFFG+ // Сбросить флаг неисправности XT1 (ВЧ)
DCOFFG); // Сбросить флаг неисправности DCO
SFRIFG1&=~OFIFG; // Сбросить флаг неисправности осцилл.
} //
while (SFRIFG1&OFIFG); // Проверить флаг неисправности осцилл.
UCSCTL6&=~XT2DRIVE_2; // Частота XT2 16-24 МГц
UCSCTL4|=SELS_5+ // Источник SMCLK - XT2
SELM_5; // Источник MCLK - XT2
UCSCTL5|=DIVS_4; // SMCLK=XT2/16


Питание: 220В -> импульсный БП 25В -> DC/DC 3В.
Нагрузкой управляю руками, т.е. вручную включаю тумблер на обогревателе.

Цитата(jorikdima @ Oct 18 2010, 12:37) *
тумблер дает помеху. Либо тактирование срывается, а у вас нету соответствующего обработчика прерывания. Либо по питанию проблемы: кратковременная просадка, помеха...


Т.е. тактирование может срываться во время прихода помехи? Повторюсь, что зависание/перезагрузка происходят только в моменты включения/выключения нагрузки. Все остальное время МК работает стабильно.
Как корректно обработать прерывание при срыве тактирования?
KARLSON
По Питанию микросхемы повесьте электролит/тантал 220 мкф и паралельно ему керамику микрофарад 10. А как у Вас цепь RESET сделана?
GlueBF
Цитата(KARLSON @ Oct 18 2010, 13:32) *
По Питанию микросхемы повесьте электролит/тантал 220 мкф и паралельно ему керамику микрофарад 10. А как у Вас цепь RESET сделана?

По питанию конденсаторы есть уже на плате MSP-TS430PZ5x100.
У reset 47кОм на Uпит и 0,1мкФ на Общ.
Pavel V.
Скорее всего помеха пролезает по входным цепям - как реализовано подключение датчиков (напряжение, ток)? Что это за датчики?
Попробуйте добавить в программу обработчик сбоя крарцевого генератора и посмотреть - происходит ли сбой.
GlueBF
Цитата(Pavel V. @ Oct 18 2010, 14:16) *
как реализовано подключение датчиков (напряжение, ток)? Что это за датчики?

Измерение тока: LEM - схема на ОУ - АЦП
Измерение напряжения: Трансформатор - схема на ОУ - АЦП

Цитата(Pavel V. @ Oct 18 2010, 14:16) *
Попробуйте добавить в программу обработчик сбоя крарцевого генератора и посмотреть - происходит ли сбой.

Как корректно обработать данное прерывание?
jorikdima
Цитата(GlueBF @ Oct 18 2010, 14:34) *
Как корректно обработать данное прерывание?

как обрабатывать это 2 вопрос. для начала надо понять так это или нет. Просто обрабатывайте прерывания NMI_VECTOR и USR_VECTOR Могу ошибаться с написанием, но в доке на соответствующие модули гляньте секцию interrupts. Определите попадаете в эти обработчики или нет.
Можно осциллографом прислониться кстати к цепи питания, ресета, тактирования.
KARLSON
То что по питанию стоят ёмкости это я знаю. Я предложил увеличить их номинал не менее моего.
rezident
Цитата(GlueBF @ Oct 18 2010, 12:16) *
Вообще аппаратная ли это проблема или программная.
С вероятностью более 90% - аппаратная. Неправильно подключены входные и выходные цепи с точки зрения протекания и распределения токов в питании и в общем проводе. Вообще эта плата (MSP-TS430PZ5x100) предназначена для изучения кристалла и отладки, а не для использования в конечном устройстве, тем более с сетевой нагрузкой, создающей значительные помехи. Плюс наверняка в схеме подключения не предусмотрено никакой защиты от микросекундных помех.
GlueBF
Цитата(jorikdima @ Oct 18 2010, 16:11) *
Просто обрабатывайте прерывания NMI_VECTOR и USR_VECTOR ... Определите попадаете в эти обработчики или нет.


+

Цитата(KARLSON @ Oct 18 2010, 17:54) *
Я предложил увеличить их номинал не менее моего.


Спасибо, попробую.

Цитата(rezident @ Oct 18 2010, 21:13) *
Вообще эта плата (MSP-TS430PZ5x100) предназначена для изучения кристалла и отладки, а не для использования в конечном устройстве, тем более с сетевой нагрузкой, создающей значительные помехи.

В конечном устройстве и не предполагается использовать MSP-TS430PZ5x100, идет отработка, так сказать, макета.
_3m
Цитата(GlueBF @ Oct 18 2010, 13:15) *
Кусок кода с настройкой модуля тактирования:
...
Питание: 220В -> импульсный БП 25В -> DC/DC 3В.
Нагрузкой управляю руками, т.е. вручную включаю тумблер на обогревателе.

Т.е. тактирование может срываться во время прихода помехи? Повторюсь, что зависание/перезагрузка происходят только в моменты включения/выключения нагрузки. Все остальное время МК работает стабильно.
Как корректно обработать прерывание при срыве тактирования?

Как я понял у вас кварц внешний. С внешним кварцем msp даже при микроскопических при помехах жить не будет!
Там боролись за микропотребление и понизили амплитуду генерации до такой степени что генератор ловит каждый чих.
Переходите на DCO (если он есть в вашем камне). При работе от внутреннего генератора никаких проблем с помехами не будет.

GlueBF
Да, кварц внешний.
Цитата(_3m @ Oct 19 2010, 14:58) *
Переходите на DCO (если он есть в вашем камне). При работе от внутреннего генератора никаких проблем с помехами не будет.

Спасибо за совет, сейчас начал копать в эту сторону.
ih_
Цитата(GlueBF @ Oct 20 2010, 09:22) *
Да, кварц внешний.
Попробуйте резонатор заменить на генератор.
rezident
Цитата(ih_ @ Oct 20 2010, 13:04) *
Попробуйте резонатор заменить на генератор.
Не нужно ему менять на генератор. Нужно плату для конечного устройства сделать нормальную, оттрасировав ее в соответствии с требованиями по помехоустойчивости.
KARLSON
Конденсаторы по питанию не помогли?
По мне так проблема чисто аппаратная. Вы можете представить на суд схему? Если есть осциллограф посмотрите цепи питания и ресет при включении нагрузки. Развёртку поставьте в ждущем режиме.
GlueBF
Цитата(KARLSON @ Oct 20 2010, 19:06) *
Конденсаторы по питанию не помогли?


Нет, к сожалению.

Цитата(KARLSON @ Oct 20 2010, 19:06) *
Если есть осциллограф посмотрите цепи питания и ресет при включении нагрузки. Развёртку поставьте в ждущем режиме.


Попробую. Как зарегистрирую - приведу здесь осциллограммы.
GlueBF
Объясните, пожалуйста поведение MSP430 при "появлении неисправности осциллятора".
OFIE - по умолчанию отключен. Произошла неисправность осциллятора, что дальше? Почему и по какому пути произойдет перезапуск МК?


Даже если обработать прерывание, например так:

...

SFRIE1 = OFIE; // Enable osc fault interrupt

...

#pragma vector=UNMI_VECTOR
__interrupt void UNMI_ISR(void) {
do {
UCSCTL7 &= ~(XT1LFOFFG + DCOFFG); // Clear XT1 & DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear OSC Fault flag
}while ( (SFRIFG1 & OFIFG) );
};


К чему это приведет?
rezident
Цитата(GlueBF @ Oct 22 2010, 12:13) *
Объясните, пожалуйста поведение MSP430 при "появлении неисправности осциллятора".
OFIE - по умолчанию отключен. Произошла неисправность осциллятора, что дальше? Почему и по какому пути произойдет перезапуск МК?
Какой-такой перезапуск? 07.gif Вы вообще раздел 4.2.12 UCS Module Fail-Safe Operation в User's Manual читали? Никакого перезапуска не будет. Произойдет автоматическое переключение MCLK на тактирование от DCO и ... МК продолжит выполнение программы, тактируясь от DCO. Задача программиста "отловить" эту ситуацию, используя предоставленные ему аппаратные возможности, и после восстановления работоспособности генератора (пропадания ошибки) переключить тактирование обратно, на генератор, который вызвал сбой тактирования (если оно нужно, конечно). Чтобы этого избежать, я обычно советую использовать именно внутренний DCO для тактирования MCLK. А периферию, требующую более стабильного источника тактирования, можно подключить к внешним генераторам, настроив ACLK и SMCLK на тактирование от них (от генераторов XT1 или XT2).
Цитата(GlueBF @ Oct 22 2010, 12:13) *
Даже если обработать прерывание, например так:
...
К чему это приведет?
Ни к чему полезному это не приведет. Вначале желательно переключить тактирование на исправные генераторы или на DCO. Дождаться пропадания ошибки генератора, опрашивая в цикле соответствующие флаги. После устранения ошибки вновь настроить источники MCLK, SMCLK и ACLK на тактирование от внешних генераторов, которые сбойнули.
remote_job
Цитата(GlueBF @ Oct 22 2010, 10:13) *
OFIE - по умолчанию отключен. Произошла неисправность осциллятора, что дальше? Почему и по какому пути произойдет перезапуск МК?

Перезапуска не будет. Флаги сбоя тактирования не инициируют перезапуск, а просто информируют о событии. Что делать? Это Ваша проблема smile.gif можете перезапускать, можете пытаться возобновить тактирование.
GlueBF
Ну я все про свой случай.
Конкретно у меня может произойти перезапуск МК. Если считать это программной ошибкой, то по какому пути происходит этот перезапуск?
Dog Pawlowa
Цитата(GlueBF @ Oct 25 2010, 10:02) *
Ну я все про свой случай...

Послушайте.
У Вас аппаратная проблема, связанная с влиянием помех на плату и микроконтроллер.
Микроконтроллер сбоит, поскольку из-за помех неправильно декодирует команду или срабатывает BOD. В результате он или вылетает на начало, или попадает в вечный цикл.
Программными средствами можно снизить влияние помех, но для этого нужно иметь достаточно опыта и разбираться в происходящих процессах.
Чем раньше Вы займетесь помехоустойчивостью, тем быстрее получите результат.
Не откладывайте же.
Вот здесь самая лучшая статья на эту тему.
http://eewiki.ru/wiki/%D0%9F%D0%BE%D0%BC%D...%82%D0%B2%D0%B0
GlueBF
Цитата(Dog Pawlowa @ Oct 25 2010, 11:31) *
У Вас аппаратная проблема, связанная с влиянием помех на плату и микроконтроллер.

Это я уже понял.
Цитата(Dog Pawlowa @ Oct 25 2010, 11:31) *
Вот здесь самая лучшая статья на эту тему.

Спасибо за ссылку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.