реклама на сайте
подробности

 
 
> MSP430F169D зависает когда работает от XT2, UART работает ~ 1 час, потом процессор зависает....
cornflyer
сообщение Jan 29 2008, 14:10
Сообщение #1


Частый гость
**

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



Плата разведена так: XIN - Vcc, XOUT - болтается в воздухе....
XT2IN/XT2OUT - кварцевый резонатор 3.6 МГц
через UART с периодом 1 сек приходят и отправляются пакеты...
примерно через час после включения и успешной работы процессор намертво виснет...
причем не помогает включенный watchdog и svs ...
даже MSPFET не видит его на JTAG шине в момент зависания....
помогает только передергивание питания...

С такой же прошивкой отладочная плата Olimex не виснет.....
Отличие платы Olimex от моей - отсутствие на моей плате на ножках XIN/XOUT часового кварца 32кГц...
Тогда я запаял на свою плату часовой кварц на ноги XIN/XOUT и плата перестала виснуть !!!!!!!!!!!
В чем глюк? Этот проц не работает без LFXT1 (XIN/XOUT) !?
P.S. прошивка везде - одинаковая! См. ниже

// ***** мой конфиг для базового тайминга:

void clock_Init ( void )
{
//asm ( " xor SR, 0x20 " ) ;
_BIS_SR ( 0x20 ) ;

BCSCTL1 = 0 ; // &= ~XT2OFF; // XT2 = HF XTAL
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG)); // OSCFault flag still set?

BCSCTL2 |= BIT7 | // MCLK = XT2CLK when XT2 oscillator present on-chip
BIT4 | BIT5 | // ACLK = MCLK/8
BIT3 ; // SMCLK = XT2

// Timer_A setup
TACTL = 0x00; // stop timer before config
TACCR0 = 0xFFFF ; // 0xFFFF ;
TACCTL0 = BIT4 ; // Timer_A compare interrupt enable
TAR = 0x0000 ;
TACTL = BIT4 | // Up mode: the timer counts up to TACCR0
BIT7 | BIT6 | // CLK/8
BIT9 ; // Timer_A clock source = SMCLK


// Timer_B setup
TBCTL = 0x00; // stop timer before config
TBCCR0 = 0xFFFF ;
TBCCTL0 = BIT4 ; // Timer_B compare interrupt enable
TBR = 0x0000 ;
TBCTL = BIT4 | // Up mode: the timer counts up to TBCCR0
BIT7 | BIT6 | // CLK/8
BIT9 ; // Timer_B clock source = SMCLK
}

// ***** мой конфиг для UART1:

void serial_Init ( void )
{
UCTL1 |= SWRST ; // Set SWRST
UCTL1 = CHAR ;
UTCTL1 = BIT5 ; // SMCLK
UBR01 = 0x80 ; // 3.6864 Mhz / 9600 - 384
UBR11 = 0x01 ;
UMCTL1 = 0x00 ; // no modulation
URCTL1 = URXEIE ; // Receive interrupt enable
ME2 |= UTXE1 + URXE1 ; // Enable USART1 TXD/RXD
P3SEL |= BIT6 | BIT7 ; // P3.6,7 = USART1 TXD/RXD
UCTL1 &= ~SWRST ; // clear SWRST
IE2 |= URXIE1 ; // Enable USART0 RX/TX interrupt

cmd_byte_cnt = 0 ;
RX_time_cnt = 0 ;
}

спасибо тебе за внимание!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Jan 29 2008, 20:31
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 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;                                       //Разрешим прерывание для вызова процедуры инициализации источников тактирования
...
}
Go to the top of the page
 
+Quote Post
cornflyer
сообщение Jan 31 2008, 06:47
Сообщение #3


Частый гость
**

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



Спасибо !!! Так и сделаю !
Если даже осциллятор взглюкнет (может какая-нить ВЧ помеха высаживаеца на ножку проца), то он должен вернуца в норму после обработчика NMI прерывания !!!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- cornflyer   MSP430F169D зависает когда работает от XT2   Jan 29 2008, 14:10
- - Kaplinsky   Цитата(cornflyer @ Jan 29 2008, 16:10) Пл...   Jan 29 2008, 14:46
|- - cornflyer   Цитата(Kaplinsky @ Jan 29 2008, 17:46) Ра...   Jan 29 2008, 15:08
- - Dog Pawlowa   Цитата(cornflyer @ Jan 29 2008, 18:10) да...   Jan 31 2008, 14:24
|- - cornflyer   Цитата(Dog Pawlowa @ Jan 31 2008, 17:24) ...   Feb 1 2008, 06:51
|- - Dog Pawlowa   Цитата(cornflyer @ Feb 1 2008, 10:51) Зав...   Feb 1 2008, 08:44
|- - cornflyer   brown-out detector используется, питание беру с от...   Feb 1 2008, 15:18
|- - Dog Pawlowa   Цитата(cornflyer @ Feb 1 2008, 19:18) Кор...   Feb 1 2008, 16:24
- - aag   Добавлю пять копеек. Пробовал запускать UART от DC...   Feb 4 2008, 07:59
|- - Dog Pawlowa   Цитата(aag @ Feb 4 2008, 11:59) Добавлю п...   Feb 4 2008, 16:50
|- - NoName   Цитата(Dog Pawlowa @ Feb 4 2008, 18:50) U...   Feb 6 2008, 16:59
|- - cornflyer   У меня как раз 9600 - скорость UART'а ))) Кро...   Feb 7 2008, 08:51
|- - Dog Pawlowa   Цитата(cornflyer @ Feb 7 2008, 12:51) Хот...   Feb 7 2008, 16:14
|- - cornflyer   Цитата(Dog Pawlowa @ Feb 7 2008, 19:14) М...   Feb 8 2008, 09:08
- - Kurt   Обработка ошибки OSC_ FAULT в любом случае не поме...   Feb 4 2008, 18:20
|- - cornflyer   Внешний watchdog - реально повышает помехоустойчив...   Feb 5 2008, 14:38
|- - Dog Pawlowa   Цитата(cornflyer @ Feb 5 2008, 18:38) Вне...   Feb 6 2008, 06:56
|- - shasik   Цитата(Dog Pawlowa @ Feb 6 2008, 08:56) Д...   Feb 8 2008, 13:12
|- - rezident   Цитата(shasik @ Feb 8 2008, 18:12) А когд...   Feb 8 2008, 14:00
- - rezident   В моем примере выше не зря первой командой в обраб...   Feb 8 2008, 09:30
|- - Сергей Борщ   Цитата(rezident @ Feb 8 2008, 11:30) Не п...   Feb 8 2008, 11:07
- - aag   Цитатапереходит на тактирование от DCO автоматичес...   Feb 8 2008, 11:29
|- - cornflyer   Цитата(aag @ Feb 8 2008, 14:29) 2 cornfly...   Feb 8 2008, 12:51
- - cornflyer   несмотря на все усилия - svs, watchdog, UART sync,...   Feb 21 2008, 10:42
|- - rezident   Цитата(cornflyer @ Feb 21 2008, 15:42) у ...   Feb 21 2008, 12:04
- - cornflyer   похоже глюк может быть в опциях оптимизации компил...   Feb 21 2008, 12:41
|- - rezident   Цитата(cornflyer @ Feb 21 2008, 17:41) по...   Feb 21 2008, 13:00
- - cornflyer   написал тестовую программу и откомпилировал ее msp...   Feb 28 2008, 09:12
- - cornflyer   проц часок поработал и завис... щас ту же самую пр...   Feb 29 2008, 06:03
- - VAI   http://www.caxapa.ru/faq/emc_immunity.html Там пос...   Feb 29 2008, 06:44
- - cornflyer   спасибо! хорошая статья! Действительно мо...   Feb 29 2008, 07:42
- - cornflyer   итак, наконец-то нашел причину зависания.... напис...   Mar 4 2008, 12:19
|- - AHTOXA   Цитата(cornflyer @ Mar 4 2008, 17:19) и т...   Mar 4 2008, 12:46
- - aag   ЦитатаБляха муха, да резистор от конденсатора даже...   Mar 5 2008, 02:48
- - cornflyer   да, это были очень жёсткие грабли.... самое интере...   Mar 12 2008, 08:06
- - Dog Pawlowa   Цитата(cornflyer @ Mar 12 2008, 12:06) да...   Mar 13 2008, 04:45


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 12:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01436 секунд с 7
ELECTRONIX ©2004-2016