Цитата(Verifi @ Nov 12 2009, 09:00)

А в чём проблема то огласите
Спасибо за поддержку.
Проблема заключается в том, что присутствует постоянная ошибка при приеме данных пакета(протокол DMX-512).
Согласно стандарту протокола скорость передачи (bit rate = 250 kbit/s), я настроил UART0 на приемник :
Тактирование от внешнего кварцего генератора на 16 Мгц
CODE
void Clock_Init( void )
{
/* Set fMX */
UCHAR temp_stabset, temp_stabwait;
OSTS = CG_OSCSTAB_SEL18;
CMC = CG_HISYS_OSC | CG_SYSOSC_OVER10M | CG_SUB_PORT;
/* 10MHz < fxh <= 20MHz, X1, X2 as crystal/ceramic resonator connection, XT1, XT2 as I/O port */
CSC = CG_HISYS_OPER | CG_SUB_STOP | CG_HIO_STOP;
/* X1 oscillator operating, stop internal high-speed oscillator, stop XT oscillator */
temp_stabset = CG_OSCSTAB_STA18;
do{
temp_stabwait = OSTC;
temp_stabwait &= temp_stabset;
}while(temp_stabwait != temp_stabset);
OSMC = CG_FCLK_OVER10M;
__no_operation();
__no_operation();
__no_operation();
CKC = CG_CPUCLK_MAIN | CG_CPUCLK_SELMAIN | CG_MAINCLK_HISYS | CG_MAINCLK_SELHISYS | CG_CPUCLK_MAIN0 | _bit3_to1;
// High-speed system clock (fMX), fCLK = fMAIN
}
void UART0_Start( void )
{
SRMK0 = 0; /* INTSR0 enable */
SREMK0 = 0; /* INTSRE0 enable */
SS0 |= SAU_CH1_START_TRG_ON; /* UART0 receive enable */
}
void SAU0_Init( void )
{
SAU0EN = 1; /* SAU0 clock supply */
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
SPS0 = SAU_CK00_FCLK_0 | SAU_CK01_FCLK_0; // fclk0 = 16Mhz
UART0_Init( );
}
void UART0_Init( void )
{
/* UART0 initial setting */
ST0 |= SAU_CH1_STOP_TRG_ON; /* UART0 receive disable */
ST0 |= SAU_CH0_STOP_TRG_ON; /* UART0 transmit disable */
SRMK0 = 1; /* INTSR0 disable */
SREMK0 = 1; /* INTSRE0 disable */
STMK0 = 1; /* INTST0 disable */
SRIF0 = 0; /* INTSR0 IF clear */
SREIF0 = 0; /* INTSRE0 IF clear */
STIF0 = 0; /* INTST0 IF clear */
SIR01 = SAU_SIRMN_FECTMN | SAU_SIRMN_PECTMN | SAU_SIRMN_OVCTMN;
SMR01 = SAU_EDGE_FALL | SAU_SMRMN_INITIALVALUE | SAU_CLOCK_SELECT_CK00 | SAU_CLOCK_MODE_CKS | SAU_TRIGGER_RXD | SAU_UART | SAU_TRANSFER_END;
SMR00 = SAU_SMRMN_INITIALVALUE | SAU_CLOCK_SELECT_CK00 | SAU_CLOCK_MODE_CKS | SAU_TRIGGER_SOFTWARE | SAU_UART | SAU_TRANSFER_END;
// receive only
SCR01 = SAU_RECEPTION | SAU_INTSRE_MASK | SAU_PARITY_NONE | SAU_LSB | SAU_STOP_2 | SAU_LENGTH_8;
SDR01 = UART0_RECEIVE_DIVISOR; //// 250 kHz
/* INTSR0 priority low */
SRPR10 = 1;
SRPR00 = 1;
/* INTSRE0 priority low */
SREPR10 = 1;
SREPR00 = 1;
/* INTST0 priority low */
STPR10 = 1;
STPR00 = 1;
/* RXD0 pin setting */
PM1 |= 0x02;
/* TxD0 pin setting */
PM1 &= ~0x04;
P1 |= 0x04;
UART0_Start();
}
В результате происходит постоянный переход по вектору прерывания ошибки приема.
Не могу понять, что не так, необходима Ваша помощь.