|
MSP430F169D зависает когда работает от XT2, UART работает ~ 1 час, потом процессор зависает.... |
|
|
|
Jan 29 2008, 14:46
|

Частый гость
 
Группа: Свой
Сообщений: 97
Регистрация: 26-05-05
Из: Киев, Украина
Пользователь №: 5 426

|
Цитата(cornflyer @ Jan 29 2008, 16:10)  Плата разведена так: XIN - Vcc, XOUT - болтается в воздухе.... Работаю от DCO. XIN, XOUT, XT2IN, XT2OUT висят в воздухе. Не виснет никогда. Интересно, а перестанет ли виснуть если XIN отрезать от Vcc ?
--------------------
Смотреть в себя, зреть муки свои, зная, что сам ты виновник мук - вот истинное страдание. Отладка / Софокл, "Аякс".
|
|
|
|
|
Jan 29 2008, 15:08
|

Частый гость
 
Группа: Свой
Сообщений: 166
Регистрация: 11-07-06
Из: Dubna
Пользователь №: 18 729

|
Цитата(Kaplinsky @ Jan 29 2008, 17:46)  Работаю от DCO. XIN, XOUT, XT2IN, XT2OUT висят в воздухе. Не виснет никогда. Интересно, а перестанет ли виснуть если XIN отрезать от Vcc ? В мануале на семейство MSP430x1xx Family User's Guide (Rev. F).pdf написано, как надо делать: 2.5 Connection of Unused Pins The correct termination of all unused pins is listed in Table 2−2. Table 2−2.Connection of Unused Pins Pin Potential Comment AVCC DVCC AVSS DVSS VREF+ Open VeREF+ DVSS VREF−/VeREF− DVSS XIN DVCC XOUT Open XT2IN DVSS 13x, 14x, 15x and 16x devices XT2OUT Open 13x, 14x, 15x and 16x devices т.е. XIN вешать надо на питание, а XOUT - оставить в воздухе...
|
|
|
|
|
Jan 29 2008, 20:31
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Если нет необходимости иметь кварцованный MCLK и частоты тактирования ядра порядка 5,5МГц хватает для работы программных алгоритмов, то источником MCLK нужно назначать DCO. Помехоустойчивость MSP430 при этом значительно увеличивается! Подключение неиспользованного входа Цитата XIN DVCC появилось в MSP430x1xx Family User's Guide rev.D. До этого во всех ревизиях было Цитата XIN DVss специально просмотрел все User's Guide rev. A, B, C, D, E, F. Кстати, в вашей программе нет обработки ошибки кварцевого генератора, которую нужно делать в прерывании NMI. Там по сути та же самая процедура, что у вас в clock_Init описана. Только перед выходом из прерывания нужно разрешать прерывание ошибки осциллятора установкой OFIE в регистре IE1, т.к. при входе в обработчик оно автоматически сбрасывается. Или можно вообще оставить процедуру инициализации только в преывании NMI, что я обычно и делаю. Пример ниже Код // Инициализация источников тактирования ACLK, MCLK, SMCLK #pragma vector=NMI_VECTOR #pragma type_attribute=__interrupt void osc_fault(void) { BCSCTL2=SELM_0|DIVM_0|DIVS_0; //перейдем на такт. DCO BCSCTL1=DIVA_3|RSEL2|RSEL1|RSEL0; //ACLK=XT1/1=32768Гц DCOCTL=DCO0|DCO1|DCO2; //DCO около 5МГц do { IFG1&=~OFIFG; } while ((IFG1&OFIFG)!=0); //Ожидаем стабилиз. колебаний //кварца XT1 BCSCTL2=SELM_2|DIVM_0|SELS|DIVS_0; //MCLK=XT2/1=7327,8кГц, //SMCLK=XT2/1=7327,8кГц IE1|=OFIE; //разр. прерывания от детектора } а в main-е пишем попросту Код #pragma type_attribute=__task void main(void) { WDTCTL=WDTPW+WDTHOLD; IFG1|=OFIFG; //Принудительно установим флаг ошибки осциллятора IE1=OFIE; //Разрешим прерывание для вызова процедуры инициализации источников тактирования ... }
|
|
|
|
|
Feb 1 2008, 06:51
|

Частый гость
 
Группа: Свой
Сообщений: 166
Регистрация: 11-07-06
Из: Dubna
Пользователь №: 18 729

|
Цитата(Dog Pawlowa @ Jan 31 2008, 17:24)  Ein frage. В момент зависания JTAG подключен? Зависает как с JTAG'ом так и без него. Когда я использовал JTAG debugger - в момент зависания появлялась ошибка соединения - типа "нет связи с устройством." И пока не передернешь питание - устройство не видно на шине.
|
|
|
|
|
Feb 1 2008, 08:44
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(cornflyer @ Feb 1 2008, 10:51)  Зависает как с JTAG'ом так и без него. Когда я использовал JTAG debugger - в момент зависания появлялась ошибка соединения - типа "нет связи с устройством." И пока не передернешь питание - устройство не видно на шине. Ну тогда дело хуже - плата разведена совсем плохо, хотя не так все просто. Во влияние входов генератора трудно поверить. Проще поверить в то, что brown-out detector не используется, и микроконтроллер виснет из-за помех. Хотя в 169 контроллере TI вроде улучшил работу bod, не стоит забывать, что наличие внешнего супервизора питания официально было названо тексасом как условие стабильной работы младших моделей в условиях помех.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Feb 1 2008, 15:18
|

Частый гость
 
Группа: Свой
Сообщений: 166
Регистрация: 11-07-06
Из: Dubna
Пользователь №: 18 729

|
brown-out detector используется, питание беру с отладочной платы Olimex (припаялся к ней двумя проводками по 5 см). Вообще у меня на плате используюца все входы АЦП, компаратор, оба таймера, почти все ноги - порты ввода - вывода, uart1, даже температуру измеряю... Еще есть I2C.... но встроенный контроллер - клюкавый, написал свой.... так что проц пашет на все 90%
Мне не понятно, почему не срабатывает watch dog ? Когда ту же прошивку загружаю в olimex - работает без сбоев 8 часов... Когда подключаю свою платку с припаянным на XIN/XOUT часовым кварцем - работает без сбоев 8 часов... Но когда я подключаю свою вторую платку, где XIN - Vcc, XOUT - в воздухе, то примерно через час проц зависает намертво... Непонятно каким образом можно понять что происходит.... (??????????!!!!!!) Пока решил остановица на рабочем эмпирическом варианте - часовом кварце на ногах XIN/XOUT. Но тут у меня народ ходит и высказывает что-то типа "откуда ты знаешь что у тя все заработало? может период глюков просто увеличился... " А плата реально разведена хреново... Однослойная топология... качество изготовления - полный ахтунг... (некоторые ноги плохо были запаялись) Эх, не я разводил ее... я бы уж сделал 2 внутр. слоя - Vcc и GND, а на внешних слоях нарисовал бы дорожки... И отдал бы ее делать в Зеленоград. Короче, правильно было выше сказано - если нужна частота не больше 5 MHz - юзать надо часовой кварц и DCO. А меня позвали в самом конце - типа "вот тебе плата - иди программируй!"
|
|
|
|
|
Feb 1 2008, 16:24
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(cornflyer @ Feb 1 2008, 19:18)  Короче, правильно было выше сказано - если нужна частота не больше 5 MHz - юзать надо часовой кварц и DCO. А меня позвали в самом конце - типа "вот тебе плата - иди программируй!" С вершин  своего скромного опыта скажу (по крайней мере базируясь на 133-149 кристаллах), что DCO спасает не всегда ( в случае помех программа сбивается все равно). Разве что у Вас генератор блокируется. Кстати, подобное обсуждение было на сахаре касательно AVR. Вариант выяснения, что именно происходит - подключить внешний генератор, а не кварц.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Feb 4 2008, 18:20
|
Участник

Группа: Свой
Сообщений: 63
Регистрация: 16-06-04
Из: Россия, Уфа
Пользователь №: 31

|
Обработка ошибки OSC_ FAULT в любом случае не помешает. Плюс внешную собаку, если уж такая плата кривая. Год назад выкладывал пример с тактированием, может пригодится http://kurt.embedders.org/wiki/sources:xtalТам же работа с уартом и т.д. Редактируйте, дополняйте.
|
|
|
|
|
Feb 6 2008, 06:56
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(cornflyer @ Feb 5 2008, 18:38)  Внешний watchdog - реально повышает помехоустойчивость системы.... Внутренний как оказалось не спасает ( в первые столкнулся с такой ситуацией.... имею успешный опыт использования 149, 449, но с 169 что-то не так) А что ставили? Дело в том, что реально повышает помехоустойчивость не столько watchdog, сколько супервизор питания, которого в 149 и 449 не было. Watchdog - это уже собирать крошки зависаний, когда сброс от супервизора все-таки не прошел.
--------------------
Уходя, оставьте свет...
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|