Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Перезапуск msp430f2131 - поиск решения
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
askfind
Выявили неприятную особенность работы микроконтроллера msp430f2131. Микронтроллер используется с элементом питания CR2032. После месячной эксплуатации заказчик вернул изделие, т.к. микропроцессор "не шевелился". Как выяснилось из-за плохих контактов элемента питания процессор не смог перезапуститься и не реагировал даже на "железный" reset от внешнего охранного таймера WDT.

После проверки большой партии (на вход питания микроконтроллера подавали медленно нарастающее питание микроконтроллеру от 1.0 В до 3 В) 50% изделий не реагировали на reset. Для нормального старта процессора помогало лишь отключение от питания и резкое нарастание питание на входе DVcc.

В списке ошибок о производителя TI сказано, что для нормальной работы необходимо обеспечить скорость нарастания питания на Dvcc более 10 В/сек.

Была проверена другая партия микроконтроллеров msp430f2272. У этого семейства таже проблема и при медленном нарастании питания уже ничего не помогает привести контроллер в чувства!

Как можно обеспечить стабильный старт Msp430?
rezident
Цитата(askfind @ Apr 13 2009, 15:55) *
Как можно обеспечить стабильный старт Msp430?
Используйте м/с супервизора питания. Их у TI предостаточно.
Mike
Эта проблема в 430 встречается во всех сериях, приходилось сталкиватся с ней в MSP430F149, установка внешних микросхем "ресета" не помогает, единственное что удалось придумать, было полное "физическое" отключение питания с помощю установленного Пканального полевика, полевик отключал питание всей схемы по внешнему сигналу, затем питание включалось снова. После отключения питания должно пройти некоторое время ( у нас это было около 30 секунд) иначе перезапуск не происходил.
HARMHARM
Да, при работе с F149 встречал такое. На секунду отключали блок питания. Наверное, ёмкость по питанию была много меньше, 30 секунд не потребовалось...
rezident
Проблема при малом времени нарастания напряжения питания встречается в тех кристаллах, где отсутствует BOR. В MSP430F149 его нет. Я как-то специально проводил опыт с плавным нарастанием напряжения у MSP430F1132IPW (у которого BOR имеется) там такого (зависания) не наблюдал. Эксперимент был следующий. Литиевая батарейка CR2032 и впараллель ей переменный резистор 4,7кОм. Питание MSP430F1132IPW брал с движка резистора. Впараллель питанию MSP430 был подключен тантал 4,7мкФ. На входе RESET был просто резистор 62кОм на Vcc. При любом медленном вращении движка резистора MSP430 стартовал нормально. Естественно, что при этом эксперименте я каждый раз разряжал кондер по питанию до нуля. Встроенный BOR вполне нормально защищает кристалл при малой скорости нарастания напряжения. А вот чтобы программа стартовала нормально, на RESET нужно супервизор ставить. Но ни то, ни другое, ни встроенный WDT до кучи никак не защищают от защелкивания при воздействии, например, статического электричества. При защелкивании нужно полностью снимать питание.
wangan
Цитата(rezident @ May 4 2009, 03:07) *
Но ни то, ни другое, ни встроенный WDT до кучи никак не защищают от защелкивания при воздействии, например, статического электричества. При защелкивании нужно полностью снимать питание.

Подождите, зачем в кучу все то. Причем тут триггерное защелкивание. А никто в паралель процу нагрузку не ставил?
den123
Я в одном устройстве на F149 боролся с данной проблеммой в том числе и добавлением нагрузки по питанию - закончилось заменой F149 на F169 у котрого есть BOR
MrYuran
У нас проблема со 149 решилась (вроде бы) установкой супервизоров с правильным порогом (2,9В при 3,3В питании)
По крайней мере при включении питания заводятся нормально.
rezident
Цитата(wangan @ May 5 2009, 10:11) *
Подождите, зачем в кучу все то. Причем тут триггерное защелкивание. А никто в паралель процу нагрузку не ставил?
В одном проекте делал нечто типа супервизора на LDO, от которого питался MSP430F1121A. LDO был типа TPS76333 у которого есть вход ENABLE с триггером Шмитта в районе 1,4В. На вход подключал резисторный делитель, с помощью которого при снижении входного напряжения до уровня 3,5В-3,6В выключал LDO. На выходе LDO ставил резистор порядка 4,7кОм для более быстрого разряда выходного конденсатора (4,7мкФ). На вход RESET MSP430 была подключена цепочка 47кОм||PMLL4148L к VCC и 0,01мкФ на общий. Больше сотни устройств было сделано, но к сожалению заказчик пропал и обратной связи от него не было. Хотя и рекламаций или нареканий тоже не было smile.gif
Цитата(MrYuran @ May 5 2009, 11:01) *
У нас проблема со 149 решилась (вроде бы) установкой супервизоров с правильным порогом (2,9В при 3,3В питании)
У нас почти везде при 3,3В питании применяется супервизор TPS3809K33 с порогом в районе 2,93В.
askfind
"Особенность работы микроконтроллера msp430f2131"

Решили обратиться к представителям TI. Они предложили упростить рабочий проект и отправить им исходный код.

Вот здесь и обнаружилось!

Сразу после аппаратного сброса в программе настраивался тактовый внутренний калиброванный генератор на 8 МГц. Именно этот режим при старте нарушает работу MCU. "Железно" зависают и msp430f2131 и msp430f2372.

По-умолчанию, msp430 включает частоту внутреннего генератора на 1МГц. На этой частоте проблем с запуском при медленном нарастании питания не обнаружилось.

Сейчас переделываем рабочие проекты с целью переключаться на другие частоты уже после нормального старта msp430.

Жду предложений и рекомендаций от российского представительства TI.
rezident
Цитата(askfind @ Jun 3 2009, 15:47) *
Сразу после аппаратного сброса в программе настраивался тактовый внутренний калиброванный генератор на 8 МГц. Именно этот режим при старте нарушает работу MCU. "Железно" зависают и msp430f2131 и msp430f2372.
А можно привести фрагмент программы инициализации системы тактирования при котором МК гарантированно виснет?
askfind
Цитата(rezident @ Jun 3 2009, 16:23) *
А можно привести фрагмент программы инициализации системы тактирования при котором МК гарантированно виснет?


Код
void main(void)
{
  //--------------------------------
  // Инициализация охранного таймера
  //--------------------------------
  WDTCTL = WDTPW + WDTHOLD + WDTNMI + WDTNMIES;               // Stop watchdog timer
  
  IFG1 &= ~NMIIFG;                          // Reclear NMI flag in case bounce  
  IE1 |= NMIIE;                             // Enable NMI

  //-----------------------------------
  // Инициализация тактового генератора
  //-----------------------------------
  
  // Load 8MHz constants
  //DCOCTL  = CALDCO_1MHZ;      
  //BCSCTL1 = CALBC1_1MHZ;
  
  // ####### ERROR #######
  DCOCTL  = CALDCO_8MHZ;      
  BCSCTL1 = CALBC1_8MHZ;
  //######################
  
  // Разрешить внешние прерывания
  P1IE  |= P10_DIN;
  P2IE  |= P20_DIN;  
  
  //----------------------
  // Инициализация таймера
  //----------------------
  CCTL0 = CCIE;                             // CCR0 interrupt enabled
  CCR0 = 50000;
  TACTL = TASSEL_2 + MC_2;                  // SMCLK, contmode

  _BIS_SR(LPM0_bits + GIE);               // Enter LPM0 w/ interrupt
  //__low_power_mode_4();                     // Низкое
}

// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  P2OUT ^= 0x08;                            // Toggle P1.0
  CCR0 += 50000;                            // Add Offset to CCR0
}
rezident
Я сильно извиняюсь, вы в первой строке main устанавливаете функцию пина RST как NMI, в третьей строке main разрешаете прерывание NMI, но при всем при этом у вас отсутствует обработчик прерывания NMI. Не тут ли собака порылась?
Кроме того, при использовании пина RST как входа NMI, нормальный сброс уже работать не будет. А BOR вовсе не гарантирует сброса, если напряжение питания гарантированно не снизилось ниже указанного в даташите. Для гарантированного сброса нужно модуль SVS использовать или внешний супервизор питания. Но про этом (внешний супервизор) пин RST должен выполнять свою основную функцию.
Dog Pawlowa
Цитата(askfind @ Jun 3 2009, 12:47) *
Вот здесь и обнаружилось!

Сразу после аппаратного сброса в программе настраивался тактовый внутренний калиброванный генератор на 8 МГц. Именно этот режим при старте нарушает работу MCU.

А при каком напряжении питания "сразу" заканчивается аппаратный сброс?
askfind
Цитата(rezident @ Jun 3 2009, 17:04) *
при использовании пина RST как входа NMI, нормальный сброс уже работать не будет. А BOR вовсе не гарантирует сброса, если напряжение питания гарантированно не снизилось ниже указанного в даташите. Для гарантированного сброса нужно модуль SVS использовать или внешний супервизор питания. Но про этом (внешний супервизор) пин RST должен выполнять свою основную функцию.


Использование перепрограммирования RST - чётко по даташиту. а) Переключиться лишь после прохождения полного старта и перехода к выполнению программы во flash. б) Прерываний нет и никуда программа не попадает даже если из-за случайного входного импульса. в) Внутренний монитор напряжения автоматически и аппаратно перепрограммирует с NMI на RST (опять же по даташиту).

И, главный аргумент: при 1 МГц проблем нет для теста!

Цитата(Dog Pawlowa @ Jun 3 2009, 17:53) *
А при каком напряжении питания "сразу" заканчивается аппаратный сброс?


BOR для данного семейства msp430 фиксированный и пороги срабатывания заданы "железные". Всё обязано проходить штатно.
Dog Pawlowa
Цитата(askfind @ Jun 4 2009, 08:37) *
BOR для данного семейства msp430 фиксированный и пороги срабатывания заданы "железные". Всё обязано проходить штатно.

Что ж ...
На 133-149 в нескольких проектах я ускоряю генератор сразу после включения:
BCSCTL1=0x07; // START XT2, DCO faster,
но проблем никогда не было.
rezident
Цитата(askfind @ Jun 4 2009, 11:37) *
Использование перепрограммирования RST - чётко по даташиту. а) Переключиться лишь после прохождения полного старта и перехода к выполнению программы во flash.
Вектора прерываний и вектор RESET в т.ч. и так во Flash находятся.
Цитата(askfind @ Jun 4 2009, 11:37) *
б) Прерываний нет и никуда программа не попадает даже если из-за случайного входного импульса.
Ну-ну smile.gif У вас еще и прерывания от пинов PORT1 и PORT2 разрешаются. А обработчиков прерываний опять же нету. rolleyes.gif Вы бы хоть "заглушки" на эти вектора поставили. Тогда было бы сразу понятно, есть "случайное" прерывание или нет.
Цитата(askfind @ Jun 4 2009, 11:37) *
в) Внутренний монитор напряжения автоматически и аппаратно перепрограммирует с NMI на RST (опять же по даташиту).

Цитата(askfind @ Jun 4 2009, 11:37) *
BOR для данного семейства msp430 фиксированный и пороги срабатывания заданы "железные". Всё обязано проходить штатно.

В MSP430F2131 отсутствует модуль SVS, BOR срабатывает (1.71V max) ниже минимально-допустимого рабочего напряжения (1.8V min), а внешний супервизор у вас как я понял отсутствует. Так что ваша уверенность в гарантированном сбросе не очень-то и обоснована.
Цитата(askfind @ Jun 4 2009, 11:37) *
И, главный аргумент: при 1 МГц проблем нет для теста!

Поставьте "заглушки" на разрешенные в программе вектора прерываний и брейкпоинтами их обвешайте. А потом сообщите (только честно!) нам сюда, срабатывает ловушка или нет?
askfind
Цитата(rezident @ Jun 4 2009, 17:00) *
Поставьте "заглушки" на разрешенные в программе вектора прерываний и брейкпоинтами их обвешайте. А потом сообщите (только честно!) нам сюда, срабатывает ловушка или нет?


Есть такой MSP430F21x1 Device Erratasheet Current Version, где собственно описаны ошибки конкретной модели и как "обойти" их на практике.

Цитата
Detailed Bug Description (continued)
BCL13 BCL13 - Bug description
When subject to very slow VCC rise times, the device may enter into a state where the DCO does
not oscillate. No JTAG access or program execution is possible, and the device remains in a reset
state until the supply voltage is disconnected.
Workaround:
Apply a VCC power-on ramp ≥10 V/second under all power-on/power-cycle scenarios.



При условии очень медленный роста питания VCC раз, устройство может вступить в состояние, в котором DCO не работает.

Обход:
Применить VCC, у которого скорость нарастания ≥ 10 В / с в соответствии со всеми сценариями power-on/power-cycle.

Это проблема производителя TI и вероятность сбоя по причине медленного нарастания питания при DCO=8 МГц равна 100%. для рассмотренного семейства. Более того, части образцов из партии не помогает "железны ресет". Только после резкого включения и выключения питания микроконтроллер нормально сбрасывается.
askfind
"Почему одни микроконтроллеры надежнее других" - ссылка по выбору микроконтроллера с надёжной работой:
http://cxem.net/mc/mc32.php

Цитаты из статьи:

"...
В результате испытаний наши преобразователи были доработаны следующим образом:
1) Вместо кварцевого резонатора установлен кварцевый генератор.
2) Установлен внешний сторожевой таймер, так как в MSP430F148 он работает от того же кварца и так же оказывается неэффективным.
После чего сбои больше не происходили.
Позже наша продукция успешно прошла испытания (для изделий, подлежащих обязательному декларированию соответствия) на ЭМС по:

* ГОСТ Р 51317.4.2.
* ГОСТ Р 51317.4.3.
* ГОСТ Р 51317.4.4.
* ГОСТ Р 51317.4.11.

Для себя я определил минимальные требования для используемого микроконтроллера:
1) Испытания генератором помех.
2) Если используется внутренний сторожевой таймер, то он должен работать сразу после включения микроконтроллера и тактироваться собственным генератором.
3) Документация должна быть «дружественная», с примерами конфигурирования периферии.
4) Наличие доступных отладочных средств (в пределах $200).
5) Если требуется USB, Ethernet, TCP, то должна быть соответствующая готовая библиотека, а лучше RTOS с поддержкой оных».
..."
Rst7
Цитата
"Почему одни микроконтроллеры надежнее других" - ссылка по выбору микроконтроллера с надёжной работой:
http://cxem.net/mc/mc32.php


Ужос. Мне таблица 1 нравится smile.gif Оценочные платы, все дела, и тут - пара камней на макетке
Цитата
ADUC7026BSTZ62
макетная плата, с кварцем

ATMEGA32-16PU
навесной монтаж на ножках микросхемы, с кварцем

biggrin.gif

Методика испытаний - отдельная песня smile.gif

Так и говорите - статья заказана поставщиками NEC'ов smile.gif
Dog Pawlowa
Цитата(askfind @ Jun 5 2009, 13:52) *
... Только после резкого включения и выключения питания микроконтроллер нормально сбрасывается.

Когда мы столкнулись с необходимостью резкого включения COP8, просто поставили какой-то 74HCXX и выход завели на питание контроллера...
askfind
Цитата(Rst7 @ Jun 9 2009, 10:05) *
Методика испытаний - отдельная песня smile.gif
Так и говорите - статья заказана поставщиками NEC'ов smile.gif


Вот и мои коллеги, говорили: "Заказная статья!". А далее, споткнувшись на "всех пеньках и граблях", в момент фактически закрытия проекта, удалось "задним числом" обойти часть проблем.

Отдел качества моего знакомого именно с помощью искры выявляли "зависания" изделий. Уже позднее они смогли в 100% медленным нарастанием питания останавливать микроконтроллере.

Нужно не предвзято читать этот материал и делать выводу. А ещё лучше свои разработки прогнать по тестам...
Rst7
Цитата
Нужно не предвзято читать этот материал и делать выводу.


О какой предвзятости может идти речь? Почитали - посмеялись. Петросян нервно курит в сторонке biggrin.gif

Цитата
А ещё лучше свои разработки прогнать по тестам...


А мои разработки проверяются на ЭМС согласно стандартных методик. Все проходит. Причем, камни не NEC. Что я делаю неправильно?

Цитата
Уже позднее они смогли в 100% медленным нарастанием питания останавливать микроконтроллере.


Слабаки. Надо направленными биополями останавливать biggrin.gif
rezident
Сообщение модератора. Уважаемые! Вы отклонились от темы топика. Если желаете обсудить общие методы проектирования надежных устройств, то заведите отдельный топик в соответствующем разделе форума.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.