|
Перезапуск msp430f2131 - поиск решения, Медленное нарастание питание по питанию msp430 и нормальная работа |
|
|
|
Apr 13 2009, 09:55
|
Группа: Новичок
Сообщений: 7
Регистрация: 12-01-09
Пользователь №: 43 242

|
Выявили неприятную особенность работы микроконтроллера msp430f2131. Микронтроллер используется с элементом питания CR2032. После месячной эксплуатации заказчик вернул изделие, т.к. микропроцессор "не шевелился". Как выяснилось из-за плохих контактов элемента питания процессор не смог перезапуститься и не реагировал даже на "железный" reset от внешнего охранного таймера WDT.
После проверки большой партии (на вход питания микроконтроллера подавали медленно нарастающее питание микроконтроллеру от 1.0 В до 3 В) 50% изделий не реагировали на reset. Для нормального старта процессора помогало лишь отключение от питания и резкое нарастание питание на входе DVcc.
В списке ошибок о производителя TI сказано, что для нормальной работы необходимо обеспечить скорость нарастания питания на Dvcc более 10 В/сек.
Была проверена другая партия микроконтроллеров msp430f2272. У этого семейства таже проблема и при медленном нарастании питания уже ничего не помогает привести контроллер в чувства!
Как можно обеспечить стабильный старт Msp430?
|
|
|
|
|
May 3 2009, 20:07
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Проблема при малом времени нарастания напряжения питания встречается в тех кристаллах, где отсутствует BOR. В MSP430F149 его нет. Я как-то специально проводил опыт с плавным нарастанием напряжения у MSP430F1132IPW (у которого BOR имеется) там такого (зависания) не наблюдал. Эксперимент был следующий. Литиевая батарейка CR2032 и впараллель ей переменный резистор 4,7кОм. Питание MSP430F1132IPW брал с движка резистора. Впараллель питанию MSP430 был подключен тантал 4,7мкФ. На входе RESET был просто резистор 62кОм на Vcc. При любом медленном вращении движка резистора MSP430 стартовал нормально. Естественно, что при этом эксперименте я каждый раз разряжал кондер по питанию до нуля. Встроенный BOR вполне нормально защищает кристалл при малой скорости нарастания напряжения. А вот чтобы программа стартовала нормально, на RESET нужно супервизор ставить. Но ни то, ни другое, ни встроенный WDT до кучи никак не защищают от защелкивания при воздействии, например, статического электричества. При защелкивании нужно полностью снимать питание.
|
|
|
|
|
May 5 2009, 04:11
|
Местный
  
Группа: Свой
Сообщений: 265
Регистрация: 30-11-05
Из: Омск
Пользователь №: 11 590

|
Цитата(rezident @ May 4 2009, 03:07)  Но ни то, ни другое, ни встроенный WDT до кучи никак не защищают от защелкивания при воздействии, например, статического электричества. При защелкивании нужно полностью снимать питание. Подождите, зачем в кучу все то. Причем тут триггерное защелкивание. А никто в паралель процу нагрузку не ставил?
|
|
|
|
|
May 5 2009, 04:18
|
Группа: Новичок
Сообщений: 10
Регистрация: 28-10-08
Пользователь №: 41 240

|
Я в одном устройстве на F149 боролся с данной проблеммой в том числе и добавлением нагрузки по питанию - закончилось заменой F149 на F169 у котрого есть BOR
|
|
|
|
|
May 5 2009, 19:41
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(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мкФ на общий. Больше сотни устройств было сделано, но к сожалению заказчик пропал и обратной связи от него не было. Хотя и рекламаций или нареканий тоже не было  Цитата(MrYuran @ May 5 2009, 11:01)  У нас проблема со 149 решилась (вроде бы) установкой супервизоров с правильным порогом (2,9В при 3,3В питании) У нас почти везде при 3,3В питании применяется супервизор TPS3809K33 с порогом в районе 2,93В.
|
|
|
|
|
Jun 3 2009, 09:47
|
Группа: Новичок
Сообщений: 7
Регистрация: 12-01-09
Пользователь №: 43 242

|
"Особенность работы микроконтроллера msp430f2131"
Решили обратиться к представителям TI. Они предложили упростить рабочий проект и отправить им исходный код.
Вот здесь и обнаружилось!
Сразу после аппаратного сброса в программе настраивался тактовый внутренний калиброванный генератор на 8 МГц. Именно этот режим при старте нарушает работу MCU. "Железно" зависают и msp430f2131 и msp430f2372.
По-умолчанию, msp430 включает частоту внутреннего генератора на 1МГц. На этой частоте проблем с запуском при медленном нарастании питания не обнаружилось.
Сейчас переделываем рабочие проекты с целью переключаться на другие частоты уже после нормального старта msp430.
Жду предложений и рекомендаций от российского представительства TI.
|
|
|
|
|
Jun 3 2009, 12:33
|
Группа: Новичок
Сообщений: 7
Регистрация: 12-01-09
Пользователь №: 43 242

|
Цитата(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 }
|
|
|
|
|
Jun 4 2009, 05:37
|
Группа: Новичок
Сообщений: 7
Регистрация: 12-01-09
Пользователь №: 43 242

|
Цитата(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 фиксированный и пороги срабатывания заданы "железные". Всё обязано проходить штатно.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|