Плата разведена так: 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 ;
}
спасибо тебе за внимание!