Цитата(ZEbr @ Feb 6 2016, 08:13)

Подскажите пожалуйста!!!! Настраиваю uart по типовому примеру с сайта microchip . запускаю программу первый прием и передача проходят нормально.а вот во время второй посылки зачемто при приеме программа заходит в прерывание по передаче. Флаги очищаю, в прерываний. Прерывания rx и tx различаются по флагами.
Заранее спасибо!!!!
Для полноценного ответа желательно фрагменты кода видеть.
По памяти - прерывание передатчика генерируется при готовности буфера передачи.
При передаче последнего запрещают прерывание передачи, в обработчике UART
(общем для приема и передачи) проверяются флаг прерывания и разрешение прерывания.
Код
void RxControl(void)
{
UINT8 tmp;
if(INTGetEnable(INT_UxRX))
{
if(INTGetFlag(INT_UxRX))
{
while(UxSTAbits.URXDA)
{
tmp = UxRXREG;
/* обработка принятого */
}
INTClearFlag(INT_UxRX);
}
}
}
void TxControl(void)
{
if(INTGetEnable(INT_UxTX))
{
if(INTGetFlag(INT_UxTX))
{
while( !( UxSTAbits.UTXBF ) )
{
UxTXREG = /*источник*/;
if(/*конец посылки*/)
{
mDisableUxTX_INT();
break;
}
}
INTClearFlag(INT_UxTX);
}
}
}
/*-----------------------------------------------------------*/
void vUxInterruptHandler( void )
{
TxControl();
RxControl();
}
Из рабочего кода.