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

 
 
> 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
Ответов
aag
сообщение Feb 4 2008, 07:59
Сообщение #2


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

Группа: Свой
Сообщений: 81
Регистрация: 8-04-06
Из: Новосибирск
Пользователь №: 15 939



Добавлю пять копеек. Пробовал запускать UART от DCO и от часового кварца - почему-то иногда в пакете данных возникала ошибка примерно на 1 бит из 20.

XIN может действительно на землю посадить?
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Feb 4 2008, 16:50
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(aag @ Feb 4 2008, 11:59) *
Добавлю пять копеек. Пробовал запускать UART от DCO и от часового кварца - почему-то иногда в пакете данных возникала ошибка примерно на 1 бит из 20.

Неубедительно. DCO очень нестабилен, а от часового кварца больше 1200 не получить.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
NoName
сообщение Feb 6 2008, 16:59
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 4-03-05
Из: Киев
Пользователь №: 3 078



Цитата(Dog Pawlowa @ Feb 4 2008, 18:50) *
UART от DCO .....от часового кварца больше 1200 не получить.


{ U1CTL = 0x10; U1TCTL= 0x50; U1BR1 = 0x00; U1BR0 = 0x03; U1MCTL = 0x4A; } // 9600
больше 9600 на 32 кГц действительно не получить.
Go to the top of the page
 
+Quote Post
cornflyer
сообщение Feb 7 2008, 08:51
Сообщение #5


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

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



У меня как раз 9600 - скорость UART'а )))
Кроме SVS, WatchDOG у меня еще есть синхронизация UART.
Т.е. если какой-либо пакет не пришел вовремя, счетчик приемника сбрасывается по таймауту в ноль.
Для этого у меня работает TIMERA.
Более того, у меня многобайтовые посылки:
адрес утройства, код команды, параметры команды, CRC16
Так что кроме всего прочего у меня есть CRC проверка...
Проверял по всякому - дело было в железе. Повесил на XIN/XOUT часовой кварц - больше проц намертво не виснет. Вообще не виснет. Даже байты не теряюца.
Хотя прошивку оставил без изменений - т.е. ту, когда был только XT2.
Просто припаял на ноги часовой кварц, который у меня не используеца.
И все теперь работает без глюков.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Feb 7 2008, 16:14
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(cornflyer @ Feb 7 2008, 12:51) *
Хотя прошивку оставил без изменений - т.е. ту, когда был только XT2.
Просто припаял на ноги часовой кварц, который у меня не используеца.
И все теперь работает без глюков.

Очень интересная информация. Поверить трудно.
Может, все-таки XT1 используется как-то в прошивке ?
У меня несколько приборов с разными комбинациями генераторов, но действительно наиболее устойчиво работают приборы с синхронизацией от часового кварца. Хотя эти кварцы чаще отказывают.
Но другие приборы работают тоже месяцами не выключаясь.

А по 9600 - похоже, перебдел smile.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
cornflyer
сообщение Feb 8 2008, 09:08
Сообщение #7


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

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



Цитата(Dog Pawlowa @ Feb 7 2008, 19:14) *
Может, все-таки XT1 используется как-то в прошивке ?


void app_Init ( void )
{
WDTCTL = WDTPW + WDTHOLD ; // stop watchdog
IFG1 |= OFIFG ;
IE1 |= OFIE ;
watch_dog_Reset () ;
_DINT () ; // disanable interrupts
/////////////////////////
svs_Init () ;
port_Init () ;
select_HV_U () ; // select data source connected to ADS1100
clock_Init () ;
serial_Init () ;
adc_Init () ;
HV_Init () ;
var_Init () ;
comparator_Init () ;
flash_init () ;
_EINT () ; // enable interrupts
adc_Start () ;
}


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

// 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
}


#pragma vector = NMI_VECTOR
__interrupt void osc_fault (void)
{

BCSCTL1 = 0 ; // &= ~XT2OFF; // XT2 = HF XTAL

do
{ IFG1&=~OFIFG;
} while ((IFG1&OFIFG)!=0); //Îæèäàåì ñòàáèëèç. êîëåáàíèé

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

IE1|=OFIE;
}
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
- - rezident   Если нет необходимости иметь кварцованный MCLK и ч...   Jan 29 2008, 20:31
|- - cornflyer   Спасибо !!! Так и сделаю ! Если д...   Jan 31 2008, 06:47
- - 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
- - 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 Текстовая версия Сейчас: 29th July 2025 - 22:05
Рейтинг@Mail.ru


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